
Esta estratégia é baseada no indicador CCI e foi projetada para uma estratégia de negociação de linha longa que só faz mais e não fica vazia. Quando o indicador CCI é superior a 100 gera um sinal de compra e quando o indicador CCI é inferior a 100 gera um sinal de venda.
O CCI é um indicador de tendência de flutuação, que mede o grau de desvio do preço atual em relação ao preço típico em um determinado período, para determinar se o atual estado é de sobrecompra ou de sobrevenda. Quando o CCI é superior a 100 indica entrada na área de sobrecompra, e pode ser considerado vendido; quando o CCI é inferior a 100 indica entrada na área de sobrevenda, e pode ser considerado comprado.
A lógica de negociação desta estratégia é que, quando o indicador CCI atravessa 100 e gera um sinal de compra, uma posição de cima pode ser criada; Quando o indicador CCI segue com uma ruptura de 100 e gera um sinal de venda, a posição de cima anterior é eliminada. Além disso, a estratégia evita a criação de posições vazias, controlando efetivamente o risco, permitindo apenas posições vazias.
Esta estratégia usa o indicador CCI para determinar áreas de sobrecompra e sobrevenda, apenas faça mais e não faça vazio, para evitar o risco de negociação de cabeça para baixo. O conceito da estratégia é mais maduro, a lógica é simples e fácil de implementar. Mas também existe um certo risco, que precisa ser focado na otimização de parâmetros, na combinação de mais indicadores e na configuração de stop loss.
/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("CCI Long Only Strategy", overlay=true)
// Input for CCI period
cciPeriod = input(14, title="CCI Period")
// Calculate CCI
cciValue = ta.cci(close, cciPeriod)
// Initialize variables to track last signals
var bool lastBuySignal = na
var bool lastSellSignal = na
// Buy condition
buyCondition = cciValue > 100 and na(lastBuySignal)
// Sell condition
sellCondition = cciValue < -100 and na(lastSellSignal)
// Update last signals
lastBuySignal := buyCondition ? true : na
lastSellSignal := sellCondition ? true : na
// Execute Buy and Sell orders
strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.close("Buy", when = sellCondition)
// Plot CCI for reference
plot(cciValue, title="CCI", color=color.blue)