Die Ehlers Stochastic Cyber Cycle Strategy ist eine quantitative Handelsstrategie, die mithilfe des Ehlers
Diese Strategie baut zunächst einen glatten Zyklusindikator auf und erstellt dann einen auf diesem Indikator basierenden stochastischen Indikatorwert.
Insbesondere wird der Glättungszyklusindikator wie folgt berechnet:
smooth = (src + 2 * src[1] + 2 * src[2] + src[3]) / 6
Dieser Indikator kombiniert den aktuellen Preis mit den Preisen der letzten 3 Zeiträume, um ein glättetes Zyklussignal zu erstellen.
Auf der Grundlage dieses glätteten Indikators kann der stochastische Zykluszyklus berechnet werden:
cycle := (1 - .5 * alpha) * (1 - .5 * alpha) *
(smooth - 2 * smooth[1] + smooth[2]) +
2 * (1 - alpha) * cycle[1] -
(1 - alpha) * (1 - alpha) * cycle[2]
Diese Berechnungsformel enthält die Differenz der zweiten Ordnung des glatten periodischen Signals und die Werte der beiden vorangegangenen Zyklen.
Schließlich wird ein 0-100 Zufallswertwert1 auf der Grundlage dieses Zyklusindikators berechnet. Und das Signalwertsignal wird auf der Grundlage des 10-tägigen gleitenden Durchschnitts des Wertes1 konstruiert.
Diese Strategie kombiniert stochastische Indikatoren und Zyklusindikatoren, um die Vorteile beider zu integrieren.Verglichen mit einfachen Trendstrategien wie gleitenden Durchschnitten kann diese Strategie zyklische Chancen besser erfassen und damit bessere Ergebnisse erzielen.
Die wichtigsten Vorteile sind:
Die wichtigsten Risiken dieser Strategie sind:
Die Risiken können durch Optimierung der Parameter-Einstellungen, Einstellung von Stop-Loss-Punkten, Kombination anderer Filterindikatoren usw. kontrolliert werden.
Diese Strategie kann auch in folgenden Aspekten optimiert werden:
Die Ehlers Stochastic Cyber Cycle Strategy integriert die Vorteile von Stochastik- und Zyklusindikatoren durch ein duales Signaldesign, um Risiken effektiv zu kontrollieren, und kann in Märkten mit starker Zyklisität gute Renditen erzielen.
/*backtest start: 2024-01-09 00:00:00 end: 2024-01-16 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Ehlers Stochastic 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 len = input(8, title = "Stochastic len") 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] value1 = stoch(cycle, cycle, cycle, len) / 100 value2 = 2 * ((4 * value1 + 3 * value1[1] + 2 * value1[2] + value1[3]) / 10 - 0.5) signal = value2 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)