Краткосрочная стратегия разворота тренда


Дата создания: 2024-01-16 14:44:35 Последнее изменение: 2024-01-16 14:44:35
Копировать: 0 Количество просмотров: 698
1
Подписаться
1617
Подписчики

Краткосрочная стратегия разворота тренда

Обзор

Тренд-трекерская стратегия - это краткосрочная стратегия торговли трендами, основанная на 15-минутных фьючерсах NQ. Она ищет торговые возможности с помощью определения тенденционных колебаний и обратных моделей. Эта стратегия проста и эффективна и подходит для активных трейдеров с короткой линией.

Стратегический принцип

Эта стратегия основана на следующих принципах:

  1. Используя 8-циклическую EMA в качестве основного индикатора фильтрации тенденций, EMA вверху - положительный, EMA внизу - отрицательный.

  2. Идентифицируйте определенные K-линейные обратные формы в качестве входных сигналов, включая длинные и короткие солнечные линии после долгого солнечного света и короткие солнечные линии после долгого солнечного света. Эти формы указывают на то, что тенденция может начаться.

  3. Входная точка устанавливается вблизи высокой или низкой точки обратной K-линии, а остановка устанавливается в высокой или низкой точке самой обратной K-линии для достижения эффективного коэффициента возврата риска.

  4. Эффективность обратного сигнала определяется с помощью отношений K-линий, например, если цены на открытие К-линии выше, чем на предыдущих K-линейных объектах, которые полностью содержат правила фильтрации шума.

  5. Стратегия, которая действует только в определенные торговые периоды, избегая особых периодов, таких как месяцы смены основных контрактов на рынке, чтобы предотвратить ненужные потери в результате аномальной ситуации.

Анализ преимуществ

Основные преимущества этой стратегии:

  1. Стратегические сигналы просты, эффективны и просты в освоении.

  2. По мнению экспертов, в этом случае рынок “не сможет выдержать двойную атаку” - рынок голубей и рынок медведей.

  3. Управление рисками, разумная стоп-лосс, благоприятные условия для управления капиталом.

  4. Не требует больших объемов данных и подходит для различных программ и платформ.

  5. Высокая частота торгов, подходящая для инвесторов, которые любят активные сделки на коротких линиях.

Риски и противодействие

В этой стратегии есть определенные риски, главные из которых заключаются в следующем:

  1. Недостаточные шансы на обратную форму, меньше сигналов. Правило обратного суждения может быть надлежащим образом ослаблено.

  2. При наличии ложных прорывов можно добавить дополнительные фильтрующие показатели для совместного суждения.

  3. Ночные диски и нетрадиционное время имеют нестабильность. Можно установить, что они будут работать только в американское время торгов.

  4. Возможности оптимизации параметров ограничены. Можно попробовать технологии, такие как машинное обучение, чтобы найти лучшие параметры.

Направление оптимизации

В этой стратегии есть место для оптимизации, и основные направления включают:

  1. Тестирование параметров EMA на более длинные циклы для улучшения оценки тенденций.

  2. Добавление индекса фондового рынка в качестве дополнительного индикатора фильтрации тенденций.

  3. Автоматическая оптимизация входных и остановочных точек с использованием технологий, таких как машинное обучение.

  4. Повышение позиций, основанных на волатильности, и механизм динамической корректировки стоп-убытков.

  5. Попытка арбитража по нескольким разновидностям, чтобы еще больше рассеять системный риск по одной разновидности.

Подвести итог

Тренд-трекерская обратная стратегия в целом является очень практичной стратегией короткой линии, имеет небольшое количество простых параметров, легко управляется, хорошо контролирует личные риски и подходит для активных коротких трейдеров. У стратегии есть определенное пространство для оптимизации, вложение определенной энергии в исследования и разработки может сделать ее даже подходящей для среднего и долгого финансирования.

Исходный код стратегии
/*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