Стратегия торговли обратным прорывом


Дата создания: 2023-10-25 12:09:40 Последнее изменение: 2023-10-25 12:38:23
Копировать: 0 Количество просмотров: 678
1
Подписаться
1617
Подписчики

Стратегия торговли обратным прорывом

Обзор

Стратегия обратного прорыва - это торговая стратегия, основанная на непрерывном прорыве цены вверх или вниз. Эта стратегия устанавливает циклы непрерывного роста или падения цены, и после того, как цена формирует определенную тенденцию, она совершает обратную операцию для получения прибыли.

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

Эта стратегия состоит из следующих частей:

  1. Установите длину цикла, в котором цена будет расти и падать, то есть consecutiveBarsUp и consecutiveBarsDown, чтобы вызвать торговый сигнал после того, как текущая циклическая тенденция цен достигнет установленной длины.

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

  3. Настройка временного диапазона отслеживания, ограничивающего политику только в течение времени отслеживания через time_cond.

  4. Настройка ежедневных торговых часов, ограничивающая выпуск торговых сигналов черезtimetobuy только в установленный период времени.

  5. Когда цикл непрерывного роста цены достигает установленной длины, появляется сигнал плюс, через strategy.long; когда цикл непрерывного падения цены достигает установленной длины, появляется сигнал минус, через strategy.short。

  6. Можно установить стоп-стоп и стоп-стоп-цену. При перезагрузке устанавливается кратковременный стоп, при погашении устанавливается длительный стоп. При перезагрузке устанавливается длительный стоп, при погашении устанавливается кратковременный стоп.

  7. Можно настроить уведомления при отправке торговых сигналов.

  8. В зависимости от вышеуказанных параметров и цены, в соответствии с условиями, сигналы о прибыли или дефиците.

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

Эта стратегия обратного прорыва имеет следующие преимущества:

  1. Захватывая точки переворота цены, обратная операция может принести хорошую прибыль. Когда цена формирует тренд, проводить обратную операцию, можно получить прибыль, когда цена переворачивается.

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

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

  4. Настраиваемые сообщения для автоматизации торгов. Настраиваемые сообщения для отправки торговых сигналов, совместимые с использованием автоматизированной системы торгов.

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

Анализ рисков

В этой стратегии также есть некоторые риски, о которых следует помнить:

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

  2. Если реверсия не очевидна, то она не очень эффективна. Если тенденция не очевидна, то реверсия не очень эффективна, поэтому ее следует использовать с осторожностью.

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

  4. Слишком высокая частота сделок может привести к рыночной падению. Если установлен слишком короткий цикл, частота сделок слишком высока, что не способствует долгосрочной стабильной прибыли.

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

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

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

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

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

  3. Включение количественных показателей для определения. В сочетании с такими показателями, как изменение объема сделки, избегайте ошибочных сигналов, возникающих исключительно на основе формы K-линии.

  4. Многовидовое комбинирование. Применение стратегии для различных сортов для комбинирования может рассеять риск для одного сорта.

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

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

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

Исходный код стратегии
/*backtest
start: 2023-10-17 00:00:00
end: 2023-10-24 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// Strategy
strategy("Up/Down Strategy - Contrarian", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)

consecutiveBarsUp = input(1, title='Consecutive Bars Up')
consecutiveBarsDown = input(1, title='Consecutive Bars Down')

price = close

ups = 0.0
ups := price > price[1] ? nz(ups[1]) + 1 : 0

dns = 0.0
dns := price < price[1] ? nz(dns[1]) + 1 : 0

// Strategy Backtesting
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time, title='Backtesting End Date')

time_cond  = true

//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = true
timetoclose = true

// Stop Loss & Take Profit Tick Based
enablesltp = input(false, title='Enable Take Profit & Stop Loss')
stopTick = input(5.0, title='Stop Loss Ticks', type=input.float) / 100
takeTick = input(10.0, title='Take Profit Ticks', type=input.float) / 100

longStop = strategy.position_avg_price - stopTick
shortStop = strategy.position_avg_price + stopTick
shortTake = strategy.position_avg_price - takeTick
longTake = strategy.position_avg_price + takeTick

plot(strategy.position_size > 0 and enablesltp ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesltp ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enablesltp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enablesltp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")

// Alert messages
message_enterlong  = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")

// Strategy Execution
if (dns >= consecutiveBarsDown) and time_cond and timetobuy
    strategy.entry("Long", strategy.long, stop = high + syminfo.mintick, alert_message = message_enterlong)
    
if (ups >= consecutiveBarsUp) and time_cond and timetobuy
    strategy.entry("Short", strategy.short, stop = low + syminfo.mintick, alert_message = message_entershort)
    
if strategy.position_size < 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closelong)
if strategy.position_size > 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closeshort)
    
if strategy.position_size < 0 and enablesltp and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size > 0 and enablesltp and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)