
La estrategia utiliza indicadores técnicos poco conocidos de la curva de Coppock para realizar operaciones cuantitativas. La curva de Coppock se deriva de un promedio móvil ponderado de la tasa de cambio del índice Standard & Poor’s 500 o de los equivalentes de transacción.
La estrategia utiliza la curva de Coppock como indicador técnico para generar señales de negociación. La fórmula para calcular la curva de Coppock es:
Curva de Coppock = promedio móvil ponderado de 10 ciclos (ROC de 14 ciclos + ROC de 11 ciclos)
donde la fórmula de cálculo de la tasa de cambio de ROC es: ((Close actual - Close antes de N ciclo) / Close antes de N ciclo
La estrategia se basa en el precio de cierre de $SPY y calcula su curva de Coppock. Cuando la curva cruza la línea cero, genera una señal de compra, y cuando cruza la línea cero, genera una señal de venta.
La estrategia utiliza las características curvas de la curva de Coppock para generar señales de comercio. La curva de Coppock tiene una mayor previsibilidad que los indicadores comunes. Sin embargo, su fiabilidad como indicador independiente aún debe ser verificada. Se recomienda usarla en combinación con otros factores para filtrar señales falsas.
/*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)