Стратегия прорыва тренда — длинная тень


Дата создания: 2023-11-15 16:43:17 Последнее изменение: 2023-11-15 16:43:17
Копировать: 2 Количество просмотров: 665
1
Подписаться
1617
Подписчики

Стратегия прорыва тренда — длинная тень

Эта стратегия определяет направление текущего тренда путем расчета соотношения длины солнечной тени K-линии, идентифицирует тренд в сочетании со средней реальной длиной ATR, открывает позиции в обратном направлении в точке прорыва, устанавливает стоп-стоп для убытков и улавливает краткосрочные тенденции.

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

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

Конкретная логика стратегии:

  1. Вычислить длину нижней тени K-линии: close-low
  2. Вычислить длину верхнего тени K-линии: high-open ((высочайшая цена - цена открытия)
  3. Выбрать максимальное значение оттенка и оттенка как длину оттенка
  4. Вычислить длину объекта K-линии: high-low (высокая цена - низкая цена)
  5. Расчет соотношения длины тени и длины объекта
  6. Когда соотношение больше чем 0,5 и нижняя тень больше, чем верхняя тень, рассматривается как нисходящая тенденция, устанавливается многоочковая игра
  7. Когда соотношение больше 0,5, а верхний оттенок больше нижнего оттенока, расценить как тенденцию к повышению, установить пустой вход
  8. При входе в игру необходимо одновременно определить, является ли длина объекта K-линии большей, чем 0,75 кратная средняя истинная амплитуда ATR, чтобы избежать неэффективного прорыва.
  9. После входа в рынок установлена стоп-стоп-убыток, стоп-убыток умножен на коэффициент входной цены, а стоп-стоп - на коэффициент входной цены умноженный на коэффициент, что позволяет получить убыток в соотношении 2:1

Основная логика стратегии заключается в том, чтобы открывать позиции в обратном направлении, идентифицируя прорыв в тренде, и оптимизировать прибыль после установки стоп-лосса.

Стратегические преимущества

  1. Используйте соотношение солнечных и теневых лучей для определения направления тенденции, отличия высоки
  2. Эффективный прорыв в сочетании с показателями ATR, чтобы избежать ложных сигналов
  3. Настройка стоп-стоп для управления рисками
  4. Достижение соотношения прибыли и убытка в 2:1 в соответствии с критериями количественной торговли
  5. Кратколинейные сделки с высоковолатильными акциями
  6. Логика стратегии проста, ясна и понятна

Стратегический риск

  1. При резких колебаниях цен на акции стоп-лосс может быть нарушен, что приводит к увеличению убытков.
  2. Эффекты тесно связаны с параметрами, которые требуют оптимизации
  3. Если тенденция изменится, могут быть убытки
  4. Одновременное расширение пределов остановки и остановки увеличивает вероятность потери
  5. Неудачный прорыв может привести к большим потерям.

Риск можно контролировать с помощью разумного остановки, оптимизации параметров и своевременного остановки.

Оптимизация стратегии

Стратегия может быть оптимизирована в следующих аспектах:

  1. Оптимизация параметров соотношения солнца и тени, чтобы найти оптимальные значения
  2. Оптимизация параметров ATR для определения наилучшей длины K-линий
  3. Оптимизация коэффициента остановки убытков для достижения оптимального соотношения риска и прибыли
  4. Увеличение управления позициями, например, постепенное увеличение позиций
  5. Увеличение отслеживания потерь и сохранение прибыли
  6. В сочетании с другими показателями фильтрация входных сигналов
  7. Оптимизация периода отсчета, тестирование эффективности различных этапов рынка

Максимальная эффективность стратегии достигается с помощью многостороннего тестирования и оптимизации.

В целом, эта стратегия является эффективно устойчивой стратегией прорыва короткой линии, которая использует краткосрочные колебания цен для получения прибыли путем идентификации тенденций и контроля риска. После оптимизации она может стать ключевой частью количественной торговли.

Исходный код стратегии
/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ondrej17

//@version=4
strategy("longWickstrategy", overlay=true )
 
// Inputs
st_yr_inp = input(defval=2020, title='Backtest Start Year')
st_mn_inp = input(defval=01, title='Backtest Start Month')
st_dy_inp = input(defval=01, title='Backtest Start Day')
en_yr_inp = input(defval=2025, title='Backtest End Year')
en_mn_inp = input(defval=01, title='Backtest End Month')
en_dy_inp = input(defval=01, title='Backtest End Day')
sltp_inp = input(defval=0.8, title='N - % offset for N*SL and (2N)*TP')/100
 
// Dates
start = timestamp(st_yr_inp, st_mn_inp, st_dy_inp,00,00)
end = timestamp(en_yr_inp, en_mn_inp, en_dy_inp,00,00)
canTrade = time >= start and time <= end
// Indicators Setup


 
// Strategy Calcuations
lowerWick = (open > close) ? close-low : open - low
upperWick = (open > close) ? high-open : high-close
wickLength = max(lowerWick,upperWick)
candleLength = high-low
wickToCandleRatio = wickLength / candleLength
entryFilterCandleLength = candleLength > 0.75*atr(48)


// Entries and Exits
 
longCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick > upperWick and canTrade and strategy.position_size == 0
shortCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick < upperWick and canTrade and strategy.position_size == 0

strategy.entry("pendingLong", strategy.long, limit=low+wickLength/2, when = longCondition)
strategy.entry("pendingShort", strategy.short, limit=high-wickLength/2, when = shortCondition)

longStop = strategy.position_size > 0 ? strategy.position_avg_price*(1-sltp_inp) : na
longTP = strategy.position_size > 0 ? strategy.position_avg_price*(1+2*sltp_inp) : na
shortStop = strategy.position_size < 0 ? strategy.position_avg_price*(1+sltp_inp) : na
shortTP = strategy.position_size < 0 ? strategy.position_avg_price*(1-2*sltp_inp) : na

strategy.exit("longSLTP","pendingLong", stop=longStop, limit = longTP)
strategy.exit("shortSLTP","pendingShort", stop=shortStop, limit = shortTP)  
 

plot(longStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(shortStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(longTP, color=color.green, style=plot.style_linebr, linewidth=2)
plot(shortTP, color=color.green, style=plot.style_linebr, linewidth=2)

plotLongCondition = longCondition ? high+abs(open-close) : na
plot(plotLongCondition, style=plot.style_circles, linewidth=4, color=color.green)
plotShortCondition = shortCondition ? high+abs(open-close) : na
plot(plotShortCondition, style=plot.style_circles, linewidth=4, color=color.red)