
Chiến lược này là một chiến lược tháo gỡ tự điều chỉnh cao kết hợp đường trung bình (EMA), vùng cung ứng và khối lượng giao dịch. Nó xác định xu hướng thị trường bằng cách xác nhận chéo của nhiều chỉ số kỹ thuật và giao dịch gần các vùng cung cấp quan trọng. Chiến lược sử dụng mục tiêu dừng lỗ và lợi nhuận động để thích nghi với biến động của thị trường thông qua chỉ số ATR.
Logic cốt lõi của chiến lược này dựa trên các yếu tố chính sau:
Cụ thể, khi 9 chu kỳ EMA tăng 3 chu kỳ liên tiếp, 15 chu kỳ EMA cũng có xu hướng tăng, và giá nằm trên khu vực nhu cầu, đồng thời đường trung bình khối lượng giao dịch 20 chu kỳ lớn hơn đường trung bình khối lượng giao dịch 50 chu kỳ, hệ thống sẽ phát ra nhiều tín hiệu.
Biện pháp kiểm soát rủi ro:
Đây là một hệ thống giao dịch hoàn chỉnh kết hợp nhiều công cụ phân tích kỹ thuật để tăng độ tin cậy giao dịch thông qua nhiều cơ chế xác nhận. Ưu điểm của chiến lược là khả năng thích ứng và quản lý rủi ro, nhưng cũng cần chú ý đến sự khác biệt trong hiệu suất trong các môi trường thị trường khác nhau.
/*backtest
start: 2024-02-08 00:00:00
end: 2025-02-06 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Optimized Scalping Strategy with EMA & Supply/Demand Zones", overlay=true)
// Inputs
ema9_length = input(9, title="EMA 9 Length")
ema15_length = input(15, title="EMA 15 Length")
higher_tf = input.timeframe("15", title="Higher Timeframe for Zones")
atr_mult = input(1.5, title="ATR Multiplier for Stop Loss")
risk_reward = input.float(1.2, title="Risk-Reward Ratio", options=[1.2, 1.3, 1.4])
// Calculating EMAs
ema9 = ta.ema(close, ema9_length)
ema15 = ta.ema(close, ema15_length)
// Function to detect supply & demand zones
get_zone(tf) =>
high_tf_high = request.security(syminfo.tickerid, tf, ta.highest(high, 50))
high_tf_low = request.security(syminfo.tickerid, tf, ta.lowest(low, 50))
[high_tf_high, high_tf_low]
[supply_zone, demand_zone] = get_zone(higher_tf)
// ATR-based Stop Loss and Take Profit
atr = ta.atr(14)
long_sl = close - (atr * atr_mult)
long_tp = close + (atr * atr_mult * risk_reward)
short_sl = close + (atr * atr_mult)
short_tp = close - (atr * atr_mult * risk_reward)
// Entry conditions with volume and trend confirmation
longCondition = ta.rising(ema9, 3) and ta.rising(ema15, 3) and close > demand_zone and ta.sma(volume, 20) > ta.sma(volume, 50)
shortCondition = ta.falling(ema9, 3) and ta.falling(ema15, 3) and close < supply_zone and ta.sma(volume, 20) > ta.sma(volume, 50)
// Exit conditions using ATR-based SL/TP with additional trend confirmation
exitLong = (close >= long_tp or close <= long_sl) and ta.falling(ema9, 2)
exitShort = (close <= short_tp or close >= short_sl) and ta.rising(ema9, 2)
// Executing trades with improved risk management
if longCondition
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", from_entry="Long", stop=long_sl, limit=long_tp)
if shortCondition
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", from_entry="Short", stop=short_sl, limit=short_tp)
// Plotting
plot(ema9, color=color.blue, title="EMA 9")
plot(ema15, color=color.red, title="EMA 15")
plot(supply_zone, color=color.orange, title="Supply Zone")
plot(demand_zone, color=color.green, title="Demand Zone")