Chiến lược này kết hợp chỉ số SuperTrend và chỉ số MACD để nắm bắt các xu hướng nhỏ để kiếm lợi nhuận. Nó sử dụng chỉ số SuperTrend để xác định xu hướng thị trường hiện tại và chỉ số MACD như một điều kiện phụ trợ cho bước vào và bước ra.
Bằng cách kết hợp chỉ số SuperTrend và chỉ số MACD, chiến lược này nắm bắt các xu hướng nhỏ trong khi cũng xem xét tính liên tục của xu hướng, làm cho nó trở thành một chiến lược tương đối toàn diện và cân bằng. Sức mạnh của chiến lược nằm trong logic rõ ràng, dễ hiểu và thực hiện và sử dụng chỉ số MACD khung thời gian dài hơn như một điều kiện phụ để lọc hiệu quả các tín hiệu sai. Tuy nhiên, chiến lược cũng có một số rủi ro, chẳng hạn như tiềm năng giao dịch thường xuyên trong các thị trường hỗn loạn, nhạy cảm với cài đặt tham số và thiếu các biện pháp dừng lỗ. Để giải quyết những rủi ro này, có thể cải thiện bằng cách thêm nhiều điều kiện lọc, tối ưu hóa các tham số, kết hợp dừng lỗ, v.v. Nhìn chung, chiến lược này có thể phục vụ như một khuôn khổ chiến lược cơ bản mà, với tối ưu hóa và cải thiện liên tục, có tiềm năng trở thành một chiến lược có lợi nhuận nhất quán.
/*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")