
La stratégie utilise des indicateurs techniques moins connus de la courbe de Coppock pour réaliser des transactions quantifiées. La courbe de Coppock est dérivée par le calcul d’une moyenne mobile pondérée du taux de variation de l’indice S&P 500 ou de l’équivalent de la transaction.
La stratégie utilise la courbe de Coppock comme indicateur technique pour générer un signal de transaction. La formule de calcul de la courbe de Coppock est:
La courbe de Coppock = moyenne mobile pondérée à 10 cycles (ROC à 14 cycles + ROC à 11 cycles)
La formule pour calculer le taux de variation du ROC est: ((Close actuel - Close avant N cycles) / Close avant N cycles
La stratégie est basée sur le prix de clôture de $SPY et calcule sa courbe de Coppock. Elle génère un signal d’achat lorsque la courbe traverse la ligne zéro et un signal de vente lorsque la ligne zéro est traversée.
La stratégie utilise les caractéristiques de la forme unique de la courbe de Coppock pour générer des signaux de négociation. La courbe de Coppock a une plus grande prévisibilité par rapport aux indicateurs courants. Cependant, sa fiabilité en tant qu’indicateur indépendant doit encore être vérifiée. Il est recommandé d’utiliser la combinaison avec d’autres facteurs pour filtrer les faux signaux. La stratégie peut devenir un système de négociation quantifié efficace en optimisant les paramètres, en optimisant les arrêts et en combinant d’autres indicateurs.
/*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)