
A estratégia baseia-se no clássico índice de canais de commodities (CCI), apenas fazendo a multiplicação. Quando o indicador CCI está em níveis extremamente baixos (CCI <-150 ou um limiar definido pelo usuário) e retoma a força (CCI da linha K anterior à CCI), enquanto o próprio limiar de força de preço é filtrado (o preço de fechamento da linha K que emite o sinal deve ser superior a uma certa amplitude do preço de abertura - fixado em 0,25%), o sistema entra no mercado.
A estratégia é usada para obter altas taxas de sucesso (mais de 50%) de negociação, em vez de perseguir o comprimento total da tendência de captura. Portanto, é adequado para os comerciantes que não podem suportar perdas potenciais.
Utilize as funções ta.sma() e ta.dev() para construir o indicador CCI e suas faixas de intervalos.
Selecione a data de início da negociação com o input e configure a janela de retorno.
Condições de entrada: O CCI atravessa a linha baixa e começa a subir, ao mesmo tempo em que exige que o preço de fechamento da linha K do sinal seja superior a 0,25% do preço de abertura.
Condição de saída 1: CCI na linha de entrada, parada e saída.
Condição de saída 2: ultrapassar a linha de stop loss e sair com prejuízo.
A estratégia é apenas fazer mais, escolher o momento de entrada de acordo com a intensidade do indicador CCI, ao mesmo tempo em que usa o risco de controle de perda.
A estratégia tem as seguintes vantagens:
O CCI pode ser usado para identificar situações de sobrecompra e sobrevenda e aproveitar as oportunidades de reversão.
A única maneira de evitar o risco de uma operação errada é fazer isso em várias direções.
O uso da força de preço para filtrar, assegurando que o preço de entrada tenha sido suportado.
O mecanismo de parada de prejuízos controla os prejuízos individuais e administra os fundos de forma eficaz.
Os parâmetros de detecção são flexíveis e podem ser ajustados nas condições de filtragem de entrada.
A taxa de sucesso é mais alta e é adequada para investidores que se concentram na gestão de fundos.
A estratégia é clara, o código é simples e fácil de entender.
A estratégia também tem riscos:
A tendência é de baixa em linha curta, mas é fácil de perder se você for apenas multidirecional.
Configuração incorreta dos parâmetros CCI pode causar falha.
A configuração de stop loss é muito frouxa e não permite um controle eficaz dos prejuízos.
A maioria dos investidores está muito forte, e o stop-loss foi rompido, causando grandes perdas.
A alta frequência de transações gera pressão sobre os custos das transações.
Correspondentes medidas de gestão de riscos:
Optimizar os parâmetros do CCI para encontrar os melhores valores.
Ajustar a amplitude do stop loss para encontrar um equilíbrio entre o risco e a probabilidade de o stop loss ser ultrapassado.
Os custos de transação são considerados e a frequência de acesso é controlada.
Combinando tendências e discernimento de intervalos, evite negociações unilaterais.
A estratégia pode ser melhorada em vários aspectos:
O uso de stop loss dinâmico para ajustar a distância de stop loss de acordo com a volatilidade do mercado.
Combinado com indicadores como o MACD, evita que o stop loss fique muito relaxado.
Aumentar as oportunidades de venda e considerar a possibilidade de fechamento quando o índice de cici estiver quente.
Considerando os custos da transação, defina a distância mínima de parada.
Os parâmetros de otimização são combinados com a estrutura de tempo da estratégia para encontrar a melhor combinação.
Parâmetros de otimização automática usando métodos de aprendizagem de máquina.
Adicionar módulos de gestão de fundos e ajustar posições de forma dinâmica.
Em resumo, a estratégia utiliza a característica de super-compra e super-venda do indicador CCI, fazendo mais quando os preços formam suporte, buscando negociações de alta taxa de ganho através do controle de risco de stop loss. A vantagem da estratégia está na facilidade de operação e no controle de risco. As deficiências existentes estão em apenas fazer mais, parar o prejuízo do que o fixo, etc.
/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='CCI High Performance long only', overlay=false )
src = input(close)
length = input.int(20, title='Period', minval=1)
lossp = input.float(8, title='Stop Loss percentage', minval=0.5, step=0.5)
scart = input.float(0.25, title='Close of the signal bar higher than Open %', minval = 0)
upperline = input.int(150, title='Upper Band', minval=0, step=10)
lowline = input.int(-150, title='Low Band', maxval=0, step=10)
// construction of CCI (not on close but in totalprice) and of bands
ma = ta.sma(src, length)
cci = (src - ma) / (0.015 * ta.dev(src, length))
plot(cci, 'CCI', color=color.new(#996A15, 0))
band1 = hline(upperline, 'Upper Band', color=#C0C0C0, linestyle=hline.style_dashed)
band0 = hline(lowline, 'Lower Band', color=#C0C0C0, linestyle=hline.style_dashed)
fill(band1, band0, color=color.new(#9C6E1B, 90), title='Background')
// === INPUT BACKTEST RANGE ===
fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromDay = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromYear = input.int(defval = 2016, title = "From Year", minval = 1970)
thruMonth = input.int(defval = 1, title = "Thru Month", minval = 1, maxval = 12)
thruDay = input.int(defval = 1, title = "Thru Day", minval = 1, maxval = 31)
thruYear = input.int(defval = 2112, title = "Thru Year", minval = 1970)
// === FUNCTION EXAMPLE limit for backtest ===
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
//ENTRY CONDITIONS
// strategy: enter when CCI is under the low line and starts increasing. The filter is that the signal candle should mark a close higher than a x-percent
// (0.25%) of the open
// Exit when either when it reaches the target of a prices highest than high level of CCI or fixed stop loss (in percentage)
scart_level = open * (1+scart/100)
entryl = cci[1] < lowline[1] and cci > cci[1] and close > scart_level and window()
exit1 = cci> upperline
strategy.entry('Long', strategy.long, when=entryl)
strategy.close('Long', when=exit1, comment='target')
// money management (only stop loss)
losspel = strategy.position_avg_price * (1 - lossp / 100)
fixed_stop_long = close < losspel
strategy.close('Long', when=fixed_stop_long, comment='Stop Loss')