Momentum seguindo a estratégia do CCI


Data de criação: 2023-10-25 17:37:39 última modificação: 2023-10-25 17:37:39
cópia: 1 Cliques: 762
1
focar em
1617
Seguidores

Momentum seguindo a estratégia do CCI

Visão geral

Esta estratégia é baseada no indicador CCI, que visa fazer mais em caso de sobrevenda e menos em caso de sobrevenda. Ele também usa opcionalmente o filtro EMA para controlar a negociação apenas na direção da tendência. A estratégia também oferece um stop-loss baseado em porcentagens fixas ou na média real da faixa (ATR).

Princípio da estratégia

  1. Usando o índice CCI para avaliar tendências de mercado

    • O CCI mede a dinâmica comparando o preço atual com o preço médio em um determinado período

    • CCI acima de 150 é sobrecompra, abaixo de -100 é sobrevenda

  2. Filtros EMA opcionais

    • Fazer mais apenas quando o preço é superior ao EMA e fechar quando é inferior ao EMA

    • Utilize a EMA para determinar a direção da tendência e evitar negociações contra a tendência

  3. Dois métodos de redução de perdas

    • Paradas de perda baseadas em percentagens fixas: paradas de perda baseadas em percentagens fixas do preço de entrada

    • Paradas de perda baseadas no ATR: Use o múltiplo do ATR para definir paradas de perda e depois calcule paradas de perda com base na taxa de retorno do risco

  4. Condições de entrada

    • CCI faz mais na linha 100

    • Cancelar a passagem da linha 150 no CCI

    • Se a EMA estiver ativada, apenas faça mais quando o preço estiver acima da EMA e faça um vazio quando o preço estiver abaixo da EMA

  5. Condições de partida

    • Preços atingem parâmetros de suspensão de perda

    • CCI retorna à zona de sobrecompra e sobrevenda

  6. Desenho

    • Mapa CCI indicador, região colorida

Análise de vantagens

  1. Usar o CCI para julgar sobrecompra e sobrevenda, um uso clássico do indicador CCI

  2. EMA opcional garante negociação apenas na direção da tendência, evitando reversões

  3. Disponibilização de duas formas de stop loss, com parâmetros de stop loss ajustáveis ao mercado

  4. O CCI indica que o mercado está novamente em zona de sobrecompra e sobrevenda para se posicionar e bloquear a tendência de reversão de lucro.

  5. Mapa com sinais CCI em destaque, fácil de ler

  6. A lógica da estratégia é clara, simples, fácil de entender e de otimizar.

Análise de Riscos

  1. Indicador CCI está atrasado, pode ocorrer uma inversão perdida ou produzir um falso sinal

  2. A configuração inadequada dos parâmetros da EMA pode perder a tendência ou invalida a estratégia

  3. A parada percentual de perda é difícil de adaptar às mudanças no mercado, com parâmetros mais amplos

  4. O ATR Stop Stop é sensível ao ciclo de intervalos e deve ser ajustado para o parâmetro ideal

  5. Risco de retirada maior, gestão de posições deve ser adequadamente ajustada

  6. Efeito: Os parâmetros do indicador devem ser avaliados de acordo com a evolução do mercado

Direção de otimização

  1. Avaliar os parâmetros CCI de diferentes períodos para encontrar a melhor combinação de parâmetros

  2. Testar diferentes períodos de EMA para determinar o melhor período de avaliação de tendências

  3. Ajustar os parâmetros de stop loss para obter a melhor relação risco/benefício

  4. Adicionar outras condições de filtro, como volume de transação, para filtrar ainda mais os falsos sinais

  5. Aperfeiçoar o julgamento de formas em combinação com linhas de tendência ou gráficos

  6. Aumentar as estratégias de gestão de posições, como posições fixas, para controlar o risco de retração

  7. Revisão global de dados de diferentes ambientes de mercado, parâmetros de ajuste dinâmico

Resumir

A estratégia usa o clássico princípio de sobrevenda e sobrevenda do indicador CCI para entrar. A adição do filtro EMA pode controlar a direção da tendência.

