Это стратегия, которая идентифицирует потенциальные изменения цен с использованием настраиваемого гауссианского детеррентного ценового осциллятора (GDPO) в сочетании с сглаженными ценовыми циклами.
Стратегия сначала рассчитывает Детрендированный Ценовой Осиллятор (DPO) путем сравнения ценового баланса с экспоненциальной скользящей средней (EMA) в течение определенного периода для выявления краткосрочных ценовых циклов.
Правила входа и выхода определяются на основе перекрестных событий между сглаженным GDPO и его отстающей версией. Долгая позиция вводится, когда сглаженный GDPO пересекает отставание и является отрицательным. Долгая позиция выходит, когда сглаженный GDPO пересекает отставание или нулевую линию. Короткая позиция вводится, когда сглаженный GDPO пересекает отставание или нулевую линию и является положительным. Короткая позиция выходит, когда сглаженный GDPO пересекает отставание или нулевую линию.
Уточненный GDPO и его задержка изображены в различных цветах. Нулевая линия также отображается в качестве ссылки. Цвет фона графика меняется, когда стратегия входит в позицию.
Стратегия сочетает в себе методы сдерживания и гауссианское сглаживание, чтобы более четко идентифицировать возможности реверсии по сравнению с другими осцилляторами.
Стратегия чувствительна к настройке параметров, таких как длительность периода и параметры сглаживания. Для определения оптимальных параметров требуется обширное обратное тестирование, иначе могут возникнуть чрезмерные ложные сигналы. Стратегия может привести к последовательным потерям на трендовых рынках. Стоп-лосс следует использовать для контроля одиночных потерь в торговле. Неудачные реверсии также являются основным риском. Вероятность реверсии должна быть подтверждена с использованием графических моделей и силы тренда.
Оптимизация может быть осуществлена путем динамической корректировки параметров и включения индикаторов тренда для улучшения надежности.
Стратегия может быть оптимизирована в нескольких аспектах:
Динамическое регулирование параметров сглаживания для увеличения сглаживания тенденций и уменьшения ложных сигналов.
Включайте индикаторы тренда, такие как ADX, чтобы избежать потерь на трендовых рынках.
Добавьте механизмы остановки потерь, такие как динамические или отстающие остановки.
Оптимизировать условия входа с использованием дополнительных индикаторов или моделей для более высокой точности входа.
Оптимизировать управление капиталом путем корректировки размеров позиций и остановок на основе рыночных условий.
Проверьте стратегию в разные периоды времени, например, ежедневные или еженедельные данные.
Стратегия Gaussian Detrended Reversion идентифицирует краткосрочные циклы с использованием GDPO и извлекает сигналы с помощью Гауссианской фильтрации для захвата реверсий в соответствии с определенными правилами входа и выхода. Она эффективно контролирует риски реверсионной торговли, но требует оптимизации параметров и проверки тренда. Дальнейшее улучшение надежности может быть сделано с помощью динамических корректировок, подтверждения индикаторов и стратегий стоп-лосса.
/*backtest start: 2022-10-31 00:00:00 end: 2023-11-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 // © DraftVenture //@version=5 strategy(title="Gaussian Detrended Reversion Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=15) //Detrended Price Oscillator for price cycles period_ = input.int(50, title="Price Length", minval=1) barsback = period_/2 + 1 ma = ta.ema(close, period_) dpo = close - ma[barsback] // Rounded ALMA Calculations for gaussian smoothing almaSource = dpo almaWindowSize = input(title="Smoothing Length", defval=50) lagLength = input(title="Lag Length", defval=25) almaSmoothed = ta.alma(almaSource, almaWindowSize, 0.85, 6) almaLag = almaSmoothed[lagLength] // Reversion entry conditions entryL = ta.crossover(almaSmoothed, almaLag) and almaSmoothed < 0 exitL = ta.crossunder(almaSmoothed, almaLag) or ta.crossunder(almaSmoothed, 0) entryS = ta.crossunder(almaSmoothed, almaLag) and almaSmoothed > 0 exitS = ta.crossover(almaSmoothed, almaLag) or ta.crossover(almaSmoothed, 0) // Long entry and exit if entryL strategy.entry("Long", strategy.long) if exitL strategy.close("Long") // Short entry and exit if entryS strategy.entry("Short", strategy.short) if exitS strategy.close("Short") // Plot the oscillator plot(almaSmoothed, title="GDPO", color=color.green) plot(almaLag, title="Lag", color=color.white) hline(0, title="Zero Line", color=color.white) bgcolor(entryL ? color.new(color.green, 40) : na) bgcolor(entryS ? color.new(color.red, 40) : na) plotshape(series=ta.crossunder(almaSmoothed, almaLag) or ta.crossunder(almaSmoothed, 0), style=shape.xcross, location=location.top, color=color.white, size=size.tiny) plotshape(series=ta.crossover(almaSmoothed, almaLag) or ta.crossover(almaSmoothed, 0), style=shape.xcross, location=location.bottom, color=color.white, size=size.tiny) //Strategy by KP