Эта стратегия представляет собой систему, основанную на перекрестных показателях экспоненциальной скользящей средней (EMA), включающую динамическое размещение позиций и управление рисками. Она использует быстрые и медленные перекрестные сигналы EMA для выявления рыночных тенденций при динамической корректировке размеров сделок с помощью процентных расчетов риска и использования остановок для защиты прибыли.
Основная логика основана на двух EMA с различными периодами (дефолт 9 и 21). Долгий сигнал входа генерируется, когда быстрая EMA пересекает более медленной EMA, в то время как позиции закрываются, когда быстрая EMA пересекает ниже медленной EMA. Каждый размер сделки динамически рассчитывается на основе фиксированного процентного риска (дефолт 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)