Esta estratégia é um sistema de negociação de impulso baseado no Índice de Canal de Commodities (CCI), projetado para capturar oportunidades de negociação em áreas de sobrevenda monitorando desvios de preços da média.
O princípio central utiliza o CCI para medir o desvio de preço da sua média. O cálculo do CCI envolve: primeiro calcular o preço típico (média aritmética de preços altos, baixos e fechados), depois calcular a média móvel simples (SMA) do preço típico, finalmente derivar o CCI subtraindo o SMA do preço típico, dividindo pelo desvio médio e multiplicando por 0.015. As posições longas são inseridas quando o CCI cai abaixo de -90, indicando possíveis condições de sobrevenda; as posições são fechadas quando o preço ultrapassa máximos anteriores, confirmando a tendência de alta. A estratégia oferece parâmetros de stop-loss e take-profit personalizáveis para acomodar diferentes preferências de risco.
Esta estratégia capta oportunidades de sobrevenda do mercado através do indicador CCI, combinado com mecanismos de stop-loss e take-profit para criar um sistema de negociação completo. A estratégia possui lógica clara, execução fácil e boas capacidades de controle de risco. Através de medidas de otimização como filtragem de sinal e limiares dinâmicos, a estabilidade e lucratividade da estratégia podem ser melhoradas.
/*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)