Strategi Perdagangan Crossover Rata-rata Pergerakan Ganda


Tanggal Pembuatan: 2023-11-02 14:21:24 Akhirnya memodifikasi: 2023-11-02 14:21:24
menyalin: 0 Jumlah klik: 657
1
fokus pada
1617
Pengikut

Strategi Perdagangan Crossover Rata-rata Pergerakan Ganda

Ringkasan

Strategi ini menggunakan persilangan dua rata-rata bergerak sebagai sinyal perdagangan, digabungkan dengan ATR stop loss untuk melakukan perdagangan mengikuti tren. Gagasan utamanya adalah melakukan over ketika melewati rata-rata bergerak jangka panjang pada rata-rata bergerak jangka pendek, dan kosong saat melewati rata-rata bergerak jangka panjang, sambil menggunakan ATR untuk mengatur stop loss, dan stop loss yang dinamika.

Prinsip Strategi

Strategi ini terutama digunakan untuk menilai arah tren melalui dua set rata-rata bergerak. Panjang rata-rata bergerak cepat adalah 25 hari dan panjang rata-rata bergerak lambat adalah 100 hari.

Untuk memfilter beberapa sinyal palsu, strategi menambahkan crossCount crossCount. Ini hanya akan memicu sinyal jika rata-rata bergerak cepat memiliki kurang dari maxNoCross (default 10 kali) selama periode lookback (default 25 hari).

Selain itu, strategi ini juga menambahkan mekanisme konfirmasi, yaitu setelah sinyal awal, sinyal ini akan dikonfirmasi jika harga kembali masuk ke antara dua rata-rata bergerak.

Setelah masuk, strategi menggunakan indikator ATR untuk mengatur jarak stop loss. ATR mengukur kisaran fluktuasi harga dalam periode tertentu di masa lalu, di mana jarak stop loss ditetapkan dengan 14 kali lipat dari ATR.

Analisis Keunggulan

Strategi ini memiliki beberapa keuntungan:

  1. Penggunaan dua rata-rata bergerak yang digabungkan dengan mekanisme penyaringan silang dapat secara efektif menyaring sinyal palsu dan menangkap tren yang lebih kuat.

  2. Menambahkan mekanisme verifikasi untuk menghindari penipuan.

  3. Dengan menggunakan ATR Floating Tracking Stop Loss, Anda dapat mengunci keuntungan maksimal dan mencegah penarikan yang berlebihan.

  4. Lebih sedikit parameter yang dapat dioptimalkan dan lebih mudah untuk diterapkan.

  5. Dapat diterapkan di berbagai pasar, termasuk mata uang digital dan pasar dasar tradisional.

  6. Strategi yang dibangun dengan menggunakan berbagai indikator secara komprehensif membuat strategi lebih kuat.

Analisis risiko

Strategi ini memiliki risiko utama sebagai berikut:

  1. Pada saat reset, rata-rata bergerak sering kali berselisih dan dapat menyebabkan kerugian berulang.

  2. ATR parameter yang tidak tepat dapat menyebabkan stop loss terlalu longgar atau terlalu ketat.

  3. Jika Anda melakukan hal ini, Anda akan mengalami kerugian besar.

  4. Kejadian mendadak yang menyebabkan fluktuasi harga juga dapat menyebabkan kerugian langsung.

  5. Parameter moving average yang tidak masuk akal dapat menyebabkan kehilangan tren atau terlalu banyak sinyal palsu.

  6. Perubahan dalam kisaran pergerakan harga baru-baru ini dapat menyebabkan stop loss ATR tidak sesuai.

Arah optimasi

Strategi ini dapat dioptimalkan lebih lanjut dalam beberapa hal:

  1. Parameter moving average dapat dioptimalkan untuk menemukan kombinasi yang lebih cocok. Parameter periodik yang berbeda dan weighted moving average dapat diuji.

  2. Uji berbagai parameter siklus ATR untuk menemukan jarak penghentian yang lebih baik.

  3. Menambahkan kondisi penyaringan tambahan, seperti volume transaksi yang diperbesar, indikator getaran, dan lain-lain, untuk meningkatkan kualitas sinyal.

  4. Menggunakan indikator untuk mengevaluasi tren dan menghindari terjerumus dalam situasi yang bergejolak.

  5. Menambahkan algoritma pembelajaran mesin untuk mengoptimalkan kombinasi parameter secara otomatis melalui pelatihan data historis.

  6. Carilah lebih banyak konfirmasi dalam grafik skala besar, dan hindarilah kebisingan garis pendek yang menyesatkan.

  7. Menetapkan aturan penurunan posisi profit, dan mengunci profit secara bertahap.

Meringkaskan

Strategi ini mengintegrasikan beberapa indikator teknis seperti crossover moving average ganda, penyaringan tren, mekanisme konfirmasi dan ATR stop loss dinamis. Ada ruang untuk peningkatan dalam hal optimasi parameter dan kontrol risiko, tetapi ide perdagangannya sederhana dan jelas, mudah untuk menerapkan replikasi, dan merupakan strategi pelacakan tren yang lebih kuat.

Kode 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)