Pine Script Dersleri [Adım Adım Rehber]

pine script dersleri

Karasoft olarak hazırladığımız bu rehber Pine Script v5 sürümüne göre oluşturulmuştur.

PineScript, popüler bir ticaret platformu olan TradingView’de kullanılan bir programlama dilidir. Bu dille, TradingView kullanıcıları, teknik analiz araçlarını ve stratejilerini oluşturabilir ve test edebilirler.

PineScript, kullanıcıların teknik göstergeler, çizim araçları ve diğer analiz yöntemlerini oluşturmasına olanak tanır. Bu, yatırımcıların piyasaları daha iyi anlamalarına, karar vermelerine ve kâr elde etmelerine yardımcı olur.

PineScript, kolay bir dil olarak tasarlanmıştır ve sıfırdan başlayanlar için bile öğrenmesi kolaydır. Başlamak için, TradingView web sitesinde PineScript Editörü’ne erişmeniz gerekiyor. PineScript Editörü, PineScript kodunuzu yazmanız, test etmeniz ve doğrudan TradingView grafikleri üzerinde çalıştırmanızı sağlar.

PineScript ile yapılabilecek birçok şey vardır, ancak en yaygın kullanımı göstergelerin ve stratejilerin oluşturulmasıdır. Örneğin, üssel hareketli ortalamalar, MACD ve RSI gibi göstergeleri oluşturabilirsiniz. Stratejiler oluşturmak için, fiyat hareketleri ve göstergeler arasındaki ilişkileri takip edebilirsiniz.

PineScript ayrıca, arka plan taraması ve canlı ticaret için kullanılabilen çok çeşitli entegrasyonlar sunar. Örneğin, yatırımcılar, PineScript kullanarak Binance, BitMex ve diğer popüler borsalardaki verileri kullanabilir ve bunlara dayalı stratejiler oluşturabilirler.

Sonuç olarak, PineScript, TradingView kullanıcılarına yatırım kararlarını vermek için ihtiyaç duydukları araçları oluşturma ve test etme imkanı veren güçlü bir dil. Yatırımcılar, PineScript kullanarak kendi stratejilerini oluşturabilir ve otomatik ticaret araçları ile birleştirebilirler. Eğer yatırımcılar, piyasaları daha iyi anlamak ve kararlarını geliştirmek istiyorlarsa, PineScript öğrenmeye değer bir dildir.

Şimdiden keyifli öğrenmeler diliyorum 🙂

Pine Script Nedir ?

PineScript, TradingView tarafından geliştirilen ve ticaret stratejilerinin geri test edilmesi ve özel göstergelerin oluşturulması için kullanılan bir programlama dilidir. PineScript, hafif bir dil olarak tasarlanmıştır ve diğer programlama dillerine göre daha az kod satırı kullanarak hedeflere ulaşmanızı sağlar.

PineScript, herhangi bir özel dile bağlı kalmadan önceki herhangi bir dili kullanarak kod yazmanıza olanak tanır. PineScript kodları, TradingView’in çevrimiçi grafikleme platformunun bir parçası olan Pine Editörü içinde oluşturulabilir.

Neden Pine Script Kullanmalısınız ?

Dahili Veri – Bu önemli bir özelliktir. Diğer dillerde stratejileri test etmek veya göstergeler oluşturmak, kendi verilerinizi kaynaklandırmayı gerektirir.

Bu, verilerinizi nereden alacağınızı bulmanız gerektiği anlamına gelir, ardından belirli bir şekilde biçimlendirmeniz gerekiyor ve bu süreç oldukça zaman alıcı olabilir.

TradingView, sizin için hazır birçok veriye sahip olup, bir satır kodla erişebileceğiniz şekilde hazır bulunuyor.

Kolay Öğrenilebilir – Pine script sözdizimi, diğer programlama dillerine göre daha anlaşılır ve daha basittir.

Ayrıca, hata kontrolü ve yönetimi için fazla zaman harcamanıza gerek yoktur, çünkü TradingView bunun çoğunu sizin için halleder.

Kapsamlı kullanıcı tabanı ve kütüphane – TradingView kullanıcıları, göstergelerini ve stratejilerini TradingView kütüphanesine yayınlama seçeneğine sahiptir.

Açık kaynak koduna erişim, diğer programcılardan öğrenmek için harika bir yoldur. Ayrıca, bazı durumlarda, aradığınız kodu başka biri zaten yazmış olabilir.

