Strategi Dagangan Crossover Dengan Purata Bergerak Berganda

Penulis:ChaoZhang, Tarikh: 2023-11-02 14:21:24
Tag:

img

Ringkasan

Strategi ini menggunakan persilangan purata bergerak berganda sebagai isyarat perdagangan, digabungkan dengan hentian ATR untuk trend selepas perdagangan.

Logika Strategi

Strategi ini terutamanya menggunakan dua set purata bergerak untuk menentukan arah trend. purata bergerak pantas mempunyai panjang 25 hari, dan purata bergerak perlahan mempunyai panjang 100 hari. Isyarat beli dihasilkan apabila MA pantas melintasi di atas MA perlahan, dan isyarat jual dihasilkan apabila melintasi di bawah.

Untuk menapis beberapa isyarat palsu, strategi ini menambah kaunter silang yang dipanggil crossCount. Isyarat hanya dicetuskan apabila bilangan silang untuk MA pantas dalam tempoh melihat kembali (default 25 hari) adalah kurang daripada maxNoCross (default 10).

Di samping itu, strategi ini mempunyai mekanisme pengesahan, di mana isyarat juga disahkan jika harga memasuki semula antara dua purata bergerak selepas isyarat awal.

Selepas memasuki kedudukan, strategi menggunakan ATR untuk menetapkan tahap stop loss. ATR mengukur julat turun naik harga dalam tempoh tertentu, dan di sini 14x digunakan sebagai jarak berhenti. Tahap berhenti mengambang mengikut pergerakan harga.

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan persilangan MA berganda dengan penapisan, ia dapat menangkap pergerakan trend yang kuat dengan berkesan sambil mengelakkan isyarat palsu.

  2. Mekanisme pengesahan menghalang mereka daripada dipalsukan oleh pelarian palsu.

  3. Stop loss ATR terapung membantu memaksimumkan keuntungan sambil mengehadkan pengeluaran.

  4. Ia mempunyai beberapa parameter yang boleh dioptimumkan dan mudah dilaksanakan.

  5. Berlaku di seluruh pasaran termasuk aset kripto dan tradisional.

  6. Menggabungkan pelbagai penunjuk teknikal untuk ketahanan.

Analisis Risiko

Risiko utama strategi termasuk:

  1. Pembebasan MA yang kerap semasa tempoh yang terhad boleh menyebabkan banyak kerugian.

  2. Tetapan parameter ATR yang tidak betul boleh menyebabkan penamat terlalu lebar atau terlalu ketat.

  3. Celah besar boleh langsung mencetuskan hentian.

  4. Peristiwa berita utama yang menyebabkan turun naik yang besar juga boleh menghentikan kedudukan.

  5. Parameter MA yang tidak mencukupi boleh menyebabkan trend yang hilang atau terlalu banyak isyarat palsu.

  6. Tindakan harga baru-baru ini mungkin menjadikan hentian ATR ketinggalan zaman.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dalam aspek berikut:

  1. Mengoptimumkan parameter MA untuk mencari kombinasi yang lebih baik, menguji tempoh yang berbeza dan purata tertimbang.

  2. Uji tempoh ATR yang berbeza untuk mencari jarak berhenti yang lebih baik.

  3. Tambah penapis tambahan seperti lonjakan jumlah, penunjuk turun naik untuk meningkatkan kualiti isyarat.

  4. Sertakan metrik trend untuk mengelakkan whipsaws di pasaran bergelombang.

  5. Tambah algoritma pembelajaran mesin untuk mengoptimumkan parameter secara automatik melalui backtesting.

  6. Cari lebih banyak pengesahan pada jangka masa yang lebih tinggi untuk mengelakkan bunyi jangka pendek.

  7. Melaksanakan peraturan mengambil keuntungan bertahap untuk meningkatkan kedudukan yang menguntungkan.

Ringkasan

Strategi ini menggabungkan persilangan MA berganda, penapisan trend, pengesahan, dan hentian ATR dinamik untuk mengikuti trend yang kukuh. Walaupun terdapat ruang untuk peningkatan dalam pengoptimuman dan kawalan risiko, logik perdagangan adalah mudah dan mudah ditiru, menjadikannya sistem perdagangan trend yang stabil.


/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("QuantCat Intraday Strategy (15M)", overlay=true)

//MA's for basic signals, can experiment with these values

fastEMA = sma(close, 25)
slowEMA = sma(close, 100)

//Parameters for validation of position

lookback_value = 25
maxNoCross=10 //value used for maximum number of crosses on a certain MA to mitigate noise and maximise value from trending markets

//Amount of crosses on MA to filter out noise

ema25_crossover = (cross(close, fastEMA)) == true ? 1 : 0
ema25_crossover_sum = sum(ema25_crossover, lookback_value) ///potentially change lookback value to alter results
crossCount = (ema25_crossover_sum <= maxNoCross)

//Entries long

agrLong =  ((crossover(fastEMA, slowEMA)) and (crossCount == true)) ? true : false
consLong = ((close < fastEMA) and (close > slowEMA) and (fastEMA > slowEMA) and (crossCount == true)) ? true : false

//Entries short

agrShort =  ((crossunder(fastEMA, slowEMA)) and (crossCount == true)) ? true : false
consShort = ((close > fastEMA) and (close < slowEMA) and (fastEMA < slowEMA) and (crossCount == true)) ? true : false

//ATR

atrLkb = input(14, minval=1, title='ATR Stop Period')
atrRes = input("15",  title='ATR Resolution')
atr = request.security(syminfo.tickerid, atrRes, atr(atrLkb))

//Strategy

longCondition = ((agrLong or consLong) == true)
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = ((agrShort or consShort) == true)
if (shortCondition)
    strategy.entry("Short", strategy.short)

//Stop multiplier 

stopMult = 4

//horizontal stoplosses

longStop = na
longStop :=  shortCondition ? na : longCondition and strategy.position_size <=0 ? close - (atr * stopMult) : longStop[1] 
shortStop = na
shortStop := longCondition ? na : shortCondition and strategy.position_size >=0 ? close + (atr * stopMult) : shortStop[1]

//Strategy exit functions

strategy.exit("Long ATR Stop", "Long", stop=longStop)
strategy.exit("Short ATR Stop", "Short", stop=shortStop)

//Plots 

redgreen = (fastEMA > slowEMA) ? green : red
    
p1 = plot(fastEMA, title="Fast EMA", color=redgreen, linewidth=2) 
p2 = plot(slowEMA, title="Slow EMA", color=redgreen, linewidth=2) 
fill(p1, p2, color=redgreen)

s1 = plot(longStop, style=linebr, color=red, linewidth=2,     title='Long ATR Stop')
s2 = plot(shortStop, style=linebr, color=red, linewidth=2,  title='Short ATR Stop')

fill(p2, s1, color=red, transp=95)
fill(p2, s2, color=red, transp=95)





    




Lebih lanjut