
Chiến lược này là hệ thống giao dịch tần suất cao dựa trên tín hiệu giao nhau của đường trung bình động hàm mũ (EMA) ngắn hạn. Nó kết hợp cơ chế theo dõi biến động thích ứng với quản lý vị thế năng động và kiểm soát rủi ro chặt chẽ để nhanh chóng nắm bắt những biến động ngắn hạn của thị trường. Chiến lược này áp dụng cho các khung thời gian ngắn hơn như 1 phút hoặc 5 phút và phù hợp với các nhà giao dịch năng động tìm kiếm cơ hội giao dịch thường xuyên.
Logic cốt lõi của chiến lược này dựa trên các tín hiệu giao nhau của EMA nhanh (3 kỳ) và EMA chậm (8 kỳ). Khi đường nhanh cắt xuống dưới đường chậm, tín hiệu dài sẽ được tạo ra; khi đường nhanh cắt xuống dưới đường chậm, tín hiệu ngắn sẽ được tạo ra. Chiến lược này sử dụng chỉ báo ATR để đo lường sự biến động của thị trường và thiết lập mục tiêu dừng lỗ và lợi nhuận một cách linh hoạt. Hệ thống hỗ trợ hai chế độ: giao dịch theo khối lượng hợp đồng cố định và quản lý vị thế động dựa trên vốn chủ sở hữu tài khoản. Ở chế độ vị thế động, rủi ro của mỗi giao dịch được kiểm soát trong phạm vi 0,5% giá trị tài khoản. Chiến lược này sử dụng tỷ lệ rủi ro-lợi nhuận là 1,2 lần và kết hợp 1,5 lần ATR làm khoảng cách theo dõi cho lệnh dừng lỗ di động.
Chiến lược này xây dựng một hệ thống giao dịch tần suất cao hoàn chỉnh bằng cách kết hợp các tín hiệu giao nhau EMA ngắn hạn và quản lý rủi ro năng động. Ưu điểm của chiến lược này là phản ứng nhanh và kiểm soát rủi ro chặt chẽ, nhưng cũng cần lưu ý đến các vấn đề như tín hiệu sai và chi phí giao dịch. Thông qua việc tối ưu hóa và điều chỉnh thông số liên tục, các chiến lược có thể thích ứng tốt hơn với các môi trường thị trường khác nhau và cải thiện hiệu quả cũng như tính ổn định của giao dịch.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("High-Frequency EMA Scalping Strategy - Adjustable Contracts", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)
// Input parameters
fastEmaLength = input.int(3, title="Fast EMA Length", minval=1)
slowEmaLength = input.int(8, title="Slow EMA Length", minval=1)
atrLength = input.int(10, title="ATR Length", minval=1)
riskRewardRatio = input.float(1.2, title="Risk/Reward Ratio", minval=1)
useDynamicPositionSizing = input.bool(false, title="Use Dynamic Position Sizing?")
fixedContracts = input.int(1, title="Number of Contracts (if Fixed)", minval=1) // Fixed number of contracts
// Calculate EMA values
fastEma = ta.ema(close, fastEmaLength)
slowEma = ta.ema(close, slowEmaLength)
// Calculate ATR for dynamic stop-loss and take-profit
atr = ta.atr(atrLength)
// Dynamic position sizing (if enabled)
capital = strategy.equity
riskPerTrade = capital * 0.005 // Risk 0.5% per trade
dynamicTradeQty = riskPerTrade / (atr * 1.5)
// Use fixed or dynamic position sizing
tradeQty = useDynamicPositionSizing ? dynamicTradeQty : fixedContracts
// Entry conditions
longCondition = ta.crossover(fastEma, slowEma)
shortCondition = ta.crossunder(fastEma, slowEma)
// Long trade execution
if longCondition
risk = atr * 1.0
reward = risk * riskRewardRatio
strategy.entry("Long", strategy.long, qty=tradeQty)
strategy.exit("Trailing Stop Long", from_entry="Long", trail_points=atr * 1.5, trail_offset=atr * 1.0)
strategy.exit("Take Profit", from_entry="Long", limit=close + reward, stop=close - risk)
// Short trade execution
if shortCondition
risk = atr * 1.0
reward = risk * riskRewardRatio
strategy.entry("Short", strategy.short, qty=tradeQty)
strategy.exit("Trailing Stop Short", from_entry="Short", trail_points=atr * 1.5, trail_offset=atr * 1.0)
strategy.exit("Take Profit", from_entry="Short", limit=close - reward, stop=close + risk)
// Plot EMA lines for reference
plot(fastEma, color=color.blue, title="Fast EMA")
plot(slowEma, color=color.red, title="Slow EMA")