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