Zero Lag Volatility Breakout Strategi Tren EMA

Penulis:ChaoZhang, Tanggal: 2024-01-15 12:00:25
Tag:

img

Gambaran umum

Ini adalah strategi breakout sederhana yang menggunakan perbedaan antara dua EMA zero lag yang berbeda untuk melacak momentum naik atau turun dari suatu instrumen.

Logika Strategi

Strategi ini menggunakan dua indikator EMA yang dihitung khusus untuk mendapatkan perbedaan volatilitas, seperti yang ditunjukkan dalam rumus di bawah ini:

hJumper = math.max(src,ta.ema(src,lx))
lJumper = math.min(src,ta.ema(src,lx))  
dif = (hJumper / lJumper) - 1

Perbedaannya merespon langsung terhadap perubahan harga yang tajam tanpa keterlambatan.

Bila dif melintasi Band Bollinger Atas, sinyal masuk dipicu. Ketika dif melintasi Band Bollinger Tengah, sinyal keluar dipicu. Arah EMA dasar menentukan panjang atau pendek.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah respon cepat terhadap sinyal breakout tanpa lag. Hal ini dicapai dengan menggunakan dua EMA zero lag yang dihitung secara khusus. Hal ini memungkinkan strategi untuk menangkap peristiwa price breakout secara instan dan memasuki awal tren yang muncul.

Keuntungan lain adalah kesederhanaan strategi ini. hanya memiliki satu parameter lx. Lebih sedikit parameter membuat optimasi lebih mudah dan mengurangi risiko overfit.

Analisis Risiko

Risiko utama dari strategi ini adalah kemungkinan false breakout dari sinyal. False breakout berturut-turut dapat terjadi selama periode berkisar. Untuk mengurangi risiko ini, kita dapat meningkatkan Bollinger Band ganda untuk membuat sinyal lebih stabil.

Risiko lain adalah kemenangan/kerugian kecil yang sering terjadi selama pasar bergolak. Hal ini dapat dikurangi dengan menyesuaikan mekanisme keluar, misalnya dengan menetapkan tingkat harga stop loss atau take profit.

Arahan Optimasi

Berikut adalah beberapa arah strategi ini dapat dioptimalkan:

  1. Tambahkan indikator filter untuk memvalidasi sinyal masuk dan mengurangi sinyal palsu.

  2. Masukkan stop loss dan take profit untuk mengelola perdagangan dengan lebih baik.

  3. Cari konfirmasi volume perdagangan untuk menghindari kegagalan palsu tanpa komitmen volume.

  4. Mengadopsi adaptif Bollinger Bands untuk menyesuaikan parameter berdasarkan volatilitas pasar.

  5. Mengoptimalkan parameter secara dinamis berdasarkan pembelajaran mesin.

Kesimpulan

Singkatnya, strategi EMA volatilitas nol lag ini menangkap momentum harga dengan cepat dengan menggunakan EMA yang dihitung secara khusus tanpa lag. Optimasi langkah selanjutnya dapat mencakup penambahan filter, stop loss / profit, konfirmasi volume dll untuk membuat strategi kuat di berbagai lingkungan pasar.


/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © wbburgin

//@version=5
strategy("Zero-lag Volatility-Breakout EMA Trend Strategy",overlay=false)

tt1 = "If selected, the strategy will not close long or short positions until the opposite signal is received. This"+
 " exposes you to more risk but potentially could generate larger returns."

src = input.source(close,"Source")
lx = input.int(200,"EMA Difference Length")
bbmult = input.float(2.0,"Standard Deviation Multiple")
useBinaryStrategy = input.bool(true,"Use Binary Strategy",tooltip = tt1)

hJumper = math.max(src,ta.ema(src,lx))
lJumper = math.min(src,ta.ema(src,lx))

dif = (hJumper / lJumper) - 1

[bbm,bbu,bbl] = ta.bb(dif,lx,bbmult)

plot(dif,color=color.white,title="Zero lag EMA Difference")
plot(bbu,color=color.lime,title="Bollinger Top")
plot(bbl,color=color.red,title="Bollinger Bottom")
plot(bbm,color=color.yellow,title="Bollinger Middle")

sigEnter = ta.crossover(dif,bbu)
sigExit = ta.crossunder(dif,bbm)
emaBase = ta.ema(src,lx)
enterLong = sigEnter and emaBase > emaBase[1]
enterShort = sigEnter and emaBase < emaBase[1]

plotshape(enterLong,style=shape.labelup,location=location.bottom,color=color.green,size=size.tiny)
plotshape(enterShort,style=shape.labeldown,location=location.top,color=color.red,size=size.tiny)

if enterLong
    strategy.entry("Long",strategy.long)
if enterShort
    strategy.entry("Short",strategy.short)
if not useBinaryStrategy and sigExit
    strategy.close("Long")
    strategy.close("Short")

Lebih banyak