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 stop-loss động và quản lý vị trí thông minh. Chiến lược sử dụng 9 giai đoạn và 21 giai đoạn EMA crossover như các tín hiệu đầu vào chính, được xác nhận bởi chỉ số MACD, và tính toán stop-loss và mục tiêu lợi nhuận năng động thông qua ATR, đạt được 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 này sử dụng nhiều chỉ số kỹ thuật để xác định các cơ hội giao dịch. Thứ nhất, nó sử dụng chéo EMA ngắn hạn (9) và dài hạn (21) làm tín hiệu sơ bộ, tạo ra tín hiệu dài khi trung bình động ngắn hạn vượt qua trung bình động dài hạn, và ngược lại. Thứ hai, nó sử dụng chỉ số MACD tối ưu (6,13,4) để xác nhận tín hiệu, yêu cầu mối quan hệ đường MACD và đường tín hiệu phải phù hợp với hướng chéo EMA. Để kiểm soát rủi ro, chiến lược sử dụng chỉ số ATR để tính toán năng động khoảng cách dừng lỗ trong khi duy trì tỷ lệ rủi ro-lợi nhuận 1:2 cho các mục tiêu lợi nhuận. Ngoài ra, chiến lược thực hiện quản lý rủi ro dựa trên tỷ lệ phần trăm kích thước tài khoản, giới hạn rủi ro của mỗi giao dịch ở mức 1% của tài khoản.
Chiến lược kết hợp các chỉ số kỹ thuật cổ điển với các phương pháp quản lý rủi ro hiện đại để xây dựng một hệ thống giao dịch tần số cao hoàn chỉnh. Những lợi thế cốt lõi nằm trong xác nhận tín hiệu nhiều và kiểm soát rủi ro nghiêm ngặt, mặc dù nó vẫn đòi hỏi phải kiểm tra kỹ lưỡng và tối ưu hóa trong môi trường giao dịch trực tiếp. Thông qua cải tiến liên tục và tinh chỉnh quản lý rủi ro, chiến lược cho thấy hứa hẹn để duy trì hiệu suất ổn định trong các điều kiện thị trường khác nhau.
/*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