BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Borsa > Pine Script Programlama > Pine Script strateji örnekleri > pine_script_strateji_ma_001

Pine Script stratejileri

Kapanış değeri ve iki hareketli ortalama stratejisi (Temel şablon)

Bu strateji, aşağıda gösterilen ön tanımlı değerler ile kapanış değeri ve iki hareketli ortalama değeri kullanılarak oluşturulmuştur:

  • commission_value=0.04: Komisyon yüzdesi: 0.0004 (Onbinde dört)
  • initial_capital=10000: İlk sermaye: 10000
  • default_qty_type=strategy.cash: Sermaye türü: Peşin
  • default_qty_value=10000: İşlem yapılacak sermaye: 10000

Bu ayarlar, stratejinin "Ayarlar/Özellikler" sekmesinde değiştirilebilir.

Strateji aşağıda belirtilen esaslar dahilinde çalışır:

  • Hareketli ortalama türü seçilebilir (EMA veya SMA)
  • Hareketli ortalama uzunlukları (ön tanımlı değerler 20 ve 50) seçilebilir.
  • Hareketli ortalama çizgilerinin grafiğe çizilip çizilmeyeceği (ön tanımlı olarak çizilmez) seçilebilir.
  • Kısa hareketli ortalama değerinin uzun hareketli ortalama değerini yukarı doğru kesmesi long, aşağı doğru kesmesi ise short koşulun gerçekleşmesini sağlar.
  • Short koşul long işlemden çıkış için kullanılır.

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Niteya
//@version=5
// Bu strateji şablonu sadece eğitim amaçlı olarak verilmiştir. Yatırım kararlarınızda kullanmayınız.
strategy("Niteya Strategy Moving Average", shorttitle='Niteya MA', overlay=true, commission_value=0.04, initial_capital=10000, default_qty_type=strategy.cash, default_qty_value=10000)

ma_type = input.string(title='MA type', defval='EMA', options=['EMA', 'SMA']) // Hareketli ortalama türü seçimi

// Hareketli ortalama uzunlukları seçimi
ma_length1 = input(20, 'MA Length1')
ma_length2 = input(50, 'MA Length2')

is_ma_line = input.bool(defval=false, title="MA Çizgisi") // Hareketli ortalama çizgisinin grafiğe çizilip çizilmeyeceğinin seçimi 

ma_src = close // Hareketli ortalama kaynak değerinin atanması
// Hareketli ortalama değerlerinin alınması
ma_1 = ma_type=='EMA' ? ta.ema(ma_src, ma_length1) : ta.sma(ma_src, ma_length1)
ma_2 = ma_type=='EMA' ? ta.ema(ma_src, ma_length2) : ta.sma(ma_src, ma_length2)

line_width = 2 // Çizgi kalınlığı
// Hareketli ortalama değerlerinin grafiğe çizimi
plot(is_ma_line ? ma_1 : na, title="MA src1", color=color.blue, linewidth=line_width)
plot(is_ma_line ? ma_2 : na, title="MA src2", color=color.orange, linewidth=line_width)

// Long ve Short koşulların hesabı
ma_long =  ta.crossover(ma_1, ma_2) // Kısa hareketli ortalama değeri uzun hareketli ortalama değerini yukarı doğru keserse true, aksi takdirde false
ma_short = ta.crossunder(ma_1, ma_2) // Kısa hareketli ortalama değeri uzun hareketli ortalama değerini aşağı doğru keserse true, aksi takdirde false
    
entry_long = ma_long ? true : false // Long işleme giriş değerinin kontrolü
entry_short =  ma_short ? true : false // Short işleme giriş değerinin kontrolü
             
if entry_long and strategy.opentrades==0 // Long koşul gerçekleşmisse ve açılmış bir işlem yoksa long işlem aç
    strategy.entry('long', strategy.long, comment='BUY')

if strategy.opentrades>0 and entry_short // Short koşul gerçekleşmisse ve açılmış bir işlem varsa long işlemi kapat
    strategy.close('long', comment='SELL')    

Yukarıdaki strateji ile ilgili bir uygulama aşağıdaki grafikte gösterilmektedir: