Стратегия цикла Els, основанная на сглаживании сигнала


Дата создания: 2024-02-19 10:42:34 Последнее изменение: 2024-02-19 10:42:34
Копировать: 2 Количество просмотров: 627
1
Подписаться
1617
Подписчики

Стратегия цикла Els, основанная на сглаживании сигнала

Обзор

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

Стратегический принцип

  1. Второстепенная гладкая обработка исходного ценового сигналаsrc дает гладкий сигнал.

  2. Цикл цикла рассчитывается на основе гладкого сигнала. Метод расчета: cycle := (1 - .5 alpha) (1 - .5 alpha) (smooth - 2 smooth[1] + smooth[2]) + 2 (1 - alpha) cycle[1] - (1 - alpha) (1 - alpha) * cycle[2]

где α - гладкий параметр.

  1. Первая ступень индекса циклического индикатора, полученная в результате окончательного торгового сигнала, рассчитывается следующим образом: signal := alpha2 cycle + (1 - alpha2) nz(signal[1])

где α2 является одноступенчатым гладким параметром.

  1. Когда сигнал проходит через сигнал[1] когда делают больше; когда под сигналом проходят сигналы[1] в свободное время.

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

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

  2. Применяя теорию циклических показателей Эрса, можно более точно определить переходные точки рыночных тенденций.

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

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

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

  1. Как и другие стратегии технических показателей, эта стратегия также чувствительна к систематическому риску рынка. В случае крупного черного свингера может быть большой убыток.

  2. Из-за сложности вычислительного процесса неправильная настройка параметров может привести к задержке вычислений, что может повлиять на эффективность диска. Требуется тщательное тестирование, чтобы убедиться, что настройка параметров является научной.

  3. Сглаживание также приводит к задержке торговых сигналов, которые могут не успеть вовремя захватить рыночные поворотные моменты, что приводит к упущенным возможностям. Установка параметров сглаживания требует баланса.

Направление оптимизации стратегии

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

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

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

  4. Модели машинного обучения могут быть объединены с другими моделями, чтобы реализовать комбинацию моделей, используя другие модели для фильтрации торговых сигналов.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ehlers Cyber Cycle Strategy",overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 1, commission_type = strategy.commission.percent, commission_value = 0.1)
src = input(hl2, title = "Source") 
alpha = input(.07, title = "Alpha")
lag = input(9, title = "Lag")
smooth = (src + 2 * src[1] + 2 * src[2] + src[3]) / 6

cycle = na
if na(cycle[7])
    cycle := (src - 2 * src[1] + src[2]) / 4
else
    cycle := (1 - .5 * alpha) * (1 - .5 * alpha) * (smooth - 2 * smooth[1] + smooth[2]) + 2 * (1 - alpha) * cycle[1] - (1 - alpha) * (1 - alpha) * cycle[2]

alpha2 = 1 / (lag + 1)
signal = na
signal := alpha2 * cycle + (1 - alpha2) * nz(signal[1])
oppositeTrade = input(true)
barsSinceEntry = 0
barsSinceEntry := nz(barsSinceEntry[1]) + 1
if strategy.position_size == 0
    barsSinceEntry := 0
if (crossover(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossunder(signal, signal[1]))
    strategy.entry("Long", strategy.long)
    barsSinceEntry := 0
if (crossunder(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossover(signal, signal[1]))
    strategy.entry("Short", strategy.short)
    barsSinceEntry := 0
if strategy.openprofit < 0 and barsSinceEntry > 8
    strategy.close_all()
    barsSinceEntry := 0
    
    
plot(0, title="ZeroLine", color=gray) 
plotSrc = signal
cyclePlot = plot(plotSrc, title = "CyberCycle", color = blue)
triggerPlot = plot(plotSrc[1], title = "Trigger", color = green)
fill(cyclePlot, triggerPlot, color = plotSrc < plotSrc[1] ? red : lime, transp = 50)