Código-fonte da estratégia
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 1h
basePeriod: 15m
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/
// © alifer123

//@version=5
// strategy("CCI+EMA Strategy with Percentage or ATR TP/SL [Alifer]", shorttitle = "CCI_EMA_%/ATR_TP/SL", overlay=false,
//      initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.045)

length = input(14, "CCI Length")
overbought = input.int(150, step = 10, title = "Overbought")
oversold = input.int(-140, step = 10, title = "Oversold")
src = hlc3
ma = ta.sma(src, length)
cci = (src - ma) / (0.015 * ta.dev(src, length))

// EMA
useEMA = input(true, "Use EMA", tooltip = "Only enters long when price is above the EMA, only enters short when price is below the EMA")
emaLength = input(55, "EMA Length")
var float ema = na
if useEMA
    ema := ta.ema(src, emaLength)

// Take Profit and Stop Loss Method
tpSlMethod_percentage = input(true, "Percentage TP/SL", group="TP/SL Method")
tpSlMethod_atr = input(false, "ATR TP/SL", group="TP/SL Method")

// Percentage-based Take Profit and Stop Loss
tp_percentage = input.float(10.0, title="Take Profit (%)", step=0.1, group="TP/SL Method")
sl_percentage = input.float(10.0, title="Stop Loss (%)", step=0.1, group="TP/SL Method")

// ATR-based Take Profit and Stop Loss
atrLength = input(20, title="ATR Length", group="TP/SL Method")
atrMultiplier = input(4, title="ATR SL Multiplier", group="TP/SL Method")
riskRewardRatio = input(2, title="Risk Reward Ratio", group="TP/SL Method")

// Calculate TP/SL levels based on the selected method, or leave them undefined if neither method is selected
longTP = tpSlMethod_percentage ? strategy.position_avg_price * (1 + tp_percentage / 100) : na
longSL = tpSlMethod_percentage ? strategy.position_avg_price * (1 - sl_percentage / 100) : na
shortTP = tpSlMethod_percentage ? strategy.position_avg_price * (1 - tp_percentage / 100) : na
shortSL = tpSlMethod_percentage ? strategy.position_avg_price * (1 + sl_percentage / 100) : na

if tpSlMethod_atr
    longSL := strategy.position_avg_price - ta.atr(atrLength) * atrMultiplier
    longTP := ((strategy.position_avg_price - longSL) * riskRewardRatio) + strategy.position_avg_price
    shortSL := strategy.position_avg_price + ta.atr(atrLength) * atrMultiplier
    shortTP := ((strategy.position_avg_price - shortSL) * riskRewardRatio) - strategy.position_avg_price

// Enter long position when CCI crosses below oversold level and price is above EMA
longCondition = ta.crossover(cci, oversold) and (not useEMA or close > ema)
if longCondition
    strategy.entry("Buy", strategy.long)

// Enter short position when CCI crosses above overbought level and price is below EMA
shortCondition = ta.crossunder(cci, overbought) and (not useEMA or close < ema)
if shortCondition
    strategy.entry("Sell", strategy.short)

// Close long positions with Take Profit or Stop Loss
if strategy.position_size > 0
    strategy.exit("Long Exit", "Buy", limit=longTP, stop=longSL)

// Close short positions with Take Profit or Stop Loss
if strategy.position_size < 0
    strategy.exit("Short Exit", "Sell", limit=shortTP, stop=shortSL)

// Close positions when CCI crosses back above oversold level in long positions or below overbought level in short positions
if ta.crossover(cci, overbought)
    strategy.close("Buy")
if ta.crossunder(cci, oversold)
    strategy.close("Sell")

// Plotting
color_c = cci > overbought ? color.red : (cci < oversold ? color.green : color.white)
plot(cci, "CCI", color=color_c)
hline(0, "Middle Band", color=color.new(#787B86, 50))
obband = hline(overbought, "OB Band", color=color.new(#78867a, 50))
osband = hline(oversold, "OS Band", color=color.new(#867878, 50))
fill(obband, osband, color=color.new(#787B86, 90))