Гауссианская реверсионная стратегия торговли

Автор:Чао Чжан, Дата: 2023-11-07 15:01:19
Тэги:

img

Обзор

Это стратегия, которая идентифицирует потенциальные изменения цен с использованием настраиваемого гауссианского детеррентного ценового осциллятора (GDPO) в сочетании с сглаженными ценовыми циклами.

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

Стратегия сначала рассчитывает Детрендированный Ценовой Осиллятор (DPO) путем сравнения ценового баланса с экспоненциальной скользящей средней (EMA) в течение определенного периода для выявления краткосрочных ценовых циклов.

Правила входа и выхода определяются на основе перекрестных событий между сглаженным GDPO и его отстающей версией. Долгая позиция вводится, когда сглаженный GDPO пересекает отставание и является отрицательным. Долгая позиция выходит, когда сглаженный GDPO пересекает отставание или нулевую линию. Короткая позиция вводится, когда сглаженный GDPO пересекает отставание или нулевую линию и является положительным. Короткая позиция выходит, когда сглаженный GDPO пересекает отставание или нулевую линию.

Уточненный GDPO и его задержка изображены в различных цветах. Нулевая линия также отображается в качестве ссылки. Цвет фона графика меняется, когда стратегия входит в позицию.

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

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

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

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

Оптимизация может быть осуществлена путем динамической корректировки параметров и включения индикаторов тренда для улучшения надежности.

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

Стратегия может быть оптимизирована в нескольких аспектах:

  1. Динамическое регулирование параметров сглаживания для увеличения сглаживания тенденций и уменьшения ложных сигналов.

  2. Включайте индикаторы тренда, такие как ADX, чтобы избежать потерь на трендовых рынках.

  3. Добавьте механизмы остановки потерь, такие как динамические или отстающие остановки.

  4. Оптимизировать условия входа с использованием дополнительных индикаторов или моделей для более высокой точности входа.

  5. Оптимизировать управление капиталом путем корректировки размеров позиций и остановок на основе рыночных условий.

  6. Проверьте стратегию в разные периоды времени, например, ежедневные или еженедельные данные.

Резюме

Стратегия 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

Больше