
Strategi ini berdasarkan garisan rata-rata dan garisan bergerak untuk membuka kedudukan dan menggunakan cara penembusan untuk menetapkan hentian. Ciri-cirinya adalah:
Strategi ini terdiri daripada empat bahagian utama:
Menggunakan garisan emas dan garisan mati untuk menilai trend, menapis pasaran yang bergolak.
Menggunakan peratusan pergerakan stop loss untuk mengunci keuntungan dan mengawal risiko, mewujudkan pengurusan dinamik dana.
Boleh dikonfigurasikan untuk membuka penapis kedudukan. Jika kedudukan terdahulu adalah berbilang, isyarat seterusnya mesti kosong untuk membuka kedudukan, untuk mengelakkan memegang kedudukan tunggal.
Gunakan ATR untuk mengehadkan jangkauan maksimum untuk mengelakkan kerugian yang berlebihan.
Khususnya, strategi ini mengira garis rata-rata terlebih dahulu, dan melakukan lebih banyak apabila garis rata-rata melintasi emas, kosong ketika mati. Selepas masuk, atur berhenti bergerak dan garis berhenti dalam perkadaran tertentu. Jika harga menyentuh garis berhenti, berhenti; jika menyentuh garis berhenti atau melebihi julat berhenti ATR, berhenti.
Strategi ini mempunyai kelebihan utama:
Banyak parameter dalam strategi boleh dikonfigurasi, dan pengguna boleh menyesuaikan mengikut gaya dagangan mereka sendiri.
Menggunakan hentian hentian bergerak dan hentian ATR, anda boleh mengawal dengan berkesan amplitudo hentian tunggal dan mencapai pengurusan wang yang sangat baik.
Strategi rata-rata sendiri lebih sesuai untuk pasaran yang lebih cenderung dan boleh menapis gegaran dengan berkesan.
Strategi ini juga mempunyai beberapa risiko, terutamanya:
Garis purata itu sendiri tidak sempurna untuk menilai keadaan yang rumit, dan mungkin berlaku kesalahan dalam penghakiman. Pada masa ini, parameter garis purata harus disesuaikan dengan sewajarnya, atau digabungkan dengan indikator lain untuk menilai.
Hentian bergerak mungkin ditolak dalam gegaran, dan harus digabungkan dengan parameter ATR untuk menetapkan julat hentian.
Membuka penapis kedudukan akan memberi kesan kepada kekerapan perdagangan, dan memegang kedudukan tunggal untuk jangka masa yang panjang mungkin membawa risiko tambahan.
Kaedah utama untuk mengoptimumkan strategi ini ialah:
Menyesuaikan parameter seperti tempoh garis rata-rata, parameter ATR, dan nisbah stop loss untuk mengoptimumkan kesan strategi.
Tambah CMF, OBV dan lain-lain untuk menilai aliran dana dan mengelakkan kerugian yang berlebihan.
Strategi seperti penembusan, dan pengesanan trend selepas ia stabil, boleh memberi kesan yang lebih baik.
Secara keseluruhannya, strategi ini mewujudkan pengurusan dana dinamik berdasarkan trend dengan cara penapisan linear rata dan berhenti berhenti bergerak. Ia boleh dikonfigurasi, sesuai untuk digunakan oleh pelabur yang masuk akal mengikut gaya mereka sendiri. Sebagai strategi kuantitatif umum, ia mempunyai ruang untuk pengoptimuman yang besar dan patut dikaji lebih dalam.
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MGULHANN
//@version=5
//İchimoku Leading Span 2 Hesaplaması ve Girişleri
strategy("Stairs Gain Strategy - MG", overlay=true, margin_long=100, margin_short=100)
laggingSpan2Periods = input.int(52, minval=1, title="Leading Periot")
displacement = input.int(1, minval=1, title="Displacement")
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
leadLine2 = donchian(laggingSpan2Periods)
p2 = plot(leadLine2, offset = displacement - 1, color=#EF9A9A,
title="Leading Span B")
// İşlem Tekrarını Filtrele
filtreUygula = input.bool(true,title="Pozisyon Sıra Filtresi Uygula")
//Kar Al / Zarar Durdur Seviyeleri Girişleri
zararDurdurmaYuzde = input.float(1.0, title='Zarar Durdurma %', step=0.01) / 100
karAlmaYuzde = input.float(2.0, title='Kar Alma %', step=0.01) / 100
//ATR Hesaplaması
atrCarpani = input.float(0.3, title="ATR Çarpanı", step= 0.01)
atrDegeri = ta.atr(14) * atrCarpani
//ATR Değer Girişleri
atrbuyukdeger = input.float(0.01, title="ATR Üst Limit", step=0.01)
atrkucukdeger = input.float(0.06, title="ATR Alt Limit", step=0.01)
//Buy ve Sell Şartları
buycross = ta.crossover(close,leadLine2[displacement-1]) ? atrDegeri > atrbuyukdeger : strategy.position_size == 0
sellcross = ta.crossover(leadLine2[displacement-1],close) ? atrDegeri < atrkucukdeger : strategy.position_size == 0
//KONTROL
var sonPozisyonYonu = 0
//Son kapanan pozisyon long ise degiskenin degerini 1 olarak ata
if strategy.position_size[1] > 0 and strategy.position_size == 0
sonPozisyonYonu := 1
//Son kapanan pozisyon short ise degiskenin degerini -1 olarak ata
if strategy.position_size[1] < 0 and strategy.position_size == 0
sonPozisyonYonu := -1
//eger filtre uygulama seçiliyse ve son pozisyon yönü long ise 'longFiltreSonuc' degiskenine false degeri ata ve bir sonraki pozisyonun long olmasını engelle
longFiltreSonuc = filtreUygula ? sonPozisyonYonu == 1 ? false : true : true
//eger filtre uygulama seçiliyse ve son pozisyon yönü short ise 'shortFiltreSonuc' degiskenine false degeri ata ve bir sonraki pozisyonun short olmasını engelle
shortFiltreSonuc = filtreUygula ? sonPozisyonYonu == -1 ? false : true : true
//LONG GİRİŞ
strategy.entry("Long", strategy.long, when=buycross and longFiltreSonuc)
longKarAl = strategy.position_avg_price * (1 + karAlmaYuzde)
longZararDurdur = strategy.position_avg_price * (1 - zararDurdurmaYuzde)
strategy.exit("Long Exit","Long",limit=longKarAl, stop=longZararDurdur)
//SHORT GİRİŞ
strategy.entry("Short", strategy.short, when=sellcross and shortFiltreSonuc)
shortKarAl = strategy.position_avg_price * (1 - karAlmaYuzde)
shortZararDurdur = strategy.position_avg_price * (1 + zararDurdurmaYuzde)
strategy.exit("Short Exit","Short",limit=shortKarAl, stop=shortZararDurdur)
//Kar Al ve Zarar Durdur Seviyelerinin Grafikte İşaretlenmesi
plot(strategy.position_size != 0 ? strategy.position_avg_price : na, color=color.navy, linewidth=2, style=plot.style_linebr, title="İşleme Giriş Seviyesi")
plot(strategy.position_size > 0 ? longKarAl : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Long Kar Alım Seviyesi")
plot(strategy.position_size > 0 ? longZararDurdur : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Long Zarar Durdurma Seviyesi")
plot(strategy.position_size < 0 ? shortKarAl : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Short Kar Alım Seviyesi")
plot(strategy.position_size < 0 ? shortZararDurdur : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Short Zarar Durdurma Seviyesi")
//plotshape(buycross,size=size.small,style=shape.labelup,location=location.belowbar,color=color.green,text="Al", offset = displacement-1, textcolor=color.white)
//plotshape(sellcross,size=size.small,style=shape.labeldown,location=location.abovebar,color=color.red,text="Sat", offset = displacement-1, textcolor=color.white)