Neden Pine Script Kullanmamalısınız ?

Pine script kullanmak istememenizin temel nedeni, sınırlı bir evrende kalmak zorunda olmanızdır. Yani, TradingView’da sunulan veriler dışında bir veri kaynağına ihtiyacınız olduğunda Pine script yetersiz kalabilir. Ayrıca, Pine script, ekonomik veya istatistiksel verilerin yanı sıra alternatif verileri kullanmanızı sınırlandırabilir.

Ayrıca, harici kütüphaneler kullanmak istediğinizde Pine script yine yetersiz kalabilir. Örneğin, makine öğrenmesi gibi gelişmiş stratejiler için Pine script, daha kapsamlı bir programlama dilinden faydalanmanız gerekebilir.

Ancak yine de, TradingView’un hazır veri kaynaklarına sahip olması, Pine script’i öğrenmek isteyenler için kolay ve çekici bir seçenek haline getiriyor. Ayrıca, TradingView kullanıcılarının kütüphanede paylaştığı göstergeler ve stratejiler sayesinde, diğer programcılardan öğrenmek de mümkün.

Pine Script Alternatifleri Nelerdir ?

Pine Script ile benzer özelliklere sahip bir platform TD Ameritrade‘in thinkorswim platformudur. Bu platform da thinkScript adında özel bir dil kullanır ve Pine Script’te olduğu gibi fiyat verilerini dizilerde saklar.

Hazır veriler sunar ve özel göstergeler ve stratejiler oluşturmaya yöneliktir.

Diğer bir alternatif platform ise Ninjatrader‘dır. Bu platform da Ninjascript adı verilen özel bir dili kullanır. Dil tamamen özel değildir, çünkü C# temel alınarak geliştirilmiştir.

Ninjatrader, özel veri kaynaklarına bağlanma olanağı sunar, bu yönüyle daha fazla esneklik sağlar.

Eğer zaten C#, C veya C++ gibi dillere hakimseniz, Pine Script yerine bu platformları tercih edebilirsiniz.

Haydi ! Pine Script ile Yeni Bir Maceraya Başlayalım

Pine script ile başlamak gerçekten çok basit, indirilecek veya yüklenecek hiçbir şey yok.

Eğer zaten bir TradingView hesabınız varsa, sadece TradingView sayfasına gidin.

Hesabınız yoksa, www.tradingview.com adresine gidin. Orada, sağ üst köşedeki oturum açma kutusunu göreceksiniz. Kaydolmak için birkaç seçenek vardır, ya tek tıklamayla kaydolun ya da geleneksel e-posta/şifre yöntemini kullanın.

tradingview-uyeol
tradingview-uyeol

Hesap oluşturmak, Pine script’lerinizi TradingView bulutuna kaydetmenizi ve özel göstergeler eklemenizi sağlar.

Kaydolduktan sonra, grafik platformunu başlatmak için menüdeki grafik seçeneğine tıklayarak veya www.tradingview.com/chart adresine giderek grafik platformuna erişebilirsiniz.

Pine Editöre İlk Bakış

Pine Editor, kodumuzu oluşturacağımız yerdir. Başlatmak için ekranınızın en altında bulunan Pine Editor’a tıklayın.

Aşağıdaki resme benzeyen bir ekran açılmalıdır.

pine-script-editor

Pine script’te, bir gösterge veya bir strateji oluşturacaksınız. Bu farkları bu makalede ayrıntılı olarak ele alacağız.

Eğer takip ediyorsanız, şu anda baktığınız ekran bir gösterge oluşturmak için varsayılan başlangıç betiği.

Şimdi, satır satır gözden geçirelim.

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ 

İlk satır yalnızca bir yorumdur. Pine script’teki yorumlar iki ileri eğik çizgi ile başlar.

// © author

İkinci satır da bir yorumdur ve otomatik olarak TradingView kullanıcı adınızla doldurulur.

//@version=5

Dördüncü satırda, başka bir yorum olduğunu düşünebilirsiniz. Ancak, bu satır biraz farklıdır ve çok önemlidir.

Bu, derleyiciye hangi Pine script sürümünü kullanmak istediğimizi bildiren bir derleyici yönergesidir.

İsterseniz ilk iki yorum satırını atlayabilirsiniz, ancak derleyici yönergesi tüm betiklerde gereklidir.

indicator("My Script")

