Стратегия отмены значимых поворотных точек

Автор:Чао Чжан, Дата: 2024-01-29 14:58:15
Тэги:

img

Обзор

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

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

Основная логика заключается в определении значимых пиковых и понижающих точек.

  1. Вычислить ATR и установить фактор фильтра ATR atr_mult.
  2. Пройдите через определенное количество строк слева (установлено левымиСлоками), если пиковый поворот выше любого высокого + ATR*atr_mult слева, поворот недействителен.
  3. Пройдите через определенное количество строк справа (установлено rightBars), если пик поворота выше, чем любой высокий + ATR*atr_mult справа, поворот недействителен.
  4. Если пиковый поворот остается действительным после вышеуказанных испытаний, возвращать его как важный пиковый поворот.

Логика для расчета значительных пороговых поворотов аналогична.

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

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

Основными преимуществами этой стратегии являются:

  1. ATR и atr_mult фильтры могут устранить незначительные колебания и торговать только действительно значимыми пивотами, избегая ненужных сделок.
  2. Динамический параметр ATR может автоматически регулировать диапазон торгов на волатильных рынках, предотвращая чрезмерную торговлю.
  3. Переключающийся момент сам по себе имеет относительно высокий уровень выигрыша и прибыльность.

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

Основными рисками являются:

  1. Неправильные параметры ATR могут отфильтровать слишком много действительных сделок.
  2. Риск попасть в ловушку все еще существует, необходимо установить стоп-лосс для контроля риска.
  3. Стратегии реверсионной деятельности относятся к затратам на транзакции, следует устанавливать разумные стоп-лосс и прибыль.

Чтобы контролировать вышеуказанные риски, оптимизируйте следующие аспекты:

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

Руководство по оптимизации

Дальнейшие направления оптимизации включают:

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

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

  3. Модели обучения с использованием количественных данных для поиска оптимального диапазона ATR. Больше исторических данных улучшает точность выбора параметров.

  4. Подумайте о сочетании с другими стратегиями, используя сильные стороны различных типов стратегий.

Заключение

Эта стратегия отмены значительного поворота отфильтровывает бессмысленные незначительные колебания путем расчета ATR и установки фильтров. Только отмены торговли на значительных поворотах могут эффективно улучшить прибыльность стратегии. Между тем, это также увеличивает сложность оптимизации параметров. Оптимальные параметры должны быть найдены путем всестороннего рассмотрения диапазона ATR, соотношения стоп-лосс / Take Profit и т. Д. Если полностью оптимизировать, это может стать высокоэффективной и стабильной краткосрочной торговой стратегией.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("QuantNomad - Significant Pivot Reversal Strategy", shorttitle = "SPPS", overlay=true)

// Inputs 
leftBars   = input(4,   title = 'PP Left Bars')
rightBars  = input(2,   title = 'PP Right Bars')
atr_length = input(14,  title = 'ATR Length')
atr_mult   = input(0.1, title = 'ATR Mult')

// Pivot High Significant Function
pivotHighSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (high[right] < high[right+i] + atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (high[right] < high[i] + atr * atr_mult)
            pp_ok := false
    
    pp_ok ? high[right] : na

// Pivot Low Significant Function
pivotLowSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (low[right] > low[right+i] - atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (low[right] > low[i] - atr * atr_mult)
            pp_ok := false
    
    pp_ok ? low[right] : na


swh = pivotHighSig(leftBars, rightBars)
swl = pivotLowSig (leftBars, rightBars)

swh_cond = not na(swh)

hprice = 0.0
hprice := swh_cond ? swh : hprice[1]

le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

if (le)
    strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick)

swl_cond = not na(swl)

lprice = 0.0
lprice := swl_cond ? swl : lprice[1]


se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

if (se)
    strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)

Больше