Стратегия обратного отслеживания тренда - это краткосрочная стратегия торговли трендом, основанная на 15-минутных фьючерсах NQ. Она определяет торговые возможности с помощью фильтрации тренда и распознавания обратных моделей.
Стратегия основывается на следующих принципах:
В качестве основного фильтра тренда используйте 8-периодическую EMA с длинными сигналами выше EMA и короткими сигналами ниже EMA.
Определить конкретные шаблоны обратного движения свечей как сигналы входа, включая длинные зеленые свечи, за которыми следуют короткие красные свечи для длинных сигналов, и длинные красные свечи, за которыми следуют короткие зеленые свечи для коротких сигналов.
Точки входа устанавливаются вблизи высокого/низкого уровня переменной свечи, а уровни стоп-лосса находятся на высоком/низком уровне самой переменной свечи, что позволяет обеспечить эффективное соотношение риск/прибыль.
Подтвердить обратные сигналы с использованием правил связей свечей, например, открытая цена красной свечи выше тела последней зеленой свечи, тело полностью поглощает и т. Д., Чтобы отфильтровать шум.
Используйте стратегию только в определенные часы торговли, избегая волатильных периодов вокруг крупных роллов контрактов и т. д., чтобы предотвратить ненужные потери от ненормального движения цен.
К основным преимуществам этой стратегии относятся:
Простая и эффективная логика сигналов, которую легко понять и выполнить.
Основанный на тренде и переломе, избегая ударов из бушующих бычьих и медвежьих рынков.
Хороший контроль рисков с разумным размещением стоп-лосса для сохранения капитала.
Низкие потребности в данных подходят для различных платформ и инструментов.
Высокая частота торговли подходит для активной краткосрочной торговли.
Следует отметить некоторые риски:
Недостаточные возможности обратного движения и ограниченные сигналы.
Добавьте больше фильтров для логики комбинаций.
Волатильность в ночных и не основных сессиях.
Ограниченная гибкость оптимизации, учитывайте машинное обучение для улучшения настройки параметров.
Есть возможность оптимизировать:
Проверьте длинные периоды EMA для улучшения определения тренда.
Добавить фильтры индексов акций в качестве дополнительных фильтров тенденций.
Используйте методы машинного обучения для автоматической настройки уровня входа и остановки потерь.
Внедрить измененный по волатильности размер позиций и динамические остановки.
Исследование арбитража между активами для диверсификации системных рисков одного актива.
Стратегия отмены тренда предлагает очень практичную краткосрочную стратегию, которую легко реализовать с ограниченными параметрами и хорошим контролем личного риска. Она подходит для активных краткосрочных трейдеров на дневных торговых форумах.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © bdrex95 //@version=5 // Rob Reversal Strategy - Official // Using Rob Reversal Indicator: Original // Description // This indicator is based on the strategy created by Trader Rob on the NQ 15m chart. // // Timeframe for trading is 8:30am-1:15pm Central. // // Above the EMA line, look for a long position. You will have a short candle, then a long candle that opens below the short candle. It will have a lower high and a lower low. Once the long candle closes, your entry will be 1 tick above the wick (green line) and stop loss will be at the bottom of the bottom wick (red line). // // Below the EMA line, look for a short position. You will have a long candle, then a short candle that opens above the long candle. It will have a higher high and a higher low. Once the short candle closes, your entry will be 1 tick below the wick (green line) and stop loss will be at the top of the top wick (red line). // strategy("Trader Rob Reversal Strategy NQ 15min", shorttitle="Official Rob Rev Strat", overlay=true) //--- Session Input --- sess = input(defval = "0930-1415", title="Trading Session") t = time(timeframe.period, sess) sessionOpen = na(t) ? false : true flat_time = input(defval = "1515-1558", title="Close All Open Trades") ft = time(timeframe.period, flat_time) flatOpen = na(ft) ? false : true // Calculate start/end date and time condition startDate = input(timestamp('2018-12-24T00:00:00'),group = "ALL STRATEGY SETTINGS BELOW") finishDate = input(timestamp('2029-02-26T00:00:00'),group = "ALL STRATEGY SETTINGS BELOW") time_cond = true emaColor = input.color(color.orange, title="EMA Color") emaLength = input.int(8, title="EMA Length") emaInd = ta.ema(close, emaLength) rr = input(1.0,"Enter RR",group = "TP/SL CONDITION INPUTS HERE") sellShapeInput = input.string("Arrow", title="Sell Entry Shape", options=["Arrow", "Triangle"]) buyShapeInput = input.string("Arrow", title="Buy Entry Shape", options=["Arrow", "Triangle"]) sellShapeOption = switch sellShapeInput "Arrow" => shape.arrowdown "Triangle" => shape.triangledown buyShapeOption = switch buyShapeInput "Arrow" => shape.arrowup "Triangle" => shape.triangleup O = open C = close H = high L = low sellEntry = (C[1] > O[1]) and (C < O) and (H[1] < H) and (C < H[1]) and (C > L[1]) and (L > L[1]) and (C < emaInd) and sessionOpen and time_cond buyEntry = (C[1] < O[1]) and (C > O) and (H[1] > H) and (L[1] > L) and (C < H[1]) and (C > L[1]) and (C > emaInd) and sessionOpen and time_cond sellEntry_index = ta.valuewhen(sellEntry,bar_index,0) sellEntry_hi = ta.valuewhen(sellEntry,high,0) sellEntry_low = ta.valuewhen(sellEntry,low,0) buyEntry_index = ta.valuewhen(buyEntry,bar_index,0) buyEntry_hi = ta.valuewhen(buyEntry,high,0) buyEntry_lo = ta.valuewhen(buyEntry,low,0) plotshape(buyEntry, color = color.green, location = location.belowbar, style = buyShapeOption, size = size.small) plotshape(sellEntry, color = color.red, location = location.abovebar, style = sellShapeOption, size = size.small) plot(emaInd, color=emaColor) // Risk Management entry_price_long = (buyEntry_hi + syminfo.mintick) entry_price_short = (sellEntry_low - syminfo.mintick) long_sl_price = (buyEntry_lo-syminfo.mintick) short_sl_price = (sellEntry_hi + syminfo.mintick) long_tp_price = ((entry_price_long - long_sl_price)*rr) + entry_price_long short_tp_price = entry_price_short - ((short_sl_price - entry_price_short)*rr) long_sl_ticks = (entry_price_long - long_sl_price) / syminfo.mintick short_sl_ticks = (short_sl_price - entry_price_short) / syminfo.mintick long_tp_ticks = (long_tp_price - entry_price_long) / syminfo.mintick short_tp_ticks = (entry_price_short - short_tp_price) / syminfo.mintick // Positions if (buyEntry) strategy.entry("Long", strategy.long,stop = H + syminfo.mintick) if strategy.position_size > 0 strategy.exit("Long Ex","Long", loss = long_sl_ticks, profit = long_tp_ticks, comment_loss = "SL Long", comment_profit = "TP Long") if (sellEntry) strategy.entry("Short", strategy.short,stop = L - syminfo.mintick) if strategy.position_size < 0 strategy.exit("Short Ex","Short",loss = short_sl_ticks, profit = short_tp_ticks, comment_loss = "SL Short", comment_profit = "TP Short") // Cancel order if close beyond ema if (C < emaInd) strategy.cancel("Long") if (C > emaInd) strategy.cancel("Short") // Go flat at close (for futures funded account) if strategy.position_size > 0 and flatOpen strategy.close_all(comment = "EOD Flat") if strategy.position_size < 0 and flatOpen strategy.close_all(comment = "EOD Flat") //END