5.satır bir deklarasyondur. Burada bir gösterge oluşturup oluşturmadığınızı belirtirsiniz.

Alternatif, bir strateji oluşturmaktır, ancak gösterge ile başlayacağız.

5. satırın ikinci kısmı, tırnak işaretleri içinde, bu belirli göstergeye atayacağımız adıdır. Varsayılanı “My Script“tir.

plot(close)

6. satırda, “plot” komutu bulunur. Tahmin edebileceğiniz gibi, bu TradingView’e belirli bir değişkeni çizdirmesini söyler.

Bu durumda, “close” değişkeni çizdirilecektir. Bu, en son çubuğun kapanış fiyatını içeren yerleşik bir değişkendir.

Pine editörünün sağ üst köşesindeki “Add to Chart” veya “Grafiğe Ekle” butonuna tıklayarak, bu göstergeyi bir grafik üzerinde görebilirsiniz.

pinescript kaydet

Kodumuzu yazdıktan Komut adı kısmını isteğimze göre doldurduktan sonra “Kaydet” tuşuna basarak indikatörümüzü kaydediyoruz.

Aşağıdaki tabloda görüldüğü gibi yeni indikatörümüz grafiğin üzerine eklenmiş oldu.

pinescript chart

Kaydettikten sonra, ana grafiğinizden kapanış fiyatlarının bir çizelgesinin bulunduğu yeni bir pencere oluşacaktır.

Bu pencere veri penceresi olarak adlandırılır. Yukarıdaki resimde, bu, gösterge için bir isim belirlediğimiz Kod Satırı 5’te girilen her şeyi çekerken mavi renkte çizilen çizgi grafiğidir.

Veri penceresinin sol üst köşesinde “Benim Betiğim” yazdığını görüyoruz. Bu, gösterge için bir isim belirlediğimiz Kod Satırı 5’e girdiğimiz her şeyi çeker.

İşte ilk göstergemiz ve hatta herhangi bir kod yazmamız gerekmedi!

Bir hissenin fiyatını nasıl alacağız ?

İlk örneğimizde, kapanış fiyatını çizdik. Pine betiği, açık olan herhangi bir grafiğe otomatik olarak yapacaktır.

Bu durumda, Bitcoin’in günlük grafiğini açmıştık.

Ancak başka bir varlık için veri almak isterseniz ne olacak? Şimdi, Apple’ın fiyatını almak için bir örnek üzerinden geçelim, ancak grafiği açık değil.

Her betik, derleyici yönergesini ayarladığımız birkaç satırla başlayacaktır. Ayrıca, oluşturduğumuz şeyin bir gösterge mi yoksa bir strateji mi olduğunu ve bir isim atarız.

//@version=5
indicator("Apple Fiyat")

Bu durumda, bir gösterge oluşturuyoruz. Bu göstergenin adı “Apple fiyatı” dır.

Sonraki adımda, Pine Script’e şu anda grafikte görüntülenen varlıktan farklı bir varlıkla ilgilendiğimizi söylememiz gerekiyor.

Bunu yapmak için, request.security () işlevini kullanabiliriz.

request.security()

Pine script’in güzel bir özelliği, daha önce çalışmadığınız sözdizimiyle çalışıyorsanız yardımın her zaman kolayca mevcut olmasıdır.

Örneğin, işlevimizin üzerine gelirsek, kısa bir açıklama gösterir.

pinescript_request

Daha detaylı bilgi için yardım penceresini başlatabilirsiniz. Bunu yapmak için, bir PC’de ilgili kod etiketinin üzerine gelip CTRL tuşuna basın ve tıklayın. Veya bir Mac’te, işlevi tıklarken CMD tuşuna basın.

pinescript_reference

Help işlevi, sözdizimini açıklar ve hatta faydalı örnekler içerir. Bu, Pine Script’in özellikle yeni kullanıcılar için öğrenmesi kolay bir dil olmasına yardımcı olur.

request.security("AAPL", "D", close)

Yukarıdaki kod parçasındaki örneğe benzer bir sözdizimi kullandık. security fonksiyonundaki ilk değer, AAPL olan hisse senedi simgesidir.

Ardından, zaman dilimini günlük olarak ayarladık. Ve son olarak, Pine Script’e kapanış fiyatıyla ilgilendiğimizi söyledik.

Fonksiyonun dönüşünü bir değişkene kaydedebiliriz.

apple_price = request.security("AAPL", "D", close)

