Strategi Triple SMA adalah strategi trend-mengikuti berdasarkan tiga purata bergerak mudah (SMA) dari tempoh yang berbeza untuk pengenalan trend dan entri. Ia boleh menjejaki trend secara automatik dan menambah kedudukan semasa penurunan trend.
Strategi ini menggunakan tiga SMA dari tempoh yang berbeza sebagai penunjuk trend utama, termasuk SMA 200-, 400-, dan 600-periode. Apabila harga di atas ketiga-tiga SMA, ia menunjukkan trend menaik, dan sebaliknya untuk trend menurun.
Untuk entri, strategi ini menggabungkan penggunaan harga penutupan dan osilator StochClose. Isyarat dihasilkan hanya apabila harga sejajar dengan arah tiga SMAs
Stop loss ditetapkan untuk harga melintasi di bawah SMA paling perlahan.
Strategi ini membolehkan piramida sehingga 10 kali. Tiga mengambil tahap keuntungan dibina di 1%, 2% dan 6% keuntungan.
Kelebihan terbesar strategi Triple SMA ialah dengan menggabungkan tiga SMA dari tempoh yang berbeza, ia dapat mengenal pasti arah trend dan kekuatan dengan lebih baik.
Di samping itu, menggabungkan StochClose untuk analisis overbought / oversold mengelakkan mengambil isyarat di sekitar titik pembalikan trend yang berpotensi.
Stop loss berdasarkan SMA paling perlahan juga memaksimumkan keupayaan strategi untuk menunggang trend sambil meminimumkan berhenti awal.
Membolehkan piramida membolehkan strategi untuk terus mengambil bahagian dalam trend.
Risiko utama strategi ini adalah bahawa tiga SMA mungkin tidak sepenuhnya menyaring semua isyarat palsu. Jika harga gagal membentuk trend selepas menembusi SMA dan menarik balik tidak lama lagi, kerugian boleh berlaku. Ini sering berlaku di sekitar tahap sokongan / rintangan utama.
Juga, StochClose itu sendiri boleh menghasilkan isyarat yang salah, yang membawa kepada kemasukan yang tidak sesuai, terutamanya di pasaran yang berbeza.
Untuk mengurangkan risiko ini, parameter seperti tempoh SMA boleh diselaraskan. Lebih banyak penunjuk boleh ditambah, seperti KDJ dan MACD, untuk meningkatkan kualiti isyarat.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Tambah/penyesuaian tempoh SMA untuk mencari nilai optimum yang sesuai dengan produk tertentu
Tambah penunjuk tambahan seperti KDJ dan MACD untuk penapisan gabungan dan entri yang lebih baik
Mengoptimumkan standard stop loss dan mengambil keuntungan untuk lebih sesuai dengan julat turun naik pasaran
Mengoptimumkan tetapan piramida untuk mencari strategi piramida yang ideal
Uji di seluruh produk yang berbeza dan buat parameter menyesuaikan diri dengan lebih banyak produk
Kesimpulannya, strategi Triple SMA adalah pendekatan trend yang sangat praktikal. Dengan menggabungkan tiga kali SMA dan StochClose, ia mencapai pengenalan trend yang kukuh dan mengelakkan isyarat 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)