
Đây là một chiến lược theo dõi xu hướng hai chiều dựa trên SMMA. Chiến lược này sử dụng giá và sự giao thoa của SMMA để tạo ra tín hiệu đa luồng và kết hợp với ATR dừng động và mục tiêu lợi nhuận cố định để quản lý rủi ro và lợi nhuận. Chiến lược được thiết kế đơn giản và hiệu quả, phù hợp với các giao dịch theo dõi xu hướng trong các chu kỳ thời gian khác nhau.
Trung tâm của chiến lược là để nắm bắt sự thay đổi của xu hướng thông qua 17 chu kỳ SMMA và giá cả. Khi giá vượt qua SMMA, mở vị trí đầu nhiều; khi giá vượt qua SMMA, mở vị trí đầu không.
Đây là một chiến lược theo dõi xu hướng được thiết kế hợp lý, nắm bắt xu hướng qua SMMA, sử dụng ATR để kiểm soát rủi ro, kết hợp với lợi nhuận quản lý thu nhập của mục tiêu lợi nhuận cố định. Lập luận của chiến lược rõ ràng, thực hiện đơn giản, có khả năng vận hành và khả năng mở rộng tốt. Mặc dù có thể không hoạt động tốt trong thị trường xung đột, nhưng bằng hướng tối ưu hóa được đề xuất, bạn có thể nâng cao hơn nữa sự ổn định và thích ứng của chiến lược.
/*backtest
start: 2024-02-20 00:00:00
end: 2025-02-17 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SMMA 17 Crossover Strategy (Long & Short, ATR SL & Fixed TP)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)
// 🚀 SMMA Calculation
smmaLength = 17
smma = 0.0
smma := na(smma[1]) ? ta.sma(close, smmaLength) : (smma[1] * (smmaLength - 1) + close) / smmaLength
// 📈 ATR Calculation (For Dynamic Stop-Loss)
atrLength = 14
atr = ta.rma(ta.tr(true), atrLength)
// 🔥 Long Entry Condition
longCondition = ta.crossover(close, smma) // ✅ Price crosses above SMMA
// 🔄 Long Exit Condition
longExit = ta.crossunder(close, smma) // ✅ Price crosses below SMMA
// 📉 ATR-Based Stop-Loss (Dynamic) for Long
longStopLoss = smma - (atr * 0.75) // ✅ Stop Loss below SMMA
// 🏆 Fixed Take Profit for Long (1150 Points)
var float longEntryPrice = na
var float longTakeProfit = na
if longCondition
longEntryPrice := close
longTakeProfit := longEntryPrice + 1150 // ✅ TP 1150 points above entry
// 🔥 Short Entry Condition
shortCondition = ta.crossunder(close, smma) // ✅ Price crosses BELOW SMMA (Short trade)
// 🔄 Short Exit Condition
shortExit = ta.crossover(close, smma) // ✅ Price crosses ABOVE SMMA (Close Short trade)
// 📉 ATR-Based Stop-Loss (Dynamic) for Short
shortStopLoss = smma + (atr * 0.75) // ✅ Stop Loss above SMMA
// 🏆 Fixed Take Profit for Short (1500 Points) - Updated from 2000
var float shortEntryPrice = na
var float shortTakeProfit = na
if shortCondition
shortEntryPrice := close
shortTakeProfit := shortEntryPrice - 1500 // ✅ TP 1500 points below entry (Updated)
// 📊 Plot SMMA (For Visualization)
plot(smma, title="SMMA (17)", color=color.blue)
// 🚀 Long Entry (Allow Multiple)
if longCondition
strategy.entry("Long", strategy.long)
// 🛑 Long Exit Conditions (Whichever Comes First)
strategy.exit("Long TP/SL", from_entry="Long", stop=longStopLoss, limit=longTakeProfit)
if longExit
strategy.close("Long")
// 🚀 Short Entry (Allow Multiple)
if shortCondition
strategy.entry("Short", strategy.short)
// 🛑 Short Exit Conditions (Whichever Comes First)
strategy.exit("Short TP/SL", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit)
if shortExit
strategy.close("Short")