Стратегия - это система отслеживания трендов, основанная на пересечении индексовых движущихся сред (EMA), которая сочетает в себе управление динамическими позициями и контроль риска. Стратегия использует пересекающие сигналы быстрой и медленной EMA для идентификации рыночных тенденций, а также для динамического регулирования размеров сделок с помощью расчета процентного риска и использования движущихся потерь для защиты прибыли.
Основная логика стратегии основана на движущихся средних индикаторов двух различных циклов (по умолчанию 9 и 21). Система производит много сигналов, когда быстрая ЭМА вверх пересекает медленную ЭМА; когда быстрая ЭМА вниз пересекает медленную ЭМА, система уравнивается. Размер каждой сделки рассчитывается динамически на основе фиксированного риска (по умолчанию 1%) от общего объема счета, при этом устанавливается стоп-ограничение и процент движущихся потерь, основанные на рисковом соотношении возврата.
Это полная торговая система, которая сочетает классические методы технического анализа с современными идеями управления рисками. Стратегия контролирует риск с помощью динамического управления позициями и мобильных остановок, используя при этом EMA для перекрестного захвата трендовых возможностей. Хотя существуют некоторые внутренние ограничения, с помощью рекомендуемого направления оптимизации можно еще больше улучшить стабильность и адаптивность стратегии. Стратегия особенно подходит для поиска долгосрочных трендовых операций с управляемым риском.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-18 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bitcoin Exponential Profit Strategy", overlay=true) // User settings fastLength = input.int(9, title="Fast EMA Length", minval=1) slowLength = input.int(21, title="Slow EMA Length", minval=1) riskPercent = input.float(1, title="Risk % Per Trade", step=0.1) / 100 rewardMultiplier = input.float(2, title="Reward Multiplier (R:R)", step=0.1) trailOffsetPercent = input.float(0.5, title="Trailing Stop Offset %", step=0.1) / 100 // Calculate EMAs fastEMA = ta.ema(close, fastLength) slowEMA = ta.ema(close, slowLength) // Plot EMAs plot(fastEMA, color=color.blue, title="Fast EMA") plot(slowEMA, color=color.red, title="Slow EMA") // Account balance and dynamic position sizing capital = strategy.equity riskAmount = capital * riskPercent // Define Stop Loss and Take Profit Levels stopLossLevel = close * (1 - riskPercent) takeProfitLevel = close * (1 + rewardMultiplier * riskPercent) // Trailing stop offset trailOffset = close * trailOffsetPercent // Entry Condition: Bullish Crossover if ta.crossover(fastEMA, slowEMA) positionSize = riskAmount / math.max(close - stopLossLevel, 0.01) // Prevent division by zero strategy.entry("Long", strategy.long, qty=positionSize) strategy.exit("TakeProfit", from_entry="Long", stop=stopLossLevel, limit=takeProfitLevel, trail_offset=trailOffset) // Exit Condition: Bearish Crossunder if ta.crossunder(fastEMA, slowEMA) strategy.close("Long") // Labels for Signals if ta.crossover(fastEMA, slowEMA) label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_up) if ta.crossunder(fastEMA, slowEMA) label.new(bar_index, high, "SELL", color=color.red, textcolor=color.white, style=label.style_label_down)