Esta estrategia es un sistema de negociación cuantitativo de alta frecuencia basado en los indicadores EMA y MACD, combinado con el stop-loss dinámico ATR y la gestión inteligente de posiciones.
La estrategia emplea múltiples indicadores técnicos para identificar oportunidades comerciales. En primer lugar, utiliza cruces de EMA de corto período (9) y largo período (21) como señales preliminares, generando señales largas cuando el promedio móvil a corto plazo cruza por encima del promedio móvil a largo plazo, y viceversa. En segundo lugar, utiliza un indicador MACD optimizado (6,13,4) para la confirmación de la señal, lo que requiere que la línea MACD y la relación de la línea de señal se alineen con la dirección cruzada de la EMA. Para el control de riesgos, la estrategia utiliza el indicador ATR para calcular dinámicamente las distancias de stop-loss manteniendo una relación riesgo-recompensación de 1: 2 para los objetivos de ganancia. Además, la estrategia implementa una gestión del riesgo basada en el tamaño de la cuenta, limitando el riesgo de cada operación al 1% de la cuenta.
La estrategia combina indicadores técnicos clásicos con métodos modernos de gestión de riesgos para construir un sistema de negociación de alta frecuencia completo. Las principales ventajas se encuentran en la confirmación de múltiples señales y el estricto control de riesgos, aunque todavía requiere pruebas y optimización exhaustivas en entornos comerciales en vivo.
/*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