Strategi ini membuka kedudukan berdasarkan salib emas dan salib kematian purata bergerak, dan set mengambil keuntungan dan menghentikan kerugian dengan cara merentasi lantai. Ciri utamanya adalah:
Strategi ini terdiri daripada empat bahagian:
Sistem purata bergerak
Gunakan salib emas dan salib kematian purata bergerak untuk menentukan trend dan menapis kejutan.
Pindah mengambil keuntungan dan hentikan kerugian
Gunakan mengambil keuntungan dan berhenti kerugian dengan peratusan tertentu untuk mengunci keuntungan dan mengawal risiko, merealisasikan pengurusan modal yang dinamik.
Penapisan Kedudukan
Boleh mengkonfigurasi sama ada untuk mengaktifkan penapisan kedudukan. Jika kedudukan sebelumnya adalah panjang, isyarat seterusnya mesti pendek untuk membuka kedudukan, mengelakkan memegang satu sisi.
ATR Stop Loss
Menggunakan ATR untuk mengehadkan julat maksimum stop loss dan mengelakkan stop loss yang berlebihan.
Secara khusus, strategi ini mula-mula mengira purata bergerak, panjang pada salib emas, dan pendek pada salib kematian. Selepas masuk, tetapkan garis mengambil keuntungan dan stop loss bergerak dengan peratusan tertentu. Jika harga menyentuh garis mengambil keuntungan, maka ambil keuntungan; jika menyentuh garis stop loss atau melebihi julat stop loss ATR, maka hentikan kerugian.
Kelebihan utama strategi ini ialah:
Keupayaan Konfigurasi Tinggi
Banyak parameter dalam strategi boleh dikonfigurasikan untuk pengguna menyesuaikan berdasarkan gaya perdagangan mereka.
Pengurusan Modal yang Baik
Penggunaan bergerak mengambil keuntungan dan menghentikan kerugian dan ATR menghentikan kerugian dapat mengawal secara berkesan amplitud satu stop loss dan mencapai pengurusan modal yang sangat baik.
Sesuai untuk pasaran trend
Strategi purata bergerak itu sendiri lebih sesuai untuk pasaran tren yang kuat untuk menapis kejutan dengan berkesan.
Terdapat juga beberapa risiko dalam strategi ini:
Penilaian Trend yang Salah
Penghakiman purata bergerak di pasaran yang kompleks tidak sempurna, dan penilaian yang salah mungkin berlaku. Pada masa ini, parameter purata bergerak harus diselaraskan dengan sewajarnya, atau penunjuk lain boleh digabungkan untuk menilai trend.
Stop Loss yang berlebihan
Pemindahan stop loss boleh dibatalkan dalam kejutan. Parameter ATR harus digabungkan untuk menetapkan julat stop loss.
Risiko pembukaan satu hala
Membolehkan penapisan kedudukan akan memberi kesan kepada kekerapan dagangan.
Arah pengoptimuman utama ialah:
Pengoptimuman Parameter
Sesuaikan kitaran purata bergerak, parameter ATR, mengambil keuntungan dan stop loss ratio dan parameter lain untuk mengoptimumkan prestasi strategi.
Menambah penunjuk
Tambahkan penunjuk seperti CMF, OBV untuk menilai aliran modal dan mengelakkan kerugian berhenti yang berlebihan.
Menggabungkan dengan strategi lain
Gabungkan dengan strategi pecah untuk mengikuti trend selepas trend stabil untuk mencapai hasil yang lebih baik.
Ringkasnya, melalui penapis purata bergerak dan mengambil keuntungan bergerak dan menghentikan kerugian, strategi ini merealisasikan pengurusan modal dinamik berdasarkan trend. Ia mempunyai konfigurasi yang tinggi, sesuai untuk pelabur rasional untuk menyesuaikan dan menggunakan mengikut gaya mereka sendiri. Sebagai strategi kuantitatif sejagat, ia masih mempunyai potensi yang besar untuk pengoptimuman dan bernilai penyelidikan mendalam.
/*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)