Контрарианская стратегия торговли прорывом

Автор:Чао Чжан, Дата: 2023-10-25 12:09:40
Тэги:

img

Обзор

Контрарианская стратегия торговли - это стратегия, которая берет контрарианные сигналы на основе последовательных роста или падения цены, чтобы пойти в длинный путь, когда выполняется короткое условие, или идти в короткий путь, когда выполняется длинное условие.

Логика стратегии

Стратегия в основном реализуется в следующих частях:

  1. Установите последовательные периоды для роста и падения цен, т.е. последовательные BarUp и BarDown. Когда тенденция текущего периода достигает установленной длины, запускается торговый сигнал.

  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. Добавьте анализ объема, чтобы избежать ложных сигналов только из ценовых моделей.

  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)






Больше