Quantitative Handelsstrategie basierend auf der Coppock-Kurve


Erstellungsdatum: 2023-11-13 11:44:55 zuletzt geändert: 2023-11-13 11:44:55
Kopie: 0 Klicks: 730
1
konzentrieren Sie sich auf
1621
Anhänger

Quantitative Handelsstrategie basierend auf der Coppock-Kurve

Überblick

Die Strategie nutzt die wenig bekannten Coppock-Kurve-Techniken, um den Handel zu quantifizieren. Die Coppock-Kurve wird durch die Berechnung eines gewichteten Moving Averages der Veränderungsrate des S&P 500-Index oder des Handelsäquivalents abgeleitet.

Grundsätze

Die Strategie verwendet die Coppock-Kurve als technische Kennzahl für die Erzeugung von Handelssignalen. Die Berechnungsformel für die Coppock-Kurve lautet:

Coppock-Kurve = 10-Zyklus-gewichtete gleitende Durchschnittswerte ((14-Zyklus-Wechselrate ROC + 11-Zyklus-Wechselrate ROC)

Die Berechnungsformel für die Veränderungsrate ROC lautet: ((Current Close - N-Zyklus-Close) / N-Zyklus-Close

Die Strategie basiert auf dem Schlusskurs von $SPY und berechnet seine Coppock-Kurve. Wenn die Kurve die Nulllinie überschreitet, erzeugt sie ein Kaufsignal, wenn sie die Nulllinie unterschreitet, erzeugt sie ein Verkaufssignal.

Vorteile

  • Die Verwendung eines einzigartigen Coppock-Kurvenindikators, der besser vorausschauend ist als übliche Indikatoren wie beispielsweise der Moving Average
  • Optimierung von konfigurierbaren Kennzahlen wie gewichtete Moving Average-Zyklen, Veränderungsrate-Zyklen usw.
  • $SPY als Signalquelle, stark vertreten auf dem Markt
  • Optionale Trailing Stop-Losses, um Gewinne zu sichern und Rücknahmen zu reduzieren

Die Gefahr

  • Die Coppock-Kurve ist nicht sehr verbreitet und muss überprüft werden.
  • Handelsignale können verzögert werden und Parameter müssen optimiert werden
  • Zu lockere Stop-Loss-Einstellungen können einen Rückzug verpassen
  • Verlassen auf einen einzigen Indikator kann zu falschen Signalen führen

Optimierungsrichtung

  • Verschiedene Märkte und Aktien testen, um die beste Kombination von Parametern zu optimieren
  • In Kombination mit anderen Indikatoren, um Falschsignale zu filtern, z. B. Transaktionsvolumen
  • Dynamische Optimierung Stop-Loss-Prozent
  • Berücksichtigen Sie die Anzahl der Transaktionen oder den Preisbruch als Einstieg

Zusammenfassen

Die Strategie nutzt die einzigartigen Kurvenform-Eigenschaften der Coppock-Kurve, um ein Handelssignal zu erzeugen. Die Coppock-Kurve ist stärker vorausschauend als die üblichen Indikatoren. Die Zuverlässigkeit als eigenständiger Indikator muss jedoch noch überprüft werden. Es wird empfohlen, in Kombination mit anderen Faktoren ein falsches Signal zu filtern.

Strategiequellcode
/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © RolandoSantos

//@version=4
strategy(title = "Coppock Curve", shorttitle = "Copp Curve Strat", default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000)

///trail stop
longTrailPerc = input(title="Trail Long Loss (%)", minval=0.0, step=0.1, defval=100) * 0.01

// Determine trail stop loss prices
longStopPrice = 0.0

longStopPrice := if (strategy.position_size > 0)
    stopValue = close * (1 - longTrailPerc)
    max(stopValue, longStopPrice[1])
else
    0
//Use SPY for Copp Curve entries and exits//
security = input("SPY")
ticker = security(security, "D", close)

///Copp Curve////
wmaLength = input(title="WMA Length", type=input.integer, defval=10)
longRoCLength = input(title="Long RoC Length", type=input.integer, defval=14)
shortRoCLength = input(title="Short RoC Length", type=input.integer, defval=11)
source = ticker
curve = wma(roc(source, longRoCLength) + roc(source, shortRoCLength), wmaLength)

///Lower Band Plot///
band1 = hline(0)
band0 = hline(100)
band2 = hline(-100)
fill(band1, band0, color=color.green, transp=90)
fill(band2, band1, color=color.red, transp=90)
plot(curve, color=color.white)

///Trade Conditions///
Bull = curve > 0
Bear = curve < 0

///Entries and Exits//
if (Bull)
    strategy.entry("Long", strategy.long, comment = "LE")
    

if (Bear)
    strategy.close("Long", qty_percent=100, comment="close")
    
// Submit exit orders for trail stop loss price
if (strategy.position_size > 0)
    strategy.exit(id="Long Trail Stop", stop=longStopPrice)