Stratégie de trading quantitative basée sur la courbe de Coppock


Date de création: 2023-11-13 11:44:55 Dernière modification: 2023-11-13 11:44:55
Copier: 0 Nombre de clics: 725
1
Suivre
1617
Abonnés

Stratégie de trading quantitative basée sur la courbe de Coppock

Aperçu

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.

Le principe

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.

Les avantages

  • L’utilisation d’un indicateur unique de la courbe de Coppock, avec une meilleure prévisibilité par rapport aux indicateurs courants tels que les moyennes mobiles
  • Optimisation des paramètres de l’indicateur configurables, tels que le cycle de la moyenne mobile pondérée, le cycle de calcul du taux de variation, etc.
  • Le signal de $SPY est très représentatif sur le marché
  • Option d’arrêt de trailing pour bloquer les bénéfices et réduire les retraits

Les risques

  • La courbe de Coppock n’est pas un indicateur très répandu, il faut vérifier son efficacité
  • Les signaux de transaction peuvent être retardés et nécessitent des paramètres d’optimisation
  • Les paramètres de stop-loss sont trop laxistes et risquent de manquer l’occasion de se retirer.
  • Se fier à un seul indicateur peut générer de faux signaux

Direction d’optimisation

  • Tester différents marchés, différentes actions pour optimiser la meilleure combinaison de paramètres
  • Filtrage de faux signaux en combinaison avec d’autres indicateurs, tels que le volume de transactions
  • Pourcentage d’arrêt de l’optimisation dynamique
  • Considérez le nombre de transactions ou le prix de rupture comme une entrée

Résumer

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.

Code source de la stratégie
/*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)