Slow Heiken Ashi Eksponensial Moving Average Trading Strategy

Penulis:ChaoZhang, Tanggal: 2023-12-22 13:18:34
Tag:

img

Gambaran umum

Strategi ini menggabungkan Heiken Ashi yang lambat dan rata-rata bergerak eksponensial untuk mengidentifikasi tren dan melakukan perdagangan panjang / pendek selama pasar tren.

Logika Strategi

Strategi ini menggunakan indikator berikut:

  1. Slow Heiken Ashi: Sebuah jenis lilin khusus yang dihitung menggunakan harga rata-rata bar sebelumnya, menyaring kebisingan pasar dan mengidentifikasi tren.

  2. Rata-rata Gerak Eksponensial: Rata-rata harga yang dihaluskan dengan bobot eksponensial yang diterapkan.

Logika perdagangan khusus adalah:

  1. Pergi panjang ketika harga melintasi EMA 100 hari, pergi pendek ketika harga melintasi EMA 100 hari.

  2. Posisi keluar ketika harga buka Heiken Ashi melintasi harga penutupan (sinyal pembalikan potensial). Posisi panjang ditutup pada crossover terbalik dan posisi pendek juga.

Analisis Keuntungan

Strategi ini menggabungkan sinyal tren-mengikuti dan pembalikan, menangkap perubahan harga besar selama pasar tren sambil menghindari kerugian yang berlebihan ketika tren membalik.

  1. EMA menentukan arah tren pasar secara keseluruhan, mencegah gangguan dari fluktuasi lokal.

  2. Heiken Ashi crossover memberikan deteksi dini dari potensi pembalikan.

  3. Adaptif KAMA filter mengurangi sinyal palsu.

Analisis Risiko

  1. Penurunan EMA yang tiba-tiba dan besar dapat menyebabkan kerugian yang lebih besar.

  2. Sinyal pembalikan mungkin terlambat.

  3. Parameter EMA yang tidak memadai mempengaruhi kinerja secara negatif. Parameter harus disesuaikan dengan produk dan lingkungan pasar yang berbeda.

Arahan Optimasi

  1. Masukkan indikator tambahan seperti MACD dan Bollinger Bands untuk menghindari kesalahan EMA/Heiken Ashi secara bersamaan.

  2. Mengoptimalkan parameter EMA secara dinamis berdasarkan volatilitas pasar, memperketat stop/meningkatkan toleransi slippage sesuai.

  3. Menggunakan pembelajaran mesin untuk menyesuaikan parameter secara otomatis, aturan filter dan meningkatkan ketahanan.

Kesimpulan

Strategi ini relatif sederhana dan praktis secara keseluruhan, menggabungkan elemen tren dan pembalikan. Dengan parameter dan pengendalian risiko yang disesuaikan dengan baik, ia mempertahankan potensi keuntungan yang layak. Peningkatan lebih lanjut dapat dibangun pada arah optimasi untuk membuat strategi lebih adaptif.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-19 10:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("NoScoobies Slow Heiken Ashi and Exponential Moving average Strategy 2.2", overlay=true)

//SHA
p=input(6,title='Period')
fastend=input(0.666,step=0.001)
slowend=input(0.0645,step=0.0001)
kama(close,amaLength)=>
    diff=abs(close[0]-close[1])
    signal=abs(close-close[amaLength])
    noise=sum(diff, amaLength)
    efratio=noise!=0 ? signal/noise : 1
    smooth=pow(efratio*(fastend-slowend)+slowend,2)
    kama=nz(kama[1], close)+smooth*(close-nz(kama[1], close))
    kama
hakamaper=1
Om=sma(open,p)
Hm=sma(high,p)
Lm=sma(low,p)
Cm=sma(close,p)
vClose=(Om+Hm+Lm+Cm)/4
vOpen= kama(vClose[1],hakamaper)
vHigh= max(Hm,max(vClose, vOpen))
vLow=  min(Lm,min(vClose, vOpen))
asize=vOpen-vClose
size=abs(asize)

//MMAR
exponential = input(true, title="Exponential MA")
src = close
ma05 = exponential ? ema(src, 05) : sma(src, 05)
ma10 = exponential ? ema(src, 10) : sma(src, 10)
ma15 = exponential ? ema(src, 15) : sma(src, 15)
ma20 = exponential ? ema(src, 20) : sma(src, 20)
ma25 = exponential ? ema(src, 25) : sma(src, 25)
ma30 = exponential ? ema(src, 30) : sma(src, 30)
ma35 = exponential ? ema(src, 35) : sma(src, 35)
ma40 = exponential ? ema(src, 40) : sma(src, 40)
ma45 = exponential ? ema(src, 45) : sma(src, 45)
ma50 = exponential ? ema(src, 50) : sma(src, 50)
ma55 = exponential ? ema(src, 55) : sma(src, 55)
ma60 = exponential ? ema(src, 60) : sma(src, 60)
ma65 = exponential ? ema(src, 65) : sma(src, 65)
ma70 = exponential ? ema(src, 70) : sma(src, 70)
ma75 = exponential ? ema(src, 75) : sma(src, 75)
ma80 = exponential ? ema(src, 80) : sma(src, 80)
ma85 = exponential ? ema(src, 85) : sma(src, 85)
ma90 = exponential ? ema(src, 90) : sma(src, 90)
ma95 = exponential ? ema(src, 95) : sma(src, 95)
ma100 = exponential ? ema(src, 100) : sma(src, 100)

longcondition=src>ma100
shortcondition=src<ma100
long=longcondition and size<size[1] and (vOpen<vClose or vOpen>vClose)
short=shortcondition and size<size[1] and (vOpen>vClose or vOpen<vClose)
close_long=longcondition and crossunder(open, vClose)
close_short=shortcondition and crossover(open, vClose)
_close=close_long[2] or close_short[2]

if long
    strategy.entry("LONG", strategy.long)
    strategy.close("LONG", when = _close)
if short
    strategy.entry("SHORT", strategy.short)
    strategy.close("SHORT", when = _close)
    


Lebih banyak