Cette stratégie utilise l'indicateur technique moins connu de la courbe de Coppock pour mettre en œuvre le trading quantitatif. La courbe de Coppock est dérivée en prenant une moyenne mobile pondérée du taux de changement (ROC) d'un indice de marché comme le S&P 500 ou un équivalent de trading comme le SPY ETF. Les signaux d'achat sont générés lorsque la courbe de Coppock traverse au-dessus de zéro et les signaux de vente lorsqu'elle traverse en dessous. Un stop loss optionnel est disponible pour verrouiller les profits.
La stratégie utilise la courbe de Coppock comme indicateur technique pour générer des signaux de trading.
La courbe de Coppock = WMA à 10 périodes (14-période ROC + 11-période ROC)
Lorsque le taux de variation de ROC est calculé comme suit: (clôture actuelle - clôture N de périodes) /clôture N de périodes
La stratégie calcule la courbe de Coppock en fonction du prix de clôture de $SPY. Les signaux d'achat sont générés lorsque la courbe dépasse zéro et les signaux de vente lorsqu'elle dépasse.
La stratégie utilise les caractéristiques uniques de la courbe de la courbe de Coppock pour générer des signaux commerciaux. Par rapport aux indicateurs courants, la courbe de Coppock a un pouvoir prédictif plus puissant. Mais en tant qu'indicateur autonome, sa fiabilité doit être validée. Il est recommandé de la combiner avec d'autres facteurs pour filtrer les faux signaux.
/*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)