Esta estrategia utiliza el indicador técnico menos conocido de la Curva de Coppock para implementar el comercio cuantitativo. La Curva de Coppock se deriva tomando un promedio móvil ponderado de la tasa de cambio (ROC) de un índice de mercado como S&P 500 o un equivalente comercial como SPY ETF. Las señales de compra se generan cuando la Curva de Coppock cruza por encima de cero y las señales de venta cuando cruza por debajo.
La estrategia utiliza la Curva de Coppock como indicador técnico para generar señales comerciales.
La curva de Coppock = WMA de 10 períodos (ROC de 14 períodos + ROC de 11 períodos)
Cuando la tasa de variación de ROC se calcule como: (Current Close - Close N periodes ago) /Close N periodes ago
La estrategia calcula la Curva de Coppock basándose en el precio de cierre de $SPY. Las señales de compra se generan cuando la curva cruza por encima de cero y las señales de venta cuando cruza por debajo.
La estrategia utiliza las características únicas de la curva de la curva de Coppock para generar señales comerciales. En comparación con los indicadores comunes, la curva de Coppock tiene un poder predictivo más fuerte. Pero como indicador independiente, su confiabilidad necesita validación. Se recomienda combinarla con otros factores para filtrar señales falsas. A través de la optimización de parámetros, la optimización de pérdidas y la combinación con otros indicadores, esta estrategia puede convertirse en un sistema comercial cuantitativo efectivo.
/*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)