
La estrategia es un sistema de negociación dinámica basado en el indicador CCI para capturar oportunidades de negociación en zonas de sobreventa del mercado mediante la monitorización de la desviación de los precios del promedio. La estrategia utiliza 12 ciclos como período de retroceso.
El proceso de cálculo del CCI incluye: primero, calcular el precio típico (el promedio aritmético de los precios más altos, más bajos y de cierre), luego calcular el promedio móvil simple del precio típico (el SMA), y finalmente, reducir el SMA por el precio típico y multiplicarlo por 0.015 para obtener el valor final del CCI. Cuando el valor del CCI es inferior a 90, indica que el mercado puede estar en un estado de venta por encima de la media, y entonces el mercado hace más; cuando el precio rompe los máximos anteriores, indica que la tendencia al alza se establece, y entonces la estrategia de ganancias de posición baja.
La estrategia capta las oportunidades de sobreventa del mercado a través de los indicadores CCI, junto con el mecanismo de cierre de pérdidas y ganancias, para lograr un sistema de negociación completo. La lógica de la estrategia es clara, fácil de ejecutar y tiene una buena capacidad de control de riesgos.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("CCI Threshold Strategy", overlay=false, initial_capital=50000, pyramiding=0, commission_type=strategy.commission.cash_per_contract, commission_value=0.05, slippage=1)
// --- Input Parameters ---
// Lookback period for CCI calculation
lookbackPeriod = input.int(12, minval=1, title="CCI Lookback Period")
// Buy threshold for CCI; typically represents an oversold condition
buyThreshold = input.int(-90, title="CCI Buy Threshold")
// Stop loss and take profit settings
stopLoss = input.float(100.0, minval=0.0, title="Stop Loss in Points")
takeProfit = input.float(150.0, minval=0.0, title="Take Profit in Points")
// Checkboxes to enable/disable SL and TP
useStopLoss = input.bool(false, title="Enable Stop Loss")
useTakeProfit = input.bool(false, title="Enable Take Profit")
// --- Calculate CCI ---
// CCI (Commodity Channel Index) is used as a momentum indicator to identify oversold and overbought conditions
cci = ta.cci(close, length=lookbackPeriod)
// --- Define Buy and Sell Conditions ---
// Buy condition: CCI drops below -90, indicating potential oversold levels
longCondition = cci < buyThreshold
// Sell condition: Close price crosses above the previous day's high, signaling potential exit
sellCondition = close > ta.highest(close[1], 1)
// --- Strategy Execution ---
// Buy entry based on the long condition
if (longCondition)
strategy.entry("Buy", strategy.long)
// Close the long position based on the sell condition
if (sellCondition)
strategy.close("Buy")
// Optional: Add stop loss and take profit for risk management
if (longCondition)
strategy.exit("Sell", from_entry="Buy", loss=useStopLoss ? stopLoss : na, profit=useTakeProfit ? takeProfit : na)
// --- Plotting for Visualization ---
// Plot CCI with threshold levels for better visualization
plot(cci, title="CCI", color=color.blue)
hline(buyThreshold, "Buy Threshold", color=color.red, linestyle=hline.style_dotted)
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_dotted)