Strategi Crossover Rata-rata Pergerakan Momentum


Tanggal Pembuatan: 2024-01-23 14:18:26 Akhirnya memodifikasi: 2024-01-23 14:18:26
menyalin: 1 Jumlah klik: 542
1
fokus pada
1621
Pengikut

Strategi Crossover Rata-rata Pergerakan Momentum

Ringkasan

Strategi ini didasarkan pada persilangan garis rata-rata EMA dari periode yang berbeda untuk menilai arah tren dan dengan demikian membangun sinyal shorting ganda. Strategi ini terutama menggunakan 2 garis rata-rata, yaitu garis 10 dan 20 .

Prinsip Strategi

Strategi ini menggunakan 2 garis rata-rata EMA, termasuk garis 10 dan 20. Garis rata-rata EMA dapat mencerminkan arah tren harga dengan baik. Ketika garis EMA jangka pendek dari bawah ke atas melintasi garis EMA jangka panjang, menunjukkan pergerakan harga dari turun ke atas, termasuk sinyal multipel; Ketika garis EMA jangka pendek dari atas ke bawah melintasi garis EMA jangka panjang, menunjukkan pergerakan harga dari naik ke bawah, termasuk sinyal kosong.

Strategi ini menggabungkan nilai maksimum dan minimum dari fluktuasi untuk memfilter sebagian dari sinyal perdagangan. Hanya setelah fluktuasi harga mencapai tingkat tertentu, sinyal perdagangan akan dikirim. Ini dapat memfilter sebagian dari sinyal palsu.

Secara khusus, strategi ini menentukan apakah tren harga telah terbentuk dengan melacak saat harga mencapai nilai tertinggi dan terendah. Hanya setelah mencapai nilai tertinggi atau terendah, sinyal perdagangan yang sebenarnya akan dikirim.

Analisis Keunggulan Strategi

Strategi ini memiliki beberapa keuntungan:

  1. Menggunakan garis rata-rata EMA untuk menentukan arah tren, Anda dapat secara efektif melacak pergerakan pasar
  2. Garis rata-rata EMA dari periode yang berbeda untuk menangkap peluang perdagangan pada garis pendek dan tengah
  3. Dengan memfilter sinyal dengan nilai ekstrim, Anda dapat memfilter sebagian dari kebisingan dan menghindari kehilangan peluang perdagangan.
  4. Strategi logis sederhana dan jelas, mudah dipahami dan dimodifikasi
  5. Parameter dapat disesuaikan sesuai dengan varietas dan preferensi perdagangan yang berbeda, sangat mudah beradaptasi

Analisis Risiko Strategi

Strategi ini juga memiliki beberapa risiko:

  1. EMA rata-rata sendiri akan mengalami lag dan mungkin akan melewatkan pembalikan harga jangka pendek.
  2. Filter sinyal noise tidak lengkap, mungkin ada beberapa transaksi yang salah
  3. Parameter perlu disesuaikan dengan kondisi pasar yang berbeda

Risiko dapat dikurangi dengan melakukan hal berikut:

  1. Konfirmasi sinyal dalam kombinasi dengan indikator lain untuk menghindari EMA rata-rata lag
  2. Optimalkan kondisi penyaringan titik terdepan untuk meningkatkan keandalan sinyal
  3. Adaptasi parameter berdasarkan hasil pengujian ulang, strategi optimasi

Arah optimasi strategi

Strategi ini dapat dioptimalkan lebih lanjut dari beberapa arah:

  1. Menambahkan portofolio indikator teknis lainnya untuk meningkatkan akurasi sinyal perdagangan. Misalnya MACD, KD, dll.
  2. Optimalkan parameter rata-rata EMA agar lebih sesuai dengan varietas tertentu.
  3. Optimalkan parameter yang sangat besar dan sangat kecil untuk meningkatkan penilaian terhadap fluktuasi harga
  4. Tambahkan strategi stop loss untuk mengendalikan kerugian maksimum dalam satu transaksi.
  5. Uji coba strategi ini pada varietas yang berbeda untuk mengevaluasi kesesuaian.

Meringkaskan

