Strategi Triple SMA adalah strategi trend-following yang didasarkan pada tiga moving average (SMA) sederhana dari periode yang berbeda untuk identifikasi tren dan entri.
Strategi ini menggunakan tiga SMA dari periode yang berbeda sebagai indikator tren utama, termasuk SMA 200-, 400-, dan 600-periode.
Untuk entri, strategi ini menggabungkan penggunaan harga penutupan dan osilator StochClose. Sinyal dihasilkan hanya ketika harga sejajar dengan arah tiga SMAs
Stop loss diatur untuk harga melintasi di bawah SMA paling lambat.
Strategi ini memungkinkan piramida hingga 10 kali. Tiga tingkat mengambil keuntungan dibangun di 1%, 2% dan 6% keuntungan.
Keuntungan terbesar dari strategi Triple SMA adalah bahwa dengan menggabungkan tiga SMA dari periode yang berbeda, ia dapat lebih baik mengidentifikasi arah tren dan kekuatan.
Selain itu, menggabungkan StochClose untuk analisis overbought/oversold menghindari mengambil sinyal di sekitar titik pembalikan tren potensial.
Stop loss berdasarkan SMA paling lambat juga memaksimalkan kemampuan strategi untuk mengendarai tren sambil meminimalkan stop out prematur.
Mengizinkan piramida memungkinkan strategi untuk terus berpartisipasi dalam tren.
Risiko utama dari strategi ini adalah bahwa triple SMA mungkin tidak sepenuhnya menyaring semua sinyal palsu. Jika harga gagal membentuk tren setelah menembus SMA dan menarik kembali segera, kerugian dapat terjadi. Ini sering terjadi di sekitar level support/resistance utama.
Selain itu, StochClose sendiri dapat menghasilkan sinyal yang salah, yang mengarah pada entri yang tidak tepat, terutama di pasar berkisar.
Untuk mengurangi risiko ini, parameter seperti periode SMA dapat disesuaikan. Lebih banyak indikator dapat ditambahkan, seperti KDJ dan MACD, untuk meningkatkan kualitas sinyal.
Strategi dapat dioptimalkan dalam aspek berikut:
Tambahkan/sunting periode SMA untuk menemukan nilai optimal yang sesuai dengan produk tertentu
Tambahkan indikator tambahan seperti KDJ dan MACD untuk penyaringan kombinasi dan entri yang lebih baik
Mengoptimalkan standar stop loss dan take profit agar lebih sesuai dengan rentang volatilitas pasar
Mengoptimalkan pengaturan piramida untuk menemukan strategi piramida yang ideal
Uji di berbagai produk dan buat parameter adaptif untuk lebih banyak produk
Strategi Triple SMA adalah pendekatan yang sangat praktis untuk mengikuti tren. Dengan menggabungkan triple SMA dan StochClose, strategi ini mencapai identifikasi tren yang solid dan menghindari sinyal palsu.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Tripla Sma with entries based on sma price closes ", shorttitle="TRIPLE SMA STRATEGY", overlay=true) ////resolution="" len = input(200, minval=1, title="sma 1 length") len1 = input(400, minval=1, title="sma 2 length") len2 = input(600, minval=1, title="sma 3 length") src = input(close, title="Source") //////////////////////////////////////////// smma = 0.0 smma := na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len up = smma > smma [1] down =smma < smma[1] mycolor = up ? #64b5f6 : down ? #d32f2f : na fastma = sma(hl2, 1) fastplot = plot(fastma, color=#000000, transp=100, title='sma on candle') slowplot = plot(smma, color=mycolor, transp=55, title='sma1') //////////////////////////////////////////// smma1 = 0.0 smma1 := na(smma1[1]) ? sma(src, len1) : (smma1[1] * (len1 - 1) + src) / len1 up2 = smma1 > smma1 [1] down2 =smma1 < smma1[1] mycolor2 = up2 ? #64b5f6 : down2 ? #d32f2f : na slowplot2 = plot(smma1, color=mycolor2, transp=45, title='sma2') //////////////////////////////////////////// smma2 = 0.0 smma2 := na(smma2[1]) ? sma(src, len2) : (smma2[1] * (len2 - 1) + src) / len2 up3 = smma2 > smma2 [1] down3 =smma2 < smma2[1] mycolor3 = up3 ? #64b5f6 : down3 ? #d32f2f : na slowplot3 = plot(smma2, color=mycolor3, transp=35, title='sma3') //////////////////////////////////////////////////////////////////////////////////////// //Fill gaps fillData = smma > fastma fillData2 = smma < fastma fillDtat = smma1 > smma fillDtat2 = smma1 < smma fillDat = smma2 > smma1 fillDat2 = smma2 < smma1 fillCol1 = fillData ? #ef5350 : fillData2 ? #64b5f6 : na fillCol2 = fillDtat ? #ef5350 : fillDtat2 ? #64b5f6 : na fillCol3 = fillDat ? #ef5350 : fillDat2 ? #64b5f6 : na fill(slowplot, fastplot, color=fillCol1, transp=90, title="sma1 fill") fill(slowplot, slowplot2, color=fillCol2, transp=80, title="sma2 fill") fill(slowplot2, slowplot3, color=fillCol3, transp=60, title="sma3 fill") uc = (close > smma) and (close > smma1) dc = (close < smma) and (close < smma1) barColor = uc ? #64b5f6 : dc ? #e91e63 : #b2b5be barcolor(color=barColor) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //StochClose from @trendinvestpro periods = input(50, minval=1, title="length for the oscillator") smooth = input(5, minval=1, title="oscillator smoothing") hhc=highest(close,periods) llc=lowest(close,periods) StochClose = sma((close-llc)/(hhc-llc)*100, smooth) shortline = input(95, minval=0, title="signal when oscillator crosses above") longline = input(5, minval=0, title="signal when oscillator crosses below") //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// longs = close > smma2 shorts = close < smma2 long = longs == true and crossunder(StochClose, longline) short = shorts == true and crossover(StochClose, shortline) stoplong = close < smma and close < smma1 and close < smma2 stopshort = close > smma and close > smma1 and close > smma2 p1 = strategy.position_avg_price / 100 / syminfo.mintick maxx = input(2500, title="max orders filled on a day", minval=0) takeprofit1 = input(1, title="take profit level 1", minval=0) takeprofit2 = input(2, title="take profit level 2", minval=0) takeprofit3 = input(6, title="take profit level 3", minval=0) takeprofitqt1 = input(30, title="take profit quantity first", minval=0) takeprofitqt2 = input(30, title="take profit quantity second", minval=0) takeprofitqt3 = input(30, title="take profit quantity third", minval=0) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////Strategy entries///////////////////////////////////////////////////////////////////////////////////////// // strategy.risk.max_intraday_filled_orders(maxx) strategy.entry("long", strategy.long, when=long) strategy.exit("tpl1", "long", qty_percent = takeprofitqt1, profit = takeprofit1 * p1) strategy.exit("tpl2", "long", qty_percent = takeprofitqt2, profit = takeprofit2 * p1) strategy.exit("tpl3", "long", qty_percent = takeprofitqt3, profit = takeprofit3 * p1) strategy.close("long", when=stoplong == true) strategy.entry("short", strategy.short, when=short) strategy.exit("tpl1", "short", qty_percent = takeprofitqt1, profit = takeprofit1 * p1) strategy.exit("tpl2", "short", qty_percent = takeprofitqt2, profit = takeprofit2 * p1) strategy.exit("tpl3", "short", qty_percent = takeprofitqt3, profit = takeprofit3 * p1) strategy.close("short", when=stopshort == true)