Стратегия реверсивного импульса является количественной торговой стратегией, которая генерирует торговые сигналы с использованием индикаторов перемены цены и импульса.
Основная логика этой стратегии заключается в определении точек переворота на рынке путем расчета наивысшей и наименьшей цены за определенное время (например, 20 дней).
Вычислить самую высокую цену (window_high) и низкую цену (window_low) за последние 20 дней.
Если сегодняшний максимум выше максимума за последние 20 дней (новый 20-дневный максимум), введите период наблюдения за высоким переломом и установите счетчик на 5 дней.
Если новый максимум не наблюдается, вычесть счетчик на 1 каждый день.
Логика суждения для самой низкой цены аналогична.
Долгие и короткие позиции принимаются в течение периодов мониторинга перемены.
Стратегия также устанавливает время начала торговли, чтобы избежать генерирования сигналов по историческим данным.
Стратегия отмены импульса имеет следующие основные преимущества:
Захватывает возможности для обратного движения, подходящие для обратных тенденций. Рынки часто показывают некоторую степень обратного движения после устойчивого восходящего или нисходящего тренда. Эта стратегия направлена на захват этих поворотных моментов.
Отслеживание самых высоких и самых низких цен в течение окна может чувствительно идентифицировать тенденции и сроки перемены цен.
Периоды мониторинга обратного движения позволяют избежать ложных сигналов, которые генерируются только вокруг ключевых точек обратного движения, фильтруя шум.
Разрешает длинные и короткие позиции.
Относительно простая логика, легко реализуемая, в основном опирается на цены и простые индикаторы импульса, легко кодируемый.
К основным рискам этой стратегии относятся:
Неточный прогноз переворота. Стратегия может привести к убыткам, если рынок будет двигаться в направлении.
Не учитываются общие тенденции на рынке. Отдельные реверсии запасов не обязательно представляют собой реверсии на рынке.
Потенциально большие выводы, которые могут увеличиться без фактических изменений.
Продуктивность может значительно отличаться от обратных тестов.
Чувствительность параметров. Период окна, параметры счетчика и т.д. влияют на стабильность.
Методы контроля риска включают оптимизацию стоп-лосса, включение рыночных факторов, корректировку комбинаций параметров и проверку стабильности.
К основным направлениям оптимизации относятся:
Оценить силу рынка, чтобы избежать неблагоприятных условий.
Выбирайте акции со здоровыми фундаментальными показателями и переоценкой.
Оптимизация параметров. Настройка параметров окна и счетчика для поиска оптимальных комбинаций параметров.
Добавьте стратегии стоп-лосса, например, остановки отслеживания, остановки волатильности для контроля максимального снижения.
Увеличить точность предсказаний машинного обучения переворотов цен.
Реверсивный импульс - это стратегия, которая определяет возможности реверсии путем отслеживания цены и импульса. Она чувствительно реагирует и определяет тенденции и сроки реверсии. Но она имеет риски, которые требуют надлежащей оптимизации и контроля рисков. В целом, когда она полностью понята и оптимизирована, она может стать эффективным компонентом количественной торговой системы.
/*backtest start: 2023-02-16 00:00:00 end: 2024-02-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("New Highs and Lows Momentum Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) window = input.int(20, title="New Highs and Lows Window", minval=1) decay = input.int(5, title="Decay", minval=1) startDate = input(timestamp("1 Jan 2023"), title = "Start Date") allowShort = input.bool(false, title = "Allow shorting") var int highDecayCounter = 0 var bool isHighPeriod = false var int lowDecayCounter = 0 var bool isLowPeriod = false inTradeWindow = true window_high = ta.highest(close, window) window_low = ta.lowest(low, window) // Logic for Highs if window_high > ta.highest(close, window)[1] highDecayCounter := decay isHighPeriod := true else if highDecayCounter > 0 highDecayCounter := highDecayCounter - 1 else isHighPeriod := false // Logic for Lows if window_low < ta.lowest(low, window)[1] lowDecayCounter := decay isLowPeriod := true else if lowDecayCounter > 0 lowDecayCounter := lowDecayCounter - 1 else isLowPeriod := false // Strategy Execution if inTradeWindow if isHighPeriod and highDecayCounter == decay strategy.entry("Long", strategy.long) if isHighPeriod and highDecayCounter == 0 strategy.close("Long") if isLowPeriod and lowDecayCounter == decay and allowShort strategy.entry("Short", strategy.short) if isLowPeriod and lowDecayCounter == 0 and allowShort strategy.close("Short") // Plotting plot(window_high, color=color.green) plot(window_low, color=color.red)