Strategi ini menghasilkan sinyal beli ketika garis beli EMA cepat melintasi garis beli SMA lambat, dan menggunakan stop trailing dinamis ATR untuk pengendalian risiko.
Menghitung EMA cepat dan garis beli SMA lambat, menghasilkan sinyal beli ketika garis cepat melintasi garis lambat dengan kekuatan beli tertentu.
Menghitung EMA cepat dan garis jual SMA lambat, menghasilkan sinyal jual ketika garis cepat melintasi di bawah garis lambat.
Menggunakan rata-rata ATR N hari dikalikan dengan koefisien sebagai dynamic trailing stop untuk pengendalian risiko.
Mulai strategi di periode backtest untuk pembelian dan penjualan eksekusi.
Mengoptimalkan parameter untuk setiap saham untuk menemukan nilai terbaik.
Strategi ini menggabungkan keuntungan dari penyeberangan MA untuk sinyal dan ATR trailing stop untuk pengendalian risiko. Optimasi parameter beradaptasi dengan karakteristik masing-masing produk, bertujuan untuk keuntungan yang lebih besar daripada membeli dan memegang dengan perdagangan yang tepat.
EMA cepat dan SMA lambat crossover mengidentifikasi tren dan menghasilkan sinyal.
ATR berhenti menyesuaikan berdasarkan volatilitas pasar, secara efektif mengendalikan risiko.
Mengoptimalkan untuk setiap saham meningkatkan profitabilitas.
Logika dan aturan yang sederhana, mudah diterapkan dan diverifikasi.
Lengkap fungsi backtest untuk memvalidasi strategi.
Mencari kinerja yang lebih stabil daripada membeli dan memegang.
Parameter yang dioptimalkan mungkin tidak berfungsi untuk masa depan, pengoptimalan ulang berkala mungkin diperlukan.
EMA dan SMA yang bersilang dapat menghasilkan sinyal yang salah atau tertinggal.
Hentikan ATR mungkin terlalu agresif, dapat melonggarkan stop loss range.
Frekuensi perdagangan yang rendah dapat kehilangan peluang yang baik.
Perlu mempertimbangkan dampak biaya perdagangan.
Lanjutkan pengujian kombinasi parameter yang berbeda untuk nilai optimal.
Cobalah memperkenalkan indikator lain untuk penyaringan sinyal.
Optimalkan periode ATR untuk menyeimbangkan sensitivitas stop loss.
Evaluasi efek dari relaksasi stop loss range.
Pertimbangkan pembelajaran mesin untuk optimasi parameter otomatis.
Studi efek dari peningkatan frekuensi perdagangan.
Strategi stop trailing moving average ini menggabungkan kekuatan MA crossover untuk sinyal dan ATR stop untuk pengendalian risiko. Optimasi parameter menyesuaikan dengan karakteristik masing-masing saham. Meskipun parameter yang dioptimalkan tidak memiliki jaminan, logika keseluruhan sederhana dan praktis untuk mengungguli beli dan tahan. Peningkatan lebih lanjut dan verifikasi bermanfaat, karena strategi ini memiliki nilai inspirasi yang baik.
/*backtest start: 2023-01-01 00:00:00 end: 2023-09-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //created by XPloRR 04-03-2018 strategy("XPloRR MA-Trailing-Stop Strategy",overlay=true, initial_capital=1000,default_qty_type=strategy.percent_of_equity,default_qty_value=100) testStartYear = input(2005, "Start Year") testStartMonth = input(1, "Start Month") testStartDay = input(1, "Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2050, "Stop Year") testStopMonth = input(12, "Stop Month") testStopDay = input(31, "Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriodBackground = input(title="Background", type=bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) ema1Period = input(12, "Fast EMA Buy") sma1Period = input(54, "Slow SMA Buy") strength1 = input(52, "Minimum Buy Strength") ema2Period = input(18, "Fast EMA Sell") sma2Period = input(55, "Slow SMA Sell") strength2 = input(100, "Minimum Sell Strength") delta = input(8, "Trailing Stop (#ATR)") testPeriod() => true ema1val=ema(close,ema1Period) sma1val=sma(close,sma1Period) ema1strength=10000*(ema1val-ema1val[1])/ema1val[1] ema2val=ema(close,ema2Period) sma2val=sma(close,sma2Period) ema2strength=10000*(ema2val-ema2val[1])/ema2val[1] plot(ema1val,color=blue,linewidth=1) plot(sma1val,color=orange,linewidth=1) plot(ema2val,color=navy,linewidth=1) plot(sma2val,color=red,linewidth=1) long=crossover(ema1val,sma1val) and (ema1strength > strength1) short=crossunder(ema2val,sma2val) and (ema2strength < -strength2) stopval=ema(close,6) atr=sma((high-low),15) inlong=0 buy=0 stop=0 if testPeriod() if (inlong[1]) inlong:=inlong[1] buy:=close stop:=iff((stopval>(stop[1]+delta*atr)),stopval-delta*atr,stop[1]) if (long) and (not inlong[1]) strategy.entry("buy",strategy.long) inlong:=close buy:=close stop:=stopval-delta*atr plot(buy,color=iff(close<inlong,red,lime),style=columns,transp=90,linewidth=1) plot(stop,color=iff((short or (stopval<stop)) and (close<inlong),red,lime),style=columns,transp=60,linewidth=1) if testPeriod() if (short or (stopval<stop)) and (inlong[1]) strategy.close("buy") inlong:=0 stop:=0 buy:=0