Эта стратегия оптимизирует традиционную стратегию обратного отклонения ключевых точек путем расчета ATR и установки фильтров ATR для устранения незначительных ключевых точек, торгуя только действительно значимыми.
Основная логика заключается в определении значимых пиковых и понижающих точек.
Логика для расчета значительных пороговых поворотов аналогична.
После получения значительных пивотов, перейдите на короткий, когда цена переходит важный пиковый пиво, и перейдите на длинный, когда он переходит важный нижний пиво.
Основными преимуществами этой стратегии являются:
Основными рисками являются:
Чтобы контролировать вышеуказанные риски, оптимизируйте следующие аспекты:
Дальнейшие направления оптимизации включают:
Сочетание с другими показателями для определения рыночного режима, избежание переворотов торговли на трендовых рынках.
Добавление алгоритмов машинного обучения для автоматической оптимизации параметров. Методы, такие как генетические алгоритмы, случайный лес могут быть использованы для поиска оптимальных наборов параметров.
Модели обучения с использованием количественных данных для поиска оптимального диапазона ATR. Больше исторических данных улучшает точность выбора параметров.
Подумайте о сочетании с другими стратегиями, используя сильные стороны различных типов стратегий.
Эта стратегия отмены значительного поворота отфильтровывает бессмысленные незначительные колебания путем расчета 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)