В процессе загрузки ресурсов... загрузка...

Сигнальное сглаживание Эхлерс Стратегия киберцикла

Автор:Чао Чжан, Дата: 2024-02-19 10:42:34
Тэги:

img

Обзор

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

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

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

  2. Вычислить циклический цикл индикатора на основе сглаженного сигнала. цикл:= (1 - 0,5альфа) (1 - .5 альфа)(гладкий - 2)гладкий[1] + гладкий[2]) + 2(1 - альфа)цикл[1] - (1 - альфа)(1-альфа) * цикл[2]

    где α - параметр сглаживания.

  3. Экспоненциально сглаживать циклический индикатор с сглаживанием первого порядка, чтобы получить окончательный сигнал торгового сигнала. Сигнал:= алфа-2цикл + (1 - альфа2)nz ((сигнал[1])

    где α2 - параметр сглаживания первого порядка.

  4. Длинный, когда сигнал пересекает сигнал[1]; Короткий, когда сигнал пересекает сигнал[1].

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Резюме

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


/*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)

Больше