
Chiến lược này là một hệ thống giao dịch định lượng tần số cao dựa trên các chỉ số EMA và MACD, kết hợp với ATR dừng động và quản lý vị trí thông minh. Chiến lược sử dụng giao dịch EMA 9 chu kỳ và 21 chu kỳ làm tín hiệu đầu vào chính, kết hợp với MACD để xác nhận tín hiệu, tính toán mục tiêu dừng lỗ và thu lợi nhuận thông qua ATR động, để thực hiện một vòng giao dịch hoàn chỉnh và hệ thống kiểm soát rủi ro.
Chiến lược sử dụng một tổ hợp các chỉ số kỹ thuật đa tầng để xác định cơ hội giao dịch. Đầu tiên, sử dụng đường chéo đường trung bình EMA của chu kỳ ngắn ((9) và chu kỳ dài ((21) làm tín hiệu ban đầu, tạo ra tín hiệu làm nhiều khi đường trung bình ngắn hạn đi qua đường trung bình dài hạn, ngược lại tạo ra tín hiệu làm trống. Tiếp theo, sử dụng chỉ số MACD tối ưu ((6,13,4) làm tín hiệu xác nhận, yêu cầu mối quan hệ vị trí của đường MACD với đường tín hiệu phù hợp với hướng chéo EMA. Về mặt kiểm soát rủi ro, chiến lược sử dụng chỉ số ATR để tính toán động khoảng cách dừng lỗ và duy trì tỷ lệ lợi nhuận rủi ro 1: 2 để đặt mục tiêu lợi nhuận.
Chiến lược này xây dựng một hệ thống giao dịch tần số cao hoàn chỉnh bằng cách kết hợp các chỉ số kỹ thuật cổ điển và phương pháp quản lý rủi ro hiện đại. Điểm mạnh cốt lõi của chiến lược là xác nhận nhiều tín hiệu và kiểm soát rủi ro nghiêm ngặt, nhưng vẫn cần được thử nghiệm và tối ưu hóa đầy đủ trong môi trường thực tế.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("High-Frequency Trade Script with EMA, MACD, and ATR-based TP/SL", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=2, initial_capital=100000)
// إعداد المؤشرات
emaBuy = ta.ema(close, 9) // EMA بفترة قصيرة للشراء
emaSell = ta.ema(close, 21) // EMA بفترة أطول للبيع
[macdLine, signalLine, _] = ta.macd(close, 6, 13, 4) // MACD بفترات قصيرة
atr = ta.atr(14) // حساب مؤشر ATR
// إعداد نسبة وقف الخسارة وجني الأرباح
stopLossATRMultiplier = 1.5 // تقليل وقف الخسارة لـ 1.5 * ATR
riskToRewardRatio = 2.0 // نسبة العائد إلى المخاطرة 1:2
// إعداد إدارة المخاطر
riskPercentage = 1.0 // المخاطرة كـ 1% من رأس المال
capital = strategy.equity // إجمالي رأس المال
riskAmount = capital * (riskPercentage / 100) // مقدار المخاطرة
// شروط إشارات الشراء: تقاطع EMA القصير فوق الطويل و MACD أعلى من Signal
longCondition = ta.crossover(emaBuy, emaSell) and macdLine > signalLine
// شروط إشارات البيع: تقاطع EMA القصير تحت الطويل و MACD أسفل Signal
shortCondition = ta.crossunder(emaBuy, emaSell) and macdLine < signalLine
// --- تنفيذ أوامر الشراء والبيع تلقائيًا مع وقف الخسارة وجني الأرباح --- //
// تعريف خطوط وقف الخسارة وجني الأرباح
var line longStopLossLine = na
var line longTakeProfitLine = na
var line shortStopLossLine = na
var line shortTakeProfitLine = na
if (longCondition)
longEntryPrice = close // سعر الدخول للشراء
longStopLoss = longEntryPrice - (atr * stopLossATRMultiplier) // وقف الخسارة بناءً على ATR
longTakeProfit = longEntryPrice + ((longEntryPrice - longStopLoss) * riskToRewardRatio) // جني الأرباح بنسبة 1:2
// حساب حجم الصفقة بناءً على مقدار المخاطرة
positionSize = riskAmount / (longEntryPrice - longStopLoss) // حجم العقد
// إدخال أمر الشراء
strategy.entry("Buy", strategy.long, qty=positionSize)
// إعداد أوامر وقف الخسارة وجني الأرباح
strategy.exit("Take Profit/Stop Loss", "Buy", stop=longStopLoss, limit=longTakeProfit)
// رسم الخطوط لجني الأرباح ووقف الخسارة
// longStopLossLine := line.new(bar_index, longStopLoss, bar_index + 1, longStopLoss, color=color.red, width=1, style=line.style_dashed) // خط وقف الخسارة
// longTakeProfitLine := line.new(bar_index, longTakeProfit, bar_index + 1, longTakeProfit, color=color.green, width=1, style=line.style_dashed) // خط جني الأرباح
if (shortCondition)
shortEntryPrice = close // سعر الدخول للبيع
shortStopLoss = shortEntryPrice + (atr * stopLossATRMultiplier) // وقف الخسارة بناءً على ATR
shortTakeProfit = shortEntryPrice - ((shortStopLoss - shortEntryPrice) * riskToRewardRatio) // جني الأرباح بنسبة 1:2
// حساب حجم الصفقة بناءً على مقدار المخاطرة
positionSize = riskAmount / (shortStopLoss - shortEntryPrice) // حجم العقد
// إدخال أمر البيع
strategy.entry("Sell", strategy.short, qty=positionSize)
// إعداد أوامر وقف الخسارة وجني الأرباح
strategy.exit("Take Profit/Stop Loss", "Sell", stop=shortStopLoss, limit=shortTakeProfit)
// رسم الخطوط لجني الأرباح ووقف الخسارة
// shortStopLossLine := line.new(bar_index, shortStopLoss, bar_index + 1, shortStopLoss, color=color.red, width=1, style=line.style_dashed) // خط وقف الخسارة
// shortTakeProfitLine := line.new(bar_index, shortTakeProfit, bar_index + 1, shortTakeProfit, color=color.green, width=1, style=line.style_dashed) // خط جني الأرباح
// --- رسم مؤشرات منفصلة --- //
plot(emaBuy, title="EMA Buy (9)", color=color.green, linewidth=2) // EMA الشراء
plot(emaSell, title="EMA Sell (21)", color=color.red, linewidth=2) // EMA البيع
plot(macdLine, title="MACD Line", color=color.blue, linewidth=1) // MACD Line
plot(signalLine, title="Signal Line", color=color.orange, linewidth=1) // Signal Line