Strategi Hentian Keuntungan Sawtooth yang Melalui Lantai Berdasarkan Purata Bergerak

Penulis:ChaoZhang, Tarikh: 2023-12-21 12:26:18
Tag:

img

Ringkasan

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:

  1. Gunakan sistem purata bergerak untuk menapis kejutan
  2. Mengambil alih mengambil keuntungan dan hentikan kerugian untuk pengurusan modal dinamik
  3. Penapisan kedudukan yang boleh dikonfigurasi untuk mengelakkan pembukaan satu arah

Prinsip Strategi

Strategi ini terdiri daripada empat bahagian:

  1. Sistem purata bergerak

    Gunakan salib emas dan salib kematian purata bergerak untuk menentukan trend dan menapis kejutan.

  2. 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.

  3. 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.

  4. 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

Kelebihan utama strategi ini ialah:

  1. Keupayaan Konfigurasi Tinggi

    Banyak parameter dalam strategi boleh dikonfigurasikan untuk pengguna menyesuaikan berdasarkan gaya perdagangan mereka.

  2. 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.

  3. Sesuai untuk pasaran trend

    Strategi purata bergerak itu sendiri lebih sesuai untuk pasaran tren yang kuat untuk menapis kejutan dengan berkesan.

Risiko dan Tindakan Balas

Terdapat juga beberapa risiko dalam strategi ini:

  1. 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.

  2. Stop Loss yang berlebihan

    Pemindahan stop loss boleh dibatalkan dalam kejutan. Parameter ATR harus digabungkan untuk menetapkan julat stop loss.

  3. Risiko pembukaan satu hala

    Membolehkan penapisan kedudukan akan memberi kesan kepada kekerapan dagangan.

Arahan pengoptimuman

Arah pengoptimuman utama ialah:

  1. Pengoptimuman Parameter

    Sesuaikan kitaran purata bergerak, parameter ATR, mengambil keuntungan dan stop loss ratio dan parameter lain untuk mengoptimumkan prestasi strategi.

  2. Menambah penunjuk

    Tambahkan penunjuk seperti CMF, OBV untuk menilai aliran modal dan mengelakkan kerugian berhenti yang berlebihan.

  3. Menggabungkan dengan strategi lain

    Gabungkan dengan strategi pecah untuk mengikuti trend selepas trend stabil untuk mencapai hasil yang lebih baik.

Ringkasan

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)


Lebih lanjut