Strategi ini menggabungkan penunjuk SuperTrend dan penunjuk MACD untuk menangkap trend kecil untuk keuntungan. Ia menggunakan penunjuk SuperTrend untuk menentukan trend pasaran semasa dan penunjuk MACD sebagai syarat tambahan untuk masuk dan keluar. Logik strategi jelas dan mudah difahami dan dilaksanakan.
Dengan menggabungkan penunjuk SuperTrend dan penunjuk MACD, strategi ini menangkap trend kecil sambil juga mempertimbangkan kesinambungan trend, menjadikannya strategi yang agak komprehensif dan seimbang. Kekuatan strategi ini terletak pada logiknya yang jelas, kemudahan pemahaman dan pelaksanaan, dan penggunaan penunjuk MACD jangka masa yang lebih lama sebagai syarat tambahan untuk menapis isyarat palsu dengan berkesan. Walau bagaimanapun, strategi ini juga mempunyai beberapa risiko, seperti potensi perdagangan yang kerap di pasaran yang berbelit-belit, kepekaan terhadap tetapan parameter, dan kekurangan langkah-langkah stop-loss. Untuk menangani risiko ini, penambahbaikan boleh dibuat dengan menambahkan lebih banyak keadaan penapis, mengoptimumkan parameter, menggabungkan stop-loss, dll. Secara keseluruhan, strategi ini boleh berfungsi sebagai kerangka strategi asas yang, dengan pengoptimuman dan peningkatan berterusan, berpotensi menjadi strategi yang menguntungkan secara konsisten.
/*backtest start: 2024-02-01 00:00:00 end: 2024-02-29 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Samsuga supertrend", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) atrPeriod = input.int(7, "ATR Length", minval = 1) factor = input.float(1.0, "Factor", minval = 0.01, step = 0.01) [supertrend, direction] = ta.supertrend(factor, atrPeriod) supertrend := barstate.isfirst ? na : supertrend upTrend = plot(direction <= 0 ? supertrend : na, "Up Trend", color = color.green, style = plot.style_linebr) downTrend = plot(direction <= 0 ? na : supertrend, "Down Trend", color = color.red, style = plot.style_linebr) bodyMiddle = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle",display = display.none) longcondition = direction[1] > direction shortCondition = direction[1] < direction macdp1 = 3 macdp2=10 macdp3=6 [macdLine, signalLine, histLine] =request.security(symbol = syminfo.tickerid, timeframe = "30",expression = ta.macd(close,macdp1,macdp2,macdp3),lookahead=barmerge.lookahead_on) // plot(macdLine, title = "MACD", color = #2962FF) // plot(signalLine, title = "Signal", color = #FF6D00) // 8, 21, 5 // 8,13,9 // 12,26,9 // 1--> 3, 17, 5 // 3, 10, 16 // log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0])) // /////////----------------METHOD 1-----------------//////////////// // if(longcondition) // if(strategy.opentrades>0) // strategy.close("Long","Prev Exit", immediately = true) // if( histLine[0] > 0.1) // strategy.entry(id= "Long", direction=strategy.long, comment = "update long") // else if(shortCondition and strategy.openprofit<=0.1) // strategy.close("Long",comment = "Close",immediately = true) // /////////----------------METHOD 2-----------------//////////////// // if(longcondition) // if(histLine[0] > 0) // strategy.entry(id= "Long", direction=strategy.long, comment = "update long" ) // strategy.exit("Long", loss = close*0.2) // else if(shortCondition ) // strategy.close("Long",comment = "Close",immediately = true) // /////////----------------METHOD 3-----------------//////////////// // log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0])) if(longcondition) if(histLine[0] > 0) strategy.close("Short",comment = "E-S", alert_message = "E-S",disable_alert = true) strategy.entry(id= "Long", direction=strategy.long, comment = "L",alert_message = "L") else if(shortCondition) if(histLine[0] < 0) strategy.close("Long",comment = "E-L",alert_message = "E-L",disable_alert = true) strategy.entry(id= "Short", direction=strategy.short, comment = "S",alert_message = "S")