Strategi Pelacakan Tren Crossover Rata-rata Bergerak Ganda

Penulis:ChaoZhang, Tanggal: 2023-09-28 11:52:16
Tag:

Gambaran umum

Strategi ini menggunakan prinsip crossover rata-rata bergerak ganda dikombinasikan dengan indikator pelacakan tren untuk menentukan dan mengikuti tren. Ide utama adalah untuk pergi panjang ketika rata-rata bergerak periode pendek melintasi di atas rata-rata bergerak periode panjang dan pergi pendek ketika rata-rata bergerak periode pendek melintasi di bawah rata-rata bergerak periode panjang.

Logika Strategi

Strategi ini terutama terdiri dari sistem crossover rata-rata bergerak ganda dan sistem pelacakan tren.

Sistem crossover rata-rata bergerak ganda berisi EMA1 cepat dan EMA2 lambat. Periode default adalah 10 hari untuk EMA1 dan 20 hari untuk EMA2. Sinyal beli dihasilkan ketika EMA1 melintasi di atas EMA2. Sinyal jual dihasilkan ketika EMA1 melintasi di bawah EMA2.

100 hari EMA (EMA100) ditambahkan untuk menentukan arah tren keseluruhan. sinyal beli hanya dihasilkan ketika harga berada dalam tren naik (harga di atas EMA 100 hari). sinyal jual hanya dihasilkan ketika harga berada dalam tren turun (harga di bawah EMA 100 hari). ini menyaring sebagian besar situasi pecah palsu.

Panah beli dan jual juga digambarkan pada lilin untuk menampilkan sinyal perdagangan secara visual.

Sistem pelacakan tren menggunakan garis hari intraday dan siklus untuk mengkonfirmasi arah tren lagi. Intraday menggunakan rata-rata bergerak Heikin-Ashi 5 menit dan 60 menit sementara siklus menggunakan rata-rata bergerak 8 hari dan 12 hari dari garis harian.

Sinyal perdagangan hanya dihasilkan ketika penilaian intraday dan siklus setuju.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah integrasi sistem pelacakan tren dan sistem crossover rata-rata bergerak, yang secara efektif menyaring sinyal palsu dan menjaga penarikan dalam tingkat yang dapat diterima.

Secara khusus, keuntungan dari sistem crossover rata-rata bergerak ganda adalah:

  1. Logika sederhana dan mudah dimengerti, cocok untuk pemula.

  2. Mengikuti tren, menghindari perdagangan melawan tren.

  3. Periode EMA cepat dan lambat yang dapat disesuaikan, dapat disesuaikan dengan siklus yang berbeda.

  4. Profitabilitas yang kuat dalam tren utama.

Menambahkan EMA100 memiliki keuntungan:

  1. Menghindari perdagangan melawan tren, mengurangi kerugian.

  2. Mengikuti tren, menjaga pengurangan terkendali.

Sistem pelacakan tren memiliki keuntungan:

  1. Analisis beberapa kerangka waktu, menghindari kebisingan dari satu periode.

  2. Memastikan keselarasan dengan arah tren utama, mengurangi penarikan.

  3. Heikin-Ashi meluruskan kebisingan, hanya menangkap tren.

Analisis Risiko

Beberapa risiko yang perlu diperhatikan untuk strategi ini:

  1. Seringnya crossover dan biaya perdagangan tambahan selama konsolidasi yang berkepanjangan.

  2. Sinyal terlambat, kehilangan tahap awal tren.

  3. Kerugian besar ketika tren utama berbalik.

  4. Kinerja tergantung pada optimasi parameter.

Solusi:

  1. Kurangi frekuensi perdagangan selama konsolidasi.

  2. Memperpendek periode EMA untuk mendapatkan sinyal tren lebih awal.

  3. Gunakan stop loss untuk mengendalikan single loss.

  4. Mengoptimalkan parameter untuk produk dan kondisi pasar yang berbeda.

Arahan Optimasi

Strategi ini dapat dioptimalkan di bidang berikut:

  1. Uji lebih banyak kombinasi untuk menemukan periode optimal.

  2. Tambahkan lebih banyak penilaian jangka waktu, misalnya baris bulanan atau triwulanan.

  3. Sertakan mekanisme stop loss seperti stop bergerak atau eksponensial.

  4. Gabungkan dengan indikator volume seperti On Balance Volume.

  5. Meningkatkan waktu masuk menggunakan osilator yang lebih cepat seperti MACD.

  6. Optimasi parameter untuk lebih banyak produk dan aset.

