この戦略は,ATRダイナミックストップロストとインテリジェントポジションマネジメントを組み合わせたEMAおよびMACD指標に基づく高周波定量取引システムである.この戦略は,MACD指標によって確認された9期および21期EMAクロスオーバーを主要なエントリー信号として使用し,ATRを通じてストップロストと利益目標をダイナミックに計算し,完全な取引ループとリスク管理システムを達成する.
この戦略は,取引機会を特定するために複数の技術指標を使用している.まず,短期 (9) および長期 (21) EMAクロスオーバーを初期信号として使用し,短期移動平均が長期移動平均を上回るときに長信号を生成する.次に,シグナル確認のために最適化されたMACD指標 (6,13,4) を使用し,MACDラインと信号ラインの関係がEMAクロス方向に一致することを要求する.リスク管理のために,戦略はATR指標を使用して,利益目標の1:2のリスク・リターン比を維持しながら,ストップ-ロスの距離を動的に計算する.さらに,戦略は,アカウントサイズパーセントに基づいてリスク管理を実装し,各取引のリスクをアカウントの1%に制限する.
この戦略は,完全な高周波取引システムを構築するために,古典的な技術指標と近代的なリスク管理方法を組み合わせています. 基本的な利点は,複数の信号の確認と厳格なリスク管理にあります. しかし,まだライブ取引環境で徹底的なテストと最適化が必要です. 継続的な改善とリスク管理の精進を通じて,この戦略は,異なる市場条件で安定したパフォーマンスを維持する約束を示しています.
/*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