Strategi ini menggabungkan Heiken Ashi yang lambat dan rata-rata bergerak eksponensial untuk mengidentifikasi tren dan melakukan perdagangan panjang / pendek selama pasar tren.
Strategi ini menggunakan indikator berikut:
Slow Heiken Ashi: Sebuah jenis lilin khusus yang dihitung menggunakan harga rata-rata bar sebelumnya, menyaring kebisingan pasar dan mengidentifikasi tren.
Rata-rata Gerak Eksponensial: Rata-rata harga yang dihaluskan dengan bobot eksponensial yang diterapkan.
Logika perdagangan khusus adalah:
Pergi panjang ketika harga melintasi EMA 100 hari, pergi pendek ketika harga melintasi EMA 100 hari.
Posisi keluar ketika harga buka Heiken Ashi
Strategi ini menggabungkan sinyal tren-mengikuti dan pembalikan, menangkap perubahan harga besar selama pasar tren sambil menghindari kerugian yang berlebihan ketika tren membalik.
EMA menentukan arah tren pasar secara keseluruhan, mencegah gangguan dari fluktuasi lokal.
Heiken Ashi crossover memberikan deteksi dini dari potensi pembalikan.
Adaptif KAMA filter mengurangi sinyal palsu.
Penurunan EMA yang tiba-tiba dan besar dapat menyebabkan kerugian yang lebih besar.
Sinyal pembalikan mungkin terlambat.
Parameter EMA yang tidak memadai mempengaruhi kinerja secara negatif. Parameter harus disesuaikan dengan produk dan lingkungan pasar yang berbeda.
Masukkan indikator tambahan seperti MACD dan Bollinger Bands untuk menghindari kesalahan EMA/Heiken Ashi secara bersamaan.
Mengoptimalkan parameter EMA secara dinamis berdasarkan volatilitas pasar, memperketat stop/meningkatkan toleransi slippage sesuai.
Menggunakan pembelajaran mesin untuk menyesuaikan parameter secara otomatis, aturan filter dan meningkatkan ketahanan.
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)