
Прогнозная стратегия госволовой волны - это количественная торговая стратегия, основанная на госволовой волне. Она использует гладкие свойства госволовой волны, многократно фильтруя ценовую последовательность, создавая несколько ценовых последовательностей после гладкого.
В основе этой стратегии лежит алгоритм Gaussian filter. Gaussian filter - это линейный гладкий фильтр, который использует Gaussian как вес. В стратегии параметр p задается как размер фильтрующего окна.[i] представляет собой результат, полученный после выполнения i-го гостских волн в исходной ценовой последовательности.
В стратегии применяется регрессивная мысль. Сначала используйте альфа и первоначальную ценовую последовательность price, чтобы рассчитать первую волну ret. Затем, основываясь на ret, выполните вторую волну ret2 и так много раз.
Таким образом, с помощью нескольких волн, можно сгладить и сопоставить тенденции. Вместе с тем, в сочетании с многополюсным сопоставлением, можно прогнозировать движение цен в краткосрочной перспективе.
Эта стратегия имеет следующие преимущества:
Использование высокочастотных волн для сглаживания цены. Эффективно фильтрует высокочастотный шум, что делает стратегию более стабильной.
Рекурсивное многократное фильтрование помогает лучше адаптироваться к ценовым тенденциям и лучше прогнозировать их.
Прогноз цены, основанный на множественном совпадении. Можно моделировать краткосрочные ценовые движения, чтобы создать торговый сигнал.
Сочетание текущей цены и прогнозируемой цены. Торговые сигналы напрямую сочетаются с прогнозом тренда, чтобы избежать упущенных торговых возможностей.
Простая, легко понятная и оптимизируемая. Может использоваться в качестве базового модуля для высокочастотных стратегий и расширять другие аналитические показатели.
Также существуют следующие риски:
Гасковый фильтр сглаживает внезапные ценовые изменения и может пропустить краткосрочные торговые возможности.
Существует риск пересогласования при многообразном совпадении. Если изменение модели ценообразования является внезапным, это может привести к снижению эффективности прогнозирования.
Размер фильтровального окна и число многомерных степеней требуют точной настройки. Неправильное выполнение может привести к сбоям.
Опирается только на цену открытия диска в качестве торгового сигнала. Не может совершать торговые операции на внутреннем диске.
Эта стратегия может быть оптимизирована в следующих аспектах:
Добавление механизмов обучения моделей и переобучения скользящих окон. Динамическая корректировка параметров стратегии, снижение риска перестановок.
В сочетании с большим количеством ценовых показателей и особенностей. Более богатый стратегический вход, который делает прогнозы более стабильными.
Увеличение механизмов сдерживания убытков. Установка максимальной доли убытков, чтобы избежать серьезных убытков в экстремальных ситуациях.
Оптимизация управления позициями. Динамическая корректировка позиций в зависимости от точности прогнозов и колебаний.
Попытка прогнозирования на основе основных моделей машинного обучения. Модели глубокого обучения, такие как LSTM. Дальнейшее повышение способности к прогнозированию стратегий.
В целом, эта стратегия является высокочастотной количественной стратегией, использующей Gaussian Wave и многообразную амортизацию для прогнозирования цен. У нее есть определенные преимущества, но также есть место для улучшения.
/*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)