Kesimpulan

Strategi ini menggabungkan kekuatan sistem crossover dan pelacakan tren rata-rata bergerak ganda, menghindari kelemahan sistem tunggal. Analisis jangka waktu ganda memastikan arah perdagangan yang benar sementara kontrol penarikan sangat baik. Optimasi lebih lanjut dapat menyesuaikan dengan lebih banyak lingkungan pasar untuk penggunaan praktis.


/*backtest
start: 2023-09-20 00:00:00
end: 2023-09-27 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/
// © askkuldeeprandhawa

//@version=4

strategy("KSR Strategy", overlay=true)



par1=input(10)
par2=input(20)
ema1=ema(close,par1)
ema2=ema(close,par2)
buy=ema1>ema2
sell=ema2<ema1
mycolor= iff(buy,color.green,iff(sell,color.blue,color.red))
barcolor(color=mycolor)



ema100=ema(close,100)
ibuy=crossover(ema1,ema2)
iSell=crossunder(ema1,ema2)

varp=tostring(close[1])
plotshape(ibuy, "Up Arrow", shape.triangleup, location.belowbar, color.green, 0, 0,"Buy" , color.green, true, size.tiny)
plotshape(iSell, "Down Arrow", shape.triangledown, location.abovebar, color.red, 0, 0, "Sell", color.red, true, size.tiny)

crossed =crossover(ema(close,par1), ema(close,par2))
// if crossed
//     l = label.new(bar_index, na, tostring(close), 
//          color=color.green, 
//          textcolor=color.white,
//          style=label.style_labelup, yloc=yloc.belowbar)
         
crossed2 =crossunder(ema(close,par1), ema(close,par2))
// if crossed2
//     l = label.new(bar_index, na, tostring(close), 
//          color=color.red, 
//          textcolor=color.white,
//          style=label.style_labeldown, yloc=yloc.abovebar)
         
plot(ema(close,par1),"EMA Short",color=color.white)
plot(ema(close,par2),"EMA Long",color=color.orange)


longCondition = crossover(ema(close, par1), ema(close, par2))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(ema(close, par1), ema(close, par2))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)




ma1_len = input(title="MA1", type=input.integer, defval=8, minval=1, maxval=100, step=1)
ma2_len = input(title="MA2", type=input.integer, defval=12, minval=1, maxval=100, step=1)

o = ema(open, ma1_len)
c = ema(close, ma1_len)
h = ema(high, ma1_len)
l = ema(low, ma1_len)

tim1=input('D',"Short Time")
tim2=input('W',"Long Time")

ema_p=input(title="EMA Period", type=input.integer, defval=16, minval=1, maxval=100, step=1)
refma = ema(close, ema_p)
plot(refma, title="EMA" , linewidth=1, color=close < refma ? color.orange : color.blue)
ha_t = heikinashi(syminfo.tickerid)
ha_o = security(ha_t, tim2, o)
ha_c = security(ha_t, tim2, c)
ha_h = security(ha_t, tim2, h)
ha_l = security(ha_t, tim2, l)
o2 = ema(ha_o, ma2_len)
c2 = ema(ha_c, ma2_len)
h2 = ema(ha_h, ma2_len)
l2 = ema(ha_l, ma2_len)
ha_col = ha_c > ha_o ? color.red : color.green
plotshape(true, style=shape.circle, color=ha_c > ha_o ? color.green : color.red, location=location.bottom)


ha_t1 = heikinashi(syminfo.tickerid)
ha_o1 = security(ha_t1, tim1, o)
ha_c1 = security(ha_t1, tim1, c)
ha_h1 = security(ha_t1, tim1, h)
ha_l1 = security(ha_t1, tim1, l)
o3 = ema(ha_o1, ma2_len)
c3 = ema(ha_c1, ma2_len)
h3 = ema(ha_h1, ma2_len)
l3 = ema(ha_l1, ma2_len)
ha_col1 = ha_c1 > ha_o1 ? color.red : color.green
plotshape(true, style=shape.circle, color=ha_c1 > ha_o1 ? color.green : color.red, location=location.top)







Lebih banyak