
Стратегия обратного прорыва - это торговая стратегия, основанная на непрерывном прорыве цены вверх или вниз. Эта стратегия устанавливает циклы непрерывного роста или падения цены, и после того, как цена формирует определенную тенденцию, она совершает обратную операцию для получения прибыли.
Эта стратегия состоит из следующих частей:
Установите длину цикла, в котором цена будет расти и падать, то есть consecutiveBarsUp и consecutiveBarsDown, чтобы вызвать торговый сигнал после того, как текущая циклическая тенденция цен достигнет установленной длины.
Вычислить текущую цену в сравнении с ценой предыдущего цикла, рассчитывая продолжительность цикла текущего непрерывного роста или падения в зависимости от падения.
Настройка временного диапазона отслеживания, ограничивающего политику только в течение времени отслеживания через time_cond.
Настройка ежедневных торговых часов, ограничивающая выпуск торговых сигналов черезtimetobuy только в установленный период времени.
Когда цикл непрерывного роста цены достигает установленной длины, появляется сигнал плюс, через strategy.long; когда цикл непрерывного падения цены достигает установленной длины, появляется сигнал минус, через strategy.short。
Можно установить стоп-стоп и стоп-стоп-цену. При перезагрузке устанавливается кратковременный стоп, при погашении устанавливается длительный стоп. При перезагрузке устанавливается длительный стоп, при погашении устанавливается кратковременный стоп.
Можно настроить уведомления при отправке торговых сигналов.
В зависимости от вышеуказанных параметров и цены, в соответствии с условиями, сигналы о прибыли или дефиците.
Эта стратегия обратного прорыва имеет следующие преимущества:
Захватывая точки переворота цены, обратная операция может принести хорошую прибыль. Когда цена формирует тренд, проводить обратную операцию, можно получить прибыль, когда цена переворачивается.
Настраиваемые параметры гибкие, можно корректировать параметры в соответствии с рынком. Можно регулировать количество циклов с непрерывным ростом и падением, регулировать точку остановки и остановки, ограничивать период торговли, можно оптимизировать параметры в соответствии с реальными обстоятельствами.
Добавляется стоп-стоп для контроля риска. После дополнительного лизинга стоп-стоп и стоп-стоп могут быть настроены заранее, что помогает контролировать риск торговли.
Настраиваемые сообщения для автоматизации торгов. Настраиваемые сообщения для отправки торговых сигналов, совместимые с использованием автоматизированной системы торгов.
Можно установить диапазон времени отсчета, чтобы легко тестировать стратегию. Добавлена настройка диапазона времени отсчета, чтобы легко наблюдать за эффективностью стратегии в разных рыночных условиях.
В этой стратегии также есть некоторые риски, о которых следует помнить:
Необходимо избегать важных новостных событий. Невозможно определить движение цены во время публикации важных новостей, тактика может одновременно выпускать много сигналов о дефолте, что приводит к убыткам. Необходимо избегать публикации важных финансовых новостей.
Если реверсия не очевидна, то она не очень эффективна. Если тенденция не очевидна, то реверсия не очень эффективна, поэтому ее следует использовать с осторожностью.
Риск совпадения ретроспективных данных. Стратегия оптимизации должна избегать чрезмерной зависимости от ретроспективных данных, которые не представляют собой будущие тенденции. Параметры должны быть соответствующим образом скорректированы в реальном времени.
Слишком высокая частота сделок может привести к рыночной падению. Если установлен слишком короткий цикл, частота сделок слишком высока, что не способствует долгосрочной стабильной прибыли.
Стоп-стоп-стратегии могут быть оптимизированы, чтобы снизить риск. Существующие фиксированные стоп-стоп-стоп-стратегии могут быть дополнительно оптимизированы для стоп-стопов, отслеживающих тенденцию.
Эта стратегия может быть улучшена в следующих аспектах:
Увеличение механизма определения тенденции, чтобы избежать беспорядочного разворота на рынке, не являющемся тенденцией. Можно обнаружить показатели, такие как волатильность цен, каналы, чтобы определить степень тенденции и избежать пропуска цены.
Оптимизация стратегии стоп-стоп, чтобы она могла автоматически корректироваться в зависимости от рыночных колебаний. Можно использовать такие методы, как остаточный процентный стоп, ATR-стоп, чтобы сделать установку стоп-стоп более интеллектуальной.
Включение количественных показателей для определения. В сочетании с такими показателями, как изменение объема сделки, избегайте ошибочных сигналов, возникающих исключительно на основе формы K-линии.
Многовидовое комбинирование. Применение стратегии для различных сортов для комбинирования может рассеять риск для одного сорта.
Параметрическая оптимизация и машинное обучение. Сбор большего количества исторических данных, автоматическая оптимизация параметров с использованием методов машинного обучения, чтобы сделать стратегию более стабильной.
Стратегия обратного прорыва заключается в том, что она позволяет получить хорошие торговые сигналы. Преимущества этой стратегии заключаются в гибкой конфигурации, управляемом риске и подходит для автоматизированной торговли. Но также существует определенный риск, требующий постоянной оптимизации и совершенствования параметров и стратегии для долгосрочной стабильной прибыли.
/*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)