Стратегия прогнозирования волн Гаусса

Автор:Чао Чжан, Дата: 2024-01-22 12:37:07
Тэги:

img

Обзор

Стратегия прогнозирования волн Гаусса - это количественная торговая стратегия, основанная на гауссианской фильтрации. Она использует функцию сглаживания гауссианских фильтров для фильтрации ценовых рядов несколько раз и получения нескольких сглаженных ценовых рядов. Затем в сочетании с полиномиальным подходом этих ценовых рядов она реализует прогноз будущих цен.

Принцип стратегии

Основой этой стратегии является алгоритм гауссианского фильтра. Гауссианский фильтр - это линейный фильтр сглаживания, который использует гауссианскую функцию в качестве весов. Параметр p в стратегии устанавливается как размер фильтрующего окна. Затем коэффициент фильтрации альфа вычисляется с помощью тригонометрических функций. Каждая серия цен ret\[i\] представляет результат после i-го гауссианского фильтрации исходной серии цен.

Стратегия использует идею рекурсии. Во-первых, с альфой и первоначальной ценой серии цен, рассчитывается первая фильтрация ret. Затем, основываясь на ret, проводится вторая фильтрация, чтобы получить ret2. Повторить это несколько раз. Наконец, объединяя несколько серий цен, устанавливается кривая для прогнозирования будущих цен ret4. Если прогнозируемая цена выше текущей фактической цены, идите в длинный. Если ниже текущей цены, идите в короткий.

При многократном фильтрации он может быть более плавным и лучше подходить к тренду.

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

Стратегия имеет следующие преимущества:

  1. Используйте гауссианский фильтр, чтобы сгладить цены. Он может эффективно фильтровать высокочастотный шум и сделать стратегию более стабильной.

  2. Рекурсивное многократное фильтрация. Это может лучше соответствовать ценовой тенденции и улучшить эффект прогнозирования.

  3. Предсказание цены на основе полиномиального приспособления. Он может моделировать краткосрочные тенденции цен и, таким образом, генерировать торговые сигналы.

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

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

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

Стратегия также имеет следующие риски:

  1. Сглаживающий эффект гауссианского фильтра на внезапные изменения цен может упустить краткосрочные торговые возможности.

  2. Если модель изменения цен внезапно мутирует, эффект предсказания уменьшится.

  3. Размер фильтрующего окна и порядок настройки полинома должны быть точно установлены. В противном случае он может не работать.

  4. Он основывается исключительно на цене открытия для торговых сигналов и не может торговать внутридневным режимом.

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

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

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

  2. Включить больше ценовых показателей и особенностей для обогащения ввода и сделать прогнозы более стабильными.

  3. Добавьте механизмы стоп-лосса, устанавливая максимальный коэффициент потери, чтобы избежать больших потерь в экстремальных рыночных условиях.

  4. Оптимизировать управление позициями, динамически корректировать позиции на основе точности прогноза и волатильности.

  5. Попробуйте прогнозировать на основе основных моделей машинного обучения, таких как LSTM, и еще больше улучшить предсказательные возможности.

Заключение

В общем, это высокочастотная количественная стратегия, которая выполняет прогнозирование цен с использованием гауссианского фильтра и полиномиального приспособления. Она имеет определенные преимущества, но также имеет место для улучшения. Благодаря включению большего количества функций, внедрению динамической настройки параметров, механизмов остановки убытков и т. Д., эффект стратегии может быть намного лучше. Эта стратегия закладывает основу в качестве базового модуля для дальнейших исследований и оптимизации высокочастотных стратегий.


/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Gaussbot v1.0", overlay=true)

p = input(20, minval=1, title="Length")
price = input(open, title="Source")

pi=3.1415926535


w=2*pi/p
beta = (1 - cos(w))/(pow(1.414,2.0/3) - 1)
alfa = -beta + sqrt(beta*beta + 2*beta)
ret=  pow(alfa,4)*price+4*(1-alfa)*nz(ret[1])-6*pow(1-alfa,2)*nz(ret[2])+4*pow(1-alfa,3)*nz(ret[3])-pow(1-alfa,4)*nz(ret[4])
ret2 = pow(alfa,4)*ret+4*(1-alfa)*nz(ret2[1])-6*pow(1-alfa,2)*nz(ret2[2])+4*pow(1-alfa,3)*nz(ret2[3])-pow(1-alfa,4)*nz(ret2[4])
ret3 = pow(alfa,4)*ret2+4*(1-alfa)*nz(ret3[1])-6*pow(1-alfa,2)*nz(ret3[2])+4*pow(1-alfa,3)*nz(ret3[3])-pow(1-alfa,4)*nz(ret3[4])
ret4 = 3*ret-3*ret2+ret3


diff2 = nz(ret[1]) - nz(ret[2]) - (nz(ret[2]) - nz(ret[3]) )  
diff22 = nz(ret2[1]) - nz(ret2[2]) - (nz(ret2[2]) - nz(ret2[3]) ) 
diff23 = nz(ret3[1]) - nz(ret3[2]) - (nz(ret3[2]) - nz(ret3[3]) )  
diff24 = nz(ret4[1]) - nz(ret4[2]) - (nz(ret4[2]) - nz(ret4[3]) )  


longCondition =    price[0] - ret4[1]  > 0
shortCondition =  price[0] - ret4[1] < 0

if(longCondition and shortCondition)
    longCondition = longCondition[1]
    shortCondition = shortCondition[1]
if(longCondition==false and shortCondition==false)
    longCondition = longCondition[1]
    shortCondition = shortCondition[1]



if (longCondition==true and shortCondition == false) 
    strategy.entry("Gaussbot Long", strategy.long )
if (longCondition==false and shortCondition == true)
    strategy.entry("Gaussbot Short", strategy.short)



Больше