Это торговая стратегия, основанная на перекрестном использовании 15-периодных и 50-периодных экспоненциальных скользящих средних (EMA). Стратегия реализует интеллектуальные уровни стоп-лосса и берущей прибыли для оптимизации контроля риска-вознаграждения. Она не только улавливает сигналы отмены тренда, но и автоматически корректирует торговые параметры на основе волатильности рынка, тем самым улучшая стабильность и прибыльность стратегии.
Основная логика основана на перекрестных сигналах между быстрой EMA (15 периодов) и медленной EMA (50 периодов). Длинный сигнал генерируется, когда быстрая линия пересекает над медленной линией, и короткий сигнал, когда быстрая линия пересекает ниже. Для оптимизации управления рисками стратегия использует динамический метод установки стоп-лосса, используя самую низкую цену открытия из предыдущих 2 свечей в качестве длинной стоп-лосс и самую высокую цену открытия в качестве короткой стоп-лосс. Цель прибыли устанавливается в два раза выше риска, обеспечивая благоприятное соотношение риск-вознаграждение. Стратегия использует 30% собственного капитала счета для торговли, что помогает контролировать риск.
Это хорошо структурированная стратегия EMA с четкой логикой. Сочетая классические методы технического анализа с современными методами управления рисками, стратегия достигает благоприятных характеристик риска и вознаграждения. Хотя есть возможности для оптимизации, основная структура демонстрирует хорошую практичность и расширяемость.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-11 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Cross - Any Direction", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=30) // Input for EMAs ema_short_length = input(15, title="Short EMA Length") ema_long_length = input(50, title="Long EMA Length") // Calculate EMAs ema_short = ta.ema(close, ema_short_length) ema_long = ta.ema(close, ema_long_length) // Plot EMAs plot(ema_short, color=color.blue, title="15 EMA") plot(ema_long, color=color.red, title="50 EMA") // Entry Conditions (Any EMA Cross) cross_condition = ta.crossover(ema_short, ema_long) or ta.crossunder(ema_short, ema_long) // Determine Trade Direction is_long = ta.crossover(ema_short, ema_long) is_short = ta.crossunder(ema_short, ema_long) // Stop Loss and Take Profit long_stop_loss = ta.lowest(open[1], 2) // Lowest open of the last 2 candles short_stop_loss = ta.highest(open[1], 2) // Highest open of the last 2 candles long_take_profit = close + 2 * (close - long_stop_loss) short_take_profit = close - 2 * (short_stop_loss - close) // Execute Trades if (cross_condition) if (is_long) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", "Long", stop=long_stop_loss, limit=long_take_profit) else if (is_short) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", "Short", stop=short_stop_loss, limit=short_take_profit) // Plot Stop Loss and Take Profit Levels plot(long_stop_loss, color=color.orange, title="Long Stop Loss", style=plot.style_circles, linewidth=2) plot(long_take_profit, color=color.green, title="Long Take Profit", style=plot.style_circles, linewidth=2) plot(short_stop_loss, color=color.orange, title="Short Stop Loss", style=plot.style_circles, linewidth=2) plot(short_take_profit, color=color.red, title="Short Take Profit", style=plot.style_circles, linewidth=2)