
Đây là một chiến lược đa đầu dựa trên ngưỡng hỗ trợ và xu hướng EMA. Chiến lược này tìm kiếm cơ hội đầu vào tốt nhất bằng cách xác định xu hướng thị trường và ngưỡng hỗ trợ quan trọng, kết hợp với ATR dừng động và lợi nhuận phân đoạn để thực hiện quản lý rủi ro. Chiến lược này tập trung vào việc giá quay trở lại ngưỡng hỗ trợ trong xu hướng tăng, tăng tỷ lệ thành công của giao dịch bằng cách thiết lập tỷ lệ lợi nhuận rủi ro hợp lý.
Chiến lược sử dụng 100 chu kỳ EMA như một chỉ số định hướng, xác nhận xu hướng tăng khi giá nằm trên EMA. Đồng thời tính giá thấp nhất trong 10 chu kỳ làm mức hỗ trợ ngắn hạn, khi giá quay trở lại gần mức hỗ trợ ((các mức hỗ trợ +0.5*ATR) khi tìm kiếm cơ hội nhập. Sử dụng phương pháp lợi nhuận phân đoạn sau khi nhập, 50% vị trí được đóng cửa với 5 lần ATR, vị trí còn lại được đóng cửa hoàn toàn với 10 lần ATR, đồng thời thiết lập 1 lần ATR làm dừng động. Rủi ro của mỗi giao dịch được kiểm soát trong vòng 3% tổng giá trị tài khoản, để thực hiện quản lý rủi ro bằng cách tính toán kích thước vị trí động.
Chiến lược này tạo ra một hệ thống giao dịch hoàn chỉnh bằng cách kết hợp theo dõi xu hướng và điều chỉnh vị trí hỗ trợ và quản lý rủi ro bằng cách thu lợi nhuận và dừng lỗ động. Ưu điểm cốt lõi của chiến lược là cơ chế kiểm soát rủi ro và logic giao dịch rõ ràng, nhưng vẫn cần phải tối ưu hóa các tham số và điều kiện nhập cảnh liên tục trong thực tế để thích ứng với môi trường thị trường khác nhau.
/*backtest
start: 2024-02-22 00:00:00
end: 2024-05-30 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Ultra-Profitable SMC Long-Only Strategy", shorttitle="Ultra_Profit_SMC", overlay=true)
// User Inputs
emaTrendLength = input.int(100, title="Trend EMA Length") // Faster EMA to align with aggressive trends
supportLookback = input.int(10, title="Support Lookback Period") // Short-term support zones
atrLength = input.int(14, title="ATR Length")
atrMultiplierSL = input.float(1.0, title="ATR Multiplier for Stop-Loss")
atrMultiplierTP1 = input.float(5.0, title="ATR Multiplier for TP1")
atrMultiplierTP2 = input.float(10.0, title="ATR Multiplier for TP2")
riskPercent = input.float(3.0, title="Risk per Trade (%)", step=0.1)
// Calculate Indicators
emaTrend = ta.ema(close, emaTrendLength) // Trend EMA
supportLevel = ta.lowest(low, supportLookback) // Support Level
atr = ta.atr(atrLength) // ATR
// Entry Conditions
isTrendingUp = close > emaTrend // Price above Trend EMA
nearSupport = close <= supportLevel + (atr * 0.5) // Price near support zone
longCondition = isTrendingUp and nearSupport
// Dynamic Stop-Loss and Take-Profit Levels
longStopLoss = supportLevel - (atr * atrMultiplierSL)
takeProfit1 = close + (atr * atrMultiplierTP1) // Partial Take-Profit at 5x ATR
takeProfit2 = close + (atr * atrMultiplierTP2) // Full Take-Profit at 10x ATR
// Position Sizing
capital = strategy.equity
tradeRisk = riskPercent / 100 * capital
positionSize = tradeRisk / (close - longStopLoss)
// Execute Long Trades
if (longCondition)
strategy.entry("Ultra Long", strategy.long, qty=positionSize)
// Exit Conditions
strategy.exit("Partial Exit", from_entry="Ultra Long", limit=takeProfit1, qty_percent=50) // Exit 50% at TP1
strategy.exit("Full Exit", from_entry="Ultra Long", limit=takeProfit2, qty_percent=100, stop=longStopLoss) // Exit the rest at TP2
// Plot Indicators
plot(emaTrend, color=color.blue, title="Trend EMA")
plot(supportLevel, color=color.green, title="Support Level", linewidth=2)