Strategi Dagangan Crossover Purata Pergerakan Berganda


Tarikh penciptaan: 2023-11-02 14:21:24 Akhirnya diubah suai: 2023-11-02 14:21:24
Salin: 0 Bilangan klik: 657
1
fokus pada
1617
Pengikut

Strategi Dagangan Crossover Purata Pergerakan Berganda

Gambaran keseluruhan

Strategi ini menggunakan persilangan purata bergerak ganda sebagai isyarat dagangan, digabungkan dengan ATR berhenti untuk melakukan perdagangan trend. Idea utamanya adalah melakukan lebih banyak ketika melewati rata-rata bergerak jangka panjang pada rata-rata bergerak jangka pendek, kosong ketika melewati rata-rata bergerak jangka panjang, dan menggunakan ATR untuk menetapkan stop loss, stop loss, dan stop loss.

Prinsip Strategi

Strategi ini menilai arah trend melalui dua kumpulan purata bergerak. Panjang purata bergerak cepat adalah 25 hari dan purata bergerak perlahan adalah 100 hari.

Untuk menyaring beberapa isyarat palsu, strategi menambah crossCount crossCount. Isyarat hanya akan dicetuskan apabila rata-rata bergerak cepat (RMA) mempunyai kurang daripada maxNoCross (Default 10) dalam tempoh lookback (default 25 hari).

Selain itu, strategi ini menambah mekanisme pengesahan, iaitu, selepas isyarat awal, isyarat itu akan disahkan jika harga kembali masuk antara dua purata bergerak.

Selepas masuk, strategi menggunakan penunjuk ATR untuk menetapkan jarak hentian. ATR mengukur julat turun naik harga dalam tempoh tertentu yang lalu, di mana jarak hentian ditetapkan dengan 14 kali ganda ATR. Garis hentian akan bergerak dengan pergerakan harga.

Analisis kelebihan

Strategi ini mempunyai beberapa kelebihan:

  1. Penggunaan purata bergerak berganda yang digabungkan dengan mekanisme penapisan silang dapat menyaring isyarat palsu dengan berkesan dan menangkap trend yang lebih kuat.

  2. Menambah mekanisme pengesahan untuk mengelakkan penembusan palsu

  3. Menggunakan ATR Floating Tracking Stop Loss, anda boleh mengunci keuntungan maksimum dan mengelakkan penarikan balik yang berlebihan.

  4. Lebih sedikit parameter yang boleh dioptimumkan dengan mudah dan mudah dilaksanakan.

  5. Ia boleh digunakan dalam pelbagai pasaran, termasuk mata wang digital dan pasaran asas tradisional.

  6. Menggunakan pelbagai indikator untuk membina strategi, menjadikan strategi lebih kukuh.

Analisis risiko

Strategi ini mempunyai risiko utama:

  1. Dalam tempoh pemulihan yang bergolak, rata-rata bergerak sering bercampur dengan rata-rata bergerak, yang boleh menyebabkan kerugian berulang.

  2. Tetapan parameter ATR yang tidak betul boleh menyebabkan stop loss terlalu longgar atau terlalu ketat.

  3. Ia boleh menyebabkan kerosakan yang tidak dapat dielakkan.

  4. Keadaan yang tidak dijangka yang menyebabkan harga turun naik secara mendadak juga boleh menyebabkan kerugian langsung.

  5. Parameter purata bergerak yang tidak munasabah boleh menyebabkan kehilangan trend atau menghasilkan terlalu banyak isyarat palsu.

  6. Perubahan dalam julat turun naik harga baru-baru ini mungkin menyebabkan ATR berhenti kehilangan jarak tidak sesuai.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan cara berikut:

  1. Untuk mengoptimumkan parameter purata bergerak untuk mencari kombinasi yang lebih sesuai. Anda boleh menguji parameter peredaran yang berbeza dan purata bergerak berat.

  2. Uji parameter kitaran ATR yang berbeza untuk mencari jarak penghentian yang lebih baik.

  3. Menambah syarat penapisan tambahan, seperti peningkatan jumlah urus niaga, penunjuk gegaran, dan lain-lain, untuk meningkatkan kualiti isyarat.

  4. Menggabungkan indikator trend untuk mengelakkan terjerumus dalam situasi yang bergolak.

  5. Menambah algoritma pembelajaran mesin untuk mengoptimumkan secara automatik kombinasi parameter melalui latihan data sejarah.

  6. Cari lebih banyak pengesahan dalam carta peringkat besar, dan jangan tertipu oleh bunyi garis pendek.

  7. Menetapkan peraturan penurunan kedudukan untuk keuntungan dan mengunci keuntungan secara beransur-ansur.

ringkaskan

Strategi ini mengintegrasikan penggunaan pelbagai petunjuk teknikal seperti persilangan purata bergerak ganda, penapisan trend, mekanisme pengesahan dan hentian dinamik ATR. Terdapat ruang untuk peningkatan dalam pengoptimuman parameter dan kawalan risiko, tetapi pemikiran perdagangannya sederhana dan jelas, mudah untuk melaksanakan pengulangan, merupakan strategi pemantauan trend yang lebih mantap.

Kod sumber strategi
/*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)