Эта стратегия в основном использует индикаторы EMA и стандартного отклонения для определения направления тренда с помощью перекрестных сигналов EMA и искать сигналы прорыва со стандартным отклонением для генерации сигналов покупки и продажи.
Стратегия состоит из трех основных частей:
Разница EMA (s2): вычислить разницу между быстрой EMA (ema_range) и медленной EMA (ema_watch) для определения направления тренда цен.
Канал стандартного отклонения (s3): создать верхний и нижний канал на основе разницы EMA с кратными стандартного отклонения.
Флаги и сигналы: генерируют сигналы покупки, когда цены проходят через верхний рельс снизу вверх, и сигналы продажи, когда цены проходят через нижний рельс сверху вниз.
С помощью этой комбинации индикаторов он может фиксировать направление тренда цен и генерировать сигналы купли и продажи в ключевых точках, что относится к типичной стратегии отслеживания тренда.
Стратегия имеет следующие преимущества:
Существуют также некоторые риски:
Решения:
Стратегия может быть оптимизирована в следующих направлениях:
В общем, это типичная стратегия отслеживания тренда, использующая EMA и стандартное отклонение для создания системы индикаторов и генерации сигналов флага в ключевых точках. Преимущества заключаются в поимке тенденций и избежании ложных сигналов со стандартным отклонением. Основные риски возникают из-за неправильных сигналов на рынках с диапазоном и рисков снижения из-за отсутствия стоп-лосса. Добавляя показатели суждения, оптимизируя параметры и добавляя стоп-лосс, стратегия может быть еще больше улучшена с точки зрения стабильности и прибыльности. В целом, стратегия рамочная и имеет большой потенциал для оптимизации.
/*backtest start: 2023-09-27 00:00:00 end: 2023-11-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("ROCKET_EWO", overlay=true) ema_range = input(5) ema_watch = input(13) inval_a = input(open) inval_b = input(open) ratio = input(0) max = 5000 s2=ta.ema(inval_a, ema_range) - ta.ema(inval_b, ema_watch) c_color=s2 <= ratio ? 'red' : 'lime' s3 = s2 + (ta.stdev(open, 1)) * 5.618 plotshape(s3, color=color.white, style=shape.cross, location=location.abovebar, size=size.auto, show_last=max, transp=30, offset= 0) cr = s2 > 0 alertcondition(cr, title='[Rocket_EWO]', message='[Rocket_EWO]') buy = s2 > 1 sell = s2 < -1 txt = "🚀" + "\n"+ "\n"+ "\n"+ "\n" plotshape(buy, color=color.lime, style=shape.triangleup, location=location.belowbar ,color=color.white, text=txt, size=size.normal, show_last=max, transp=1, offset= -3) plotshape(not buy, color=color.red, style=shape.triangledown, location=location.belowbar, size=size.normal, show_last=max, transp=1, offset= 0) signalperiod = time s4 = ta.cross(s2, 0) ? time : na colsig= s2 <= ratio ? color.red : color.lime plotshape((time==s4)?7000:na,color=color.blue, style=shape.flag, location=location.abovebar, size=size.large, transp=1) longCondition = ta.crossover(s2, 1.618) if (longCondition) strategy.entry("LONG Id", strategy.long) shortCondition = ta.crossunder(s2, 1.618) if (shortCondition) strategy.entry("SHORT Id", strategy.short) strategy.close("LONG Id", when = s2 < 0.218) // strategy.risk.max_drawdown(75, strategy.percent_of_equity)