Şimdi apple_price değişkeni, Apple hissesinin en son günlük kapanışını içerecektir.

Pine Script’te oluşturulan çalışmaların en az bir çıktısı olması gerekir, aksi takdirde betik bir derleyici hatası oluşturur.

Bir çıktısı olması gerektiği için değişkenimizi çizdirelim, böylece Pine Script kurallarına uygun hale gelelim.

plot(apple_price)

Kaydettikten ve grafiğe ekledikten sonra, ekranımız aşağıdaki gibi görünecektir.

pinescript_fullkod

Artık Apple’ın günlük kapanış fiyatı, veri penceresinde çizildi, ana pencere ise Bitcoin’in mum grafiğini gösteriyor.

KODUN TAMAMI : (çok anlamamış olabilirsiniz. Buradaki örnek genel görsel mantığı kavramanız açısından anlatılmıştır.)

//@version=5
indicator("price of Apple")

apple_price = request.security("AAPL", "D", close)

plot(apple_price)

Basit Hareketli Ortalama Alma Örneği (SMA) :

Apple’ın hisse fiyatına erişebildiğimize göre, basit hareketli ortalama almanın bir örneğini verelim.

Aynı süreç herhangi bir gösterge uygulamak için kullanılabilir.

Temel deklarasyonlarımıza başlayacağız ve son örneğimizde oluşturduğumuz security fonksiyonunu kullanacağız.

//@version=5
indicator("Apple 20 Günlük SMA")

// Apple hissesinin fiyatını alıyoruz
apple_price = request.security("AAPL", "D", close) // 1 Gün

Eğer özellikle AAPL için 20 SMA almayı düşünmüyorsanız, security tanımını atlayabilirsiniz ve sadece yerleşik close değişkenini kullanabilirsiniz.

Bu, ana grafik pencerenizde gösterilen herhangi bir güvenlik için kapanış fiyatını alacaktır.

SMA göstergesi için Pine script’te yerleşik bir yardımcı fonksiyon bulunmaktadır. Buna erişmek için, sadece ta.sma() fonksiyonunu kullanırız.

ta.sma(apple_price, 20)

İlk olarak geçirmemiz gereken parametre, fiyat değeridir. Bu durumda, apple_price değişkeninde depoladığımız Apple’ın kapanış fiyatını kullanıyoruz.

İkinci parametre SMA’nın uzunluğudur. 20 periyotluk bir SMA arıyoruz.

Son olarak, SMA verilerini ayrı bir değişkene atayacak ve ardından bunu çizeceğiz.

apple_sma = ta.sma(apple_price, 20)

plot(apple_sma)

Artık Apple için basit hareketli ortalama verileri, veri penceresine çizilmiştir.

pinescript_sma

Hareketli ortalamalar genellikle ana grafik üzerine çizilir. Kodumuzu hafif bir değişiklikle ana grafiğe çizebiliriz.

indicator("Apple 20 Günlük SMA", overlay=true)

Göstergenin tanımlamasına overlay=True ekleyerek, veri penceresi yerine doğrudan ana grafik penceresine verilerimizi çizebiliriz.

pinescript_overlaytrue

Kodun Tamamı :

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © karasoft.com.tr

//@version=5
indicator("Apple 20 Günlük SMA", overlay = true)

// Apple hissesinin fiyatını alıyoruz
apple_price = request.security("AAPL", "D", close) // 1 Gün

apple_sma = ta.sma(apple_price, 20)

plot(apple_sma)

Pine Script ile hareketli bir ortalama Cross işlem ile Backtest edelim !

Pine Script’te stratejileri de inceleyelim.

Sonraki örnekte, birkaç ek parametre ile hareketli ortalama çizgisi stratejisi oluşturacağız. Daha sonra stratejiyi TradingView’da backtest edeceğiz. Yani yapmış olduğumuz indikatörün geçmişteki hareketlerde verdiği sinyallerin gerçekten deneysel faydası var mı yok mu, onu test edeceğiz.

//@version=5
strategy("My Strategy", overlay=true)

Bir strateji oluşturmak için, gösterge(indicator) tanımını bir strateji tanımıyla değiştiririz.

// Indikatörleri Oluşturuyoruz
shortSMA = ta.sma(close, 10)
longSMA = ta.sma(close, 30)

Doğru, bir strateji oluşturmak için ilk yapmamız gereken iki hareketli ortalamayı oluşturmak ve verileri değişkenlere atamak olacaktır.

