Strategi ini menggabungkan indikator SuperTrend dan indikator MACD untuk menangkap tren kecil untuk keuntungan. Ini menggunakan indikator SuperTrend untuk menentukan tren pasar saat ini dan indikator MACD sebagai kondisi tambahan untuk masuk dan keluar. Logika strategi jelas dan mudah dipahami dan diimplementasikan.
Dengan menggabungkan indikator SuperTrend dan indikator MACD, strategi ini menangkap tren kecil sambil juga mempertimbangkan kesinambungan tren, menjadikannya strategi yang relatif komprehensif dan seimbang. Kekuatan strategi ini terletak pada logika yang jelas, kemudahan pemahaman dan implementasi, dan penggunaan indikator MACD jangka waktu yang lebih lama sebagai kondisi tambahan untuk secara efektif menyaring sinyal palsu. Namun, strategi ini juga memiliki beberapa risiko, seperti potensi perdagangan yang sering terjadi di pasar yang berbelit-belit, sensitivitas terhadap pengaturan parameter, dan kurangnya langkah-langkah stop-loss. Untuk mengatasi risiko ini, perbaikan dapat dilakukan dengan menambahkan lebih banyak kondisi penyaring, mengoptimalkan parameter, menggabungkan stop-loss, dll. Secara keseluruhan, strategi ini dapat berfungsi sebagai kerangka strategi dasar yang, dengan optimasi dan perbaikan terus-menerus, 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")