Strategi EMA crossover secara keseluruhan adalah strategi pelacakan tren yang sederhana dan praktis. Ini menggunakan rata-rata EMA untuk menentukan arah tren besar, kemudian menggabungkan sinyal penyaring fluktuasi harga untuk membentuk keputusan perdagangan. Strategi ini mudah dipahami dan menyesuaikan parameternya, dan dapat disesuaikan dengan perdagangan garis pendek tengah. Dengan pengoptimalan lebih lanjut, ini dapat menjadi strategi kuantitatif yang layak digunakan untuk jangka panjang.

Kode Sumber Strategi
/*backtest
start: 2024-01-15 00:00:00
end: 2024-01-22 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("PierceMAStrat", overlay=true)

lenMA0 = input(title="Length 0",defval=2)
lenMA1=input(title="Length 1",defval=10)
lenMA2=input(title="Length 2", defval=20)
lenMA3 = input(title = "Length3", defval =50)




emaLen0 = ema(close, lenMA0)
emaLen1 = ema(close, lenMA1)
emaLen2 = ema(close, lenMA2)
emaLen3 = ema(close, lenMA3)

    
ascent = if emaLen1[1] < emaLen1[0]
    true
else
    false
    
descent = if emaLen1[1] > emaLen1[0]
    true
else
    false
    
TimeSinceAscensionStart = if ascent == true
    barssince(descent == true)
else
    0
    

StartUp = if TimeSinceAscensionStart < 1
    true
else
    false

StartDown = if TimeSinceAscensionStart < 1
    false
else
    true


AscentBarCounter = barssince(StartUp == true)

DescentBarCounter = barssince(StartDown == true)

MaxAscent = if AscentBarCounter[1] > AscentBarCounter[0] and AscentBarCounter[1] > 10
    true
else
    false
    
MaxDescent = if DescentBarCounter[1] > DescentBarCounter[0] and DescentBarCounter[1] > 5
    true
else
    false
    
longCond = if crossover(emaLen1, emaLen2) and barssince(MaxDescent == true) > 3
    true
else
    false
shortCond = if crossunder(emaLen1, emaLen2) and barssince(MaxAscent == true) > 3
    true
else
    false


//longCond = (crossover(emaLen1, emaLen2) and (emaLen2 > emaLen3))
//shortCond = crossunder(emaLen1, emaLen2) and (emaLen2 < emaLen3)



if longCond == true
    strategy.entry("LONG", strategy.long)

if shortCond == true
    strategy.entry("SHORT", strategy.short)
    


plotshape(series=MaxAscent, title="MaximaReached", style=shape.triangledown, location=location.abovebar, color=green, text="MaximaReached", size=size.small)
plotshape(series=MaxDescent, title="MinimaReached", style=shape.triangleup, location=location.belowbar, color=red, text="MinimaReached", size=size.small)
//plotshape(series=StartUp, title="StartUp", style=shape.triangleup, location=location.belowbar, color=red, text="StartUp", size=size.tiny)
//plotshape(series=StartDown, title="StartDown", style=shape.triangleup, location=location.belowbar, color=green, text="StartDown", size=size.tiny)

//plotshape(series=(crossover(emaLen1, emaLen3)), title="GBXOVER", style=shape.triangleup, location=location.belowbar, color=green, text="GBXO", size=size.small)
//plotshape(series=(crossover(emaLen2, emaLen3)), title="RBXOVER", style=shape.triangledown, location=location.abovebar, color=orange, text="RBXO", size=size.small)
//plotshape(series=(crossover(emaLen1, emaLen2)), title="GRXOVER", style=shape.triangledown, location=location.abovebar, color=teal, text="GRXO", size=size.small)
//plotshape(series=(crossunder(emaLen1, emaLen2)), title="GRXUNDER", style=shape.triangledown, location=location.abovebar, color=purple, text="GRXU", size=size.small)
//plotshape(series=(crossunder(emaLen1, emaLen3)), title="GBXOVER", style=shape.triangleup, location=location.belowbar, color=yellow, text="GBXU", size=size.small)
//plotshape(series=(crossunder(emaLen2, emaLen3)), title="RBXOVER", style=shape.triangledown, location=location.abovebar, color=yellow, text="RBXU", size=size.small)
    
//plotshape(convergence, color=lime, style=shape.arrowup, text="CROSS")
plot(emaLen1, color=green, transp=0, linewidth=2)
plot(emaLen2, color=red, transp=30, linewidth=2)
plot(emaLen3, color=blue, transp=30, linewidth=2)