Прорывная стратегия обратной торговли реализует прорывную обратную торговлю в соответствии с конкретными тенденциями путем расчета индекса абсолютной силы и индекса MACD цен. Она относится к краткосрочным торговым стратегиям. Эта стратегия объединяет несколько индикаторов для оценки основных тенденций, среднесрочных тенденций и краткосрочных тенденций. Она проводит транзакции отслеживания тренда с помощью ориентированных на тренд и дополнительных сигналов подтверждения индикаторов.
Эта стратегия в основном опирается на индекс абсолютной силы и индекс MACD цен для реализации прорывной обратной торговли. Во-первых, она рассчитывает 9-периодные, 21-периодные и 50-периодные EMA цен для оценки основного направления тренда; затем она рассчитывает индекс абсолютной силы цен для отражения силы краткосрочных корректировок; наконец, она рассчитывает индекс MACD для оценки краткосрочного направления тренда. Она покупает, когда основная тенденция растет, и есть краткосрочная корректировка; она продает, когда основная тенденция снижается, и есть краткосрочное отскок.
В частности, основная восходящая тенденция сорта требует, чтобы 9-дневная EMA была выше 21-дневной EMA, а 21-дневная EMA - выше 50-дневной EMA. Критериями для оценки краткосрочных корректировок являются то, что разница индекса абсолютной силы меньше 0, а MACDDIFF меньше 0.
Стратегия имеет следующие преимущества:
Стратегия также сопряжена с некоторыми рисками:
В ответ на вышеупомянутые риски для улучшения стратегии могут использоваться такие методы, как оптимизация параметров, оценка показателей различных циклов, корректировка правил позиции для контроля единой потери, объединение большего количества показателей для фильтрации сигналов и повышение точности.
Стратегия может быть оптимизирована в следующих аспектах:
В целом, стратегия прорыва является относительно стабильной краткосрочной торговой стратегией. Она сочетает в себе многочасовые суждения о тренде, чтобы избежать ошибочных сделок на колеблющихся рынках. В то же время, совместное использование индикаторов также улучшает точность суждений.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Divergence Scalper [30MIN]", overlay=true , commission_value=0.04 ) message_long_entry = input("long entry message") message_long_exit = input("long exit message") message_short_entry = input("short entry message") message_short_exit = input("short exit message") //3x ema out9 = ta.ema(close,9) out21 = ta.ema(close,21) out50 = ta.ema(close,50) //abs absolute_str_formula( ) => top=0.0 bottom=0.0 if(close>close[1]) top:= nz(top[1])+(close/close[1]) else top:=nz(top[1]) if(close<=close[1]) bottom:= nz(bottom[1])+(close[1]/close) else bottom:=nz(bottom[1]) if (top+bottom/2>=0) 1-1/(1+(top/2)/(bottom/2)) abs_partial=absolute_str_formula() abs_final = abs_partial - ta.sma(abs_partial,50) //macd fast_length = input(title="Fast Length", defval=23) slow_length = input(title="Slow Length", defval=11) src = input(title="Source", defval=open) signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 50, defval = 6) sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"]) sma_signal = input.string(title="Signal Line MA Type", defval="SMA", options=["SMA", "EMA"]) // Calculating fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length) slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) hist = macd - signal long= abs_final > 0 and hist <0 and out9<out21 and out21<out50 short = abs_final <0 and hist >0 and out9>out21 and out21>out50 long_exit = abs_final <0 and hist >0 and out9>out21 and out21>out50 short_exit = abs_final > 0 and hist <0 and out9<out21 and out21<out50 strategy.entry("long", strategy.long, when = long and barstate.isconfirmed, alert_message = message_long_entry) strategy.entry("short", strategy.short, when = short and barstate.isconfirmed, alert_message = message_short_entry) strategy.close("long", when = long_exit and barstate.isconfirmed, alert_message = message_long_exit) strategy.close("short", when = short_exit and barstate.isconfirmed, alert_message = message_short_exit)