Стратегия поддержки и сопротивления Momentum Breakout Backtest


Дата создания: 2024-02-22 16:07:14 Последнее изменение: 2024-02-22 16:07:14
Копировать: 0 Количество просмотров: 619
1
Подписаться
1617
Подписчики

Стратегия поддержки и сопротивления Momentum Breakout Backtest

Обзор

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

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

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

Затем в основной логике вызвать эту функцию, чтобы получить эти три бита и отобразить их на графике.

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

Такие прорывные модели позволяют оценивать тенденции и генерировать торговые сигналы.

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

  1. Используйте данные предыдущего торгового дня для построения поддержки и сопротивления на этот день, избегая проблем с оптимизацией параметров
  2. Поддерживающий уровень сопротивления имеет определенную ценность от реальных данных о торговле
  3. Модель отслеживания проста, проста и понятна.
  4. Визуализация показателей поддержки и сопротивления, формирующих восприятие цены
  5. Мониторинг прорывов в режиме реального времени, чтобы вовремя уловить возможности для торговли

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

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

Ответ:

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

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

  1. Добавление большего количества исторических данных для определения уровня сопротивления, таких как 5-дневная линия, 10-дневная линия цен
  2. Показатели эффективности прорыва в сочетании с объемом торгов
  3. Установка стоп-лосса в зависимости от фактической волатильности
  4. Оптимизация управления капиталом, контроль одиночных убытков

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

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

Исходный код стратегии
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Support and Resistance with Backtesting", overlay=true)

// Function to calculate support and resistance levels
calculateSupportResistance() =>
    highPrevDay = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on)
    lowPrevDay = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on)
    closePrevDay = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on)
    [highPrevDay, lowPrevDay, closePrevDay]

// Call the function to get support and resistance levels
[supResHigh, supResLow, supResClose] = calculateSupportResistance()

// Plotting support and resistance levels
plot(supResHigh, color=color.red, linewidth=2, title="Previous Day High")
plot(supResLow, color=color.green, linewidth=2, title="Previous Day Low")
plot(supResClose, color=color.blue, linewidth=2, title="Previous Day Close")

// Backtesting logic
backtestCondition = close[1] < supResLow and close > supResLow
strategy.entry("Long", strategy.long, when=backtestCondition)

// Plotting buy/sell arrows for backtesting
plotarrow(backtestCondition ? 1 : na, colorup=color.green, offset=-1, transp=0)