
Die Strategie entwirft eine Ehrers-Zyklus-Handelsstrategie, die die Handelssignale durch die Berechnung von glatter behandelten Preissignalen in Kombination mit der Theorie der Kreislaufindikatoren von Ehlers glatter macht. Diese Strategie filtert effektiv Marktlärm und erzeugt zuverlässigere Handelssignale.
Das ursprüngliche Preissignal src wird in der zweiten Stufe glattert, um das glatte Signal “smooth” zu erhalten.
Der Kreislaufindex Cycle wird anhand der Gleitsignale berechnet. Die Berechnungsmethode lautet: cycle := (1 - .5 alpha) (1 - .5 alpha) (smooth - 2 smooth[1] + smooth[2]) + 2 (1 - alpha) cycle[1] - (1 - alpha) (1 - alpha) * cycle[2]
Dabei ist α das Glättungsparameter。
Dabei wird α2 als einstufiges Glättungsparameter angegeben.
Durch die zweite Stufe des Preissignals kann der Hochfrequenz-Rauschen effizient gefiltert und die Handelssignale zuverlässiger gemacht werden.
Durch die Anwendung der Theorie der Els-Zyklus-Indikatoren können die Umkehrpunkte der Markttrends genauer ermittelt werden.
Der First-Phaser-Index filtert die teilweise Geräusche in den Kreislaufindikatoren und erzeugt ein zuverlässigeres Handelssignal.
Der gesamte Strategieprozess ist vernünftig, wissenschaftlich, die Optimierung der Parameter ist groß, die Festplatte funktioniert hervorragend.
Wie bei anderen Technik-Strategien ist die Strategie auch auf systemische Risiken des Marktes empfindlich. Bei einem großen Black Swan-Ereignis kann es zu erheblichen Verlusten kommen.
Da die Berechnungsverfahren komplex sind, kann eine falsche Einstellung der Parameter zu einer Verzögerung der Berechnung führen, was die Festplattenwirkung beeinträchtigt. Es muss sorgfältig getestet werden, um sicherzustellen, dass die Einstellung der Parameter wissenschaftlich vertretbar ist.
Die Ausgleichsbearbeitung führt auch zu Handelssignalverzögerungen und kann dazu führen, dass keine Marktwendepunkte rechtzeitig erfasst werden können, wodurch Chancen verpasst werden. Die Einstellung der Ausgleichsparameter muss ausgewogen werden.
Verschiedene Arten von Glättungs-Algorithmen, wie z. B. eine Stufenindexglättung, eine Durchschnittsglättung usw., können getestet werden, um die optimale Glättungslösung zu finden.
Es kann ein Anpassungsparameter-Regulierungsmechanismus eingeführt werden, der die Parameter dynamisch an die Marktbedingungen anpasst, um die Robustheit der Strategie zu verbessern.
Es ist möglich, Stop-Loss- und Stop-Stop-Strategien zu entwickeln, um das Risiko von Einzelschäden zu verringern und gleichzeitig Gewinne zu sichern.
Es ist möglich, ein Machine Learning-Modell von autres zu kombinieren, um Modellkombinationen zu realisieren, die Handelssignale durch andere Modelle filtern.
Diese Strategie entwirft eine Erics-Zyklus-Handelsstrategie, die die Handelssignale durch Preissignal-Gleichung und die Berechnung von Erics-Zyklus-Indikatoren glättet. Die Strategie filtert effektiv den Lärm und erzeugt zuverlässigere Handelssignale. Die Strategie hat gleichzeitig einen größeren Parameterraum und eine gute Festplattenwirkung.
/*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)