Yukarıdaki örnekte olduğu gibi, 20 dönemlik basit hareketli ortalama (SMA) ve 50 dönemlik SMA oluşturabiliriz. Bu hareketli ortalamaların geçiş noktalarını kullanarak bir ticaret stratejisi oluşturacağız.

rsi = ta.rsi(close, 14)

Ayrıca, giriş ve çıkışlarımızı doğrulamak için kullanacağımız bir RSI göstergesi oluşturacağız.

Bu strateji ana grafikte çalıştırılacağı için burada security() fonksiyonunu kullanmamıza gerek yok.

Daha sonra, çaprazlama koşullarımızı belirtmek istiyoruz. Neyse ki, TradingView bunun için zaten dahili bir fonksiyona sahip, bu nedenle manuel olarak kodlamamıza gerek yok.

longCondition = ta.crossover(shortSMA, longSMA)
shortCondition = ta.crossunder(shortSMA, longSMA)

İki koşulumuz var, birincisi kısa SMA, 10 periyod, uzun 30 periyodlu SMA’nın üzerine çıktığında.

İkinci koşul, çapraz yerine çapraz kullandığımız için tersidir.

Her iki koşul da değişkenlere kaydedilir. Dolayısıyla çaprazlama veya çapraz altında kaldığında, bu değişkenler True olarak güncellenir.

Koşulun True olarak değiştirilip değiştirilmediğini kontrol etmek için bir if ifadesi kullanabilir ve duruma bağlı olarak bir işlem yürütebiliriz.

if (longCondition)
    strategy.entry("long", strategy.long, 100, when = rsi > 50)

“long” – bu bir işlem kimliğidir. Bu örnekte kullanmayacağız. Ancak bir işlemi kapatmak veya iptal etmek isterseniz, bunu bu kimlikle yapabilirsiniz.

strategy.long – bu, Pine Script’e “uzun” olmak istediğimizi söyleyen yerleşik bir değişkendir.

100 – işlem yapmak istediğimiz hisse adedi

when = rsi>50 – bu, Pine script’e yalnızca RSI’nin 50’den yüksek olduğunda işlemi gerçekleştirmesini söyleyen ek bir parametredir.

Kısa girişlerimiz için sözdizimi çok benzer bir formatta olacaktır.

if (shortCondition)
    strategy.entry("short", strategy.short, 100, when = rsi < 50)

Çünkü bir strateji çalıştırıyoruz, herhangi bir şeyi çizmemize veya bir çıktı belirtmemize gerek yoktur.

Ancak yine de öyle yapacağız. İşlemlerin doğru şekilde gerçekleştiğini doğrulayabilmek için SMA’ları grafikte görebilmek güzel olacaktır.

// Hareketli Ortalamaları grafik üzerinde çizdirme

plot(shortSMA)
plot(longSMA, color=color.black)

Eğer kaydeder ve grafiğe eklerseniz, strateji çalışacak ve otomatik olarak strateji test penceresi açılacaktır. Bu pencere, önemli bazı istatistikleri gösterecektir.

Ekranımız aşağıdaki gibi görünecektir.

pinescript_backtest

Varsayılan olarak, strateji için genel istatistikler gösteren yeni bir sekme açılır. Diğer istatistikleri görmek için performans özeti veya işlemler listesi sekmelerine tıklayabilirsiniz.

Strateji, grafikte gösterilen zaman diliminde çalışacaktır. Üst menüdeki zaman dilimi seçeneklerini kullanarak farklı zaman dilimleri arasında kolayca geçiş yapabilirsiniz. Seçilen yeni zaman dilimine göre strateji otomatik olarak güncellenecektir.

Kodun Tamamı :

//@version=5
strategy("My Strategy", overlay=true)

shortSMA = ta.sma(close, 10)
longSMA = ta.sma(close, 30)
rsi = ta.rsi(close, 14)

longCondition = ta.crossover(shortSMA, longSMA)
shortCondition = ta.crossunder(shortSMA, longSMA)

if (longCondition)
    strategy.entry("long", strategy.long, 100, when = rsi > 50)

if (shortCondition)
    strategy.entry("short", strategy.short, 100, when = rsi < 50)

// Hareketli Ortalamaları grafik üzerinde çizdirme
plot(shortSMA)
plot(longSMA, color=color.black)

Take Profit (TP) veya Stop Loss (SL) Nasıl Ayarlanır ?

Belirli stop loss ve take profit seviyeleri belirleyeceğiz. Bunun için Ortalama Gerçek Aralık (ATR) kullanabiliriz.

ATR göstergesi belirtilen son sayıdaki çubukların hareketinin ortalamasını hesaplar. Bu, volatilitedeki değişiklikleri hesaba katmanın iyi bir yoludur.

Zaten birkaç gösterge belirtmiştik, şimdi listeye ATR göstergesini ekleyeceğiz.

shortSMA = ta.sma(close, 10)
longSMA = ta.sma(close, 30)
rsi = ta.rsi(close, 14)
atr = ta.atr(14)

Ticaret koşullarımıza göre, stop loss ve take profit için gerekli hesaplamaları yapabiliriz.

if (longCondition)
    stopLoss = low - atr * 2
    takeProfit = high + atr * 2
    strategy.entry("long", strategy.long, 100, when = rsi > 50)
    strategy.exit("exit", "long", stop=stopLoss, limit=takeProfit)

Yukarıdaki kodda, stop loss seviyesini giriş anındaki çubuğun düşük fiyatını alarak ve ortalama gerçek aralığı ikiyle çarparak hesapladık.

Örneğin, eğer hisse senedi ortalama olarak her bir çubukta $5 hareket ederse, take profit seviyemizi düşük fiyatın $10 altına belirliyoruz.

Benzer bir hesaplama, take profit için de yapılır.

Son olarak, “strategy.exit()” fonksiyonunu kullanarak çıkış koşullarını belirtiyoruz. Aşağıdaki parametreler kullanılmıştır:

“exit” – bu işlemden çıkış yapmak için kullanılan işlem kimliğidir. “long” – daha önce girdiğimiz işlem kimliğidir. Bu Pine betiğine hangi pozisyonu kapatmaya çalıştığımızı belirtir. stop=stopLoss – işlemi kapatmak için kullanılacak stop seviyesi olarak stopLoss değişkenindeki seviyeyi belirtiyoruz. limit=takeProfit – işlemi kapatmak için kullanılacak limit seviyesi olarak takeProfit değişkenindeki seviyeyi belirtiyoruz.

Kısa pozisyon için benzer bir sözdizimi kullanılır, ancak bazı hesaplamalar biraz farklıdır.

if (shortCondition)
    stopLoss = high + atr * 2
    takeProfit = low - atr * 2
    strategy.entry("short", strategy.short, 100, when = rsi < 50)
    strategy.exit("exit", "short", stop=stopLoss, limit=takeProfit)

Kodun geri kalan kısmı önceki örnekte olduğu gibi değişmedi. Hadi kodu çalıştıralım ve stratejimizin performansına bakalım.

pinescript_tp_sl

Çıkışlarımız çalışıyor ve ana grafiğimize uzun ve kısa girişlerimizle birlikte çiziliyorlar.

Kodun Tamamı :

//@version=5
strategy("Take profits & stop losses", overlay=true)

shortSMA = ta.sma(close, 10)
longSMA = ta.sma(close, 30)
rsi = ta.rsi(close, 14)
atr = ta.atr(14)

longCondition = ta.crossover(shortSMA, longSMA)
shortCondition = ta.crossunder(shortSMA, longSMA)

if (longCondition)
    stopLoss = low - atr * 2
    takeProfit = high + atr * 2
    strategy.entry("long", strategy.long, 100, when = rsi > 50)
    strategy.exit("exit", "long", stop=stopLoss, limit=takeProfit)

if (shortCondition)
    stopLoss = high + atr * 2
    takeProfit = low - atr * 2
    strategy.entry("short", strategy.short, 100, when = rsi < 50)
    strategy.exit("exit", "short", stop=stopLoss, limit=takeProfit)


plot(shortSMA)
plot(longSMA, color=color.black)

Google %5’ten daha fazla hareket ederse, Apple üzerinde bir işlem nasıl açılır ? (Strateji Çalışması)

Google %5’ten daha fazla hareket ederse, Apple üzerinde bir işlem açmak için strateji işlevini kullanabiliriz. Bu bir ortalama dönüş stratejisidir, yani Google %5’ten daha fazla yükselirse, Apple’ı kısa satacağız. Google %5’ten daha fazla düşerse, Apple’ı satın alabiliriz.

İlk yapmamız gereken şey, Google’ın günlük açılış ve kapanış fiyatını bir değişkene kaydetmektir.

//@version=5
strategy("Pair Trade: Apple & Google")

google_close = request.security("GOOG", "D", close)
google_open = request.security("GOOG", "D", open)

Ardından, fiyat değişimini yüzde olarak hesaplamak için bir hesaplama yapabiliriz.

price_change = google_close / google_open

price_change değişkeni şimdi hesaplamayı tutar. Örneğin, Google 100 dolardan açıldı ve 105 dolardan kapatmak için %5 yükseldiyse, price_change değişkeni 105/100 yani 1,05 olacaktır.

Ancak Google 100 dolardan açıldı ve %5 düşerek 95 dolara kapandıysa, değişken 95/100 yani 0,95 olacaktır.

Bu nedenle, Google %5 veya daha fazla düştüyse, price_change değişkeni 0,95 veya daha az olacaktır ve Apple’ı almak isteyeceğiz. Bunu yapmak için aşağıdaki sözdizimini kullanabiliriz.

if price_change < 0.95
    strategy.entry("long", strategy.long, 100)

Eğer Google %5’ten fazla yükselirse Apple hissesini açığa satış yapacağız.

if price_change > 1.05
    strategy.entry("short", strategy.short, 100)

Kodda Apple’ın hisse fiyatından bahsetmediğimize dikkat edebilirsiniz. Sadece bir AAPL grafik açmamız yeterli olacak ve otomatik olarak Apple’da işlemleri yürütmeyi bilecektir.

Son olarak, price_change değişkenini veri penceresinde çizeceğiz. Gerekli olmasa da güzel bir gösterge ve işlemlerin doğru şekilde yürütüldüğünü teyit edebiliriz.

plot(price_change)

Ve işlem stratejimizin sonuçları aşağıdaki gibidir:

googlevsapple

Sadece 4 işlem yapıldı çünkü %5’lik hareketler nadirdir. Stratejinin iyi olup olmadığını belirlemek için muhtemelen daha fazla işlem görmemiz gerekiyor.

Ancak, Mart ayındaki o dip seviyesini seçmede iyi bir iş çıkardığını söyleyebiliriz!

Kodun Tamamı :

//@version=5
strategy("Pair Trade: Apple & Google")

google_close = request.security("GOOG", "D", close)
google_open = request.security("GOOG", "D", open)

price_change = google_close / google_open

if price_change < 0.95
    strategy.entry("long", strategy.long, 100)

if price_change > 1.05
    strategy.entry("short", strategy.short, 100)

plot(price_change)

Kod harici indikatörü nasıl düzenleriz ?

Pine script’in harika bir özelliği, stratejilerimiz ve göstergelerimizin parametrelerini kolayca değiştirmemizi sağlayacak özel girdiler oluşturabileceğimizdir.

input_atr

Tradingview’de sunulan standart ATR göstergesine bir göz atın. Uzunluğunu ve hatta renklerini bile Style sekmesinden kolayca değiştirebildiğimize dikkat edin.

Pine script ile oluşturulan çalışmalarda ve stratejilerde de input() fonksiyonunu kullanarak aynı şeyi yapabiliriz.

İşte son strateji örneğindeki yüzde değişikliği özelleştirmek için kullanıcının ayarlamasına izin veren input fonksiyonunun bir örneği.

longTrigger = input(title="% Change for short entries", defval=5)

shortTrigger = input(title="% Change for long entries", defval=5)

input() işlevine geçirilen parametreleri inceleyelim.

title – Bu, kullanıcının belirli bir parametrenin değerini değiştirmeye çalışırken gördüğü metni belirttiğimiz yerdir.

defval – Bu, varsayılan değerdir. Şimdi kullanıcılardan değer alabiliriz. Ancak kullanıcılar, örneğimizdeki son stratejide olduğu gibi bir değer girerken 5(%) gibi bir değer girerler. Bizim if ifadelerimizde kullanmak için bunu 1.05’e dönüştürmemiz gerekiyor.

longTrigger := 1 - longTrigger/100
shortTrigger := 1 + shortTrigger/100

Şimdilik pine script ile alakalı dersimizi burada bitiriyorum. Borsa ve pine script ile alakalı konulara daha çok ağırlık vereceğim.

Zaman ayırıp okuduğunuz için teşekkür ederim.

Kaynaklar : https://www.tradingview.com/pine-script-docs/en/v5/index.html

Click to rate this post!
[Total: 1 Average: 5]

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir