Estratégia de oscilação de curto prazo baseada em CCI e EMA


Data de criação: 2024-01-31 16:01:21 última modificação: 2024-01-31 16:01:21
cópia: 0 Cliques: 1117
1
focar em
1617
Seguidores

Estratégia de oscilação de curto prazo baseada em CCI e EMA

Visão geral

Esta estratégia é uma estratégia de negociação de ondas de curto prazo, que combina o EMA e o CCI para identificar tendências de curto prazo no mercado e um estado de sobrevenda e sobrevenda para capturar oportunidades de flutuação de preços de curto prazo.

Princípio da estratégia

A estratégia usa principalmente as três médias da EMA de 10, 21 e 50 dias, bem como o indicador CCI para determinar o tempo de entrada e saída.

A lógica é a seguinte: Quando a média de curto prazo ((EMA de 10 dias) cruza a média de médio prazo ((EMA de 21 dias) e a média de curto prazo é superior à média de longo prazo ((EMA de 50 dias), e o indicador CCI é maior do que 0 é considerado um sinal de ponta, faça mais; Quando a média de curto prazo cruza a média de médio prazo abaixo da linha e a média de curto prazo é inferior à média de longo prazo, e o indicador CCI é menor do que 0 é considerado um sinal de ponta, faça um vazio.

A lógica de equilíbrio é a de equilíbrio quando a linha média de curto prazo cruza novamente a linha média de médio prazo.

Vantagens estratégicas

  1. A combinação do sistema de linha média com o indicador CCI permite identificar com eficácia a direção da tendência das flutuações dos preços de linha curta e o estado de sobrecompra e sobrevenda.

  2. O uso de um garfo de linha uniforme e um garfo morto para julgar entradas e existências é simples e prático.

  3. Os parâmetros e a configuração de períodos do indicador CCI são mais razoáveis, o que permite eliminar alguns falsos sinais.

  4. O uso de linhas médias com múltiplos períodos de tempo permite obter melhores oportunidades de operação em mercados de turbulência.

Risco estratégico

  1. A operação de linhas curtas varia muito, podendo ocorrer perdas contínuas.

  2. A configuração incorreta dos parâmetros do indicador CCI pode aumentar os falsos sinais.

  3. A estratégia pode levar a pequenos prejuízos durante a liquidação.

  4. Só é adequado para quem opera com frequência em linhas curtas, não para quem mantém linhas longas.

As correspondentes medidas de resposta ao risco incluem: otimização dos parâmetros CCI, ajuste da posição de stop loss, aumento das condições FILTER, etc.

Direção de otimização da estratégia

  1. É possível testar combinações de linhas médias EMA de diferentes comprimentos, com parâmetros de otimização.

  2. Outros indicadores ou condições de filtro podem ser adicionados para filtrar alguns sinais falsos. Por exemplo, MACD, KDJ, etc.

  3. O controle de perdas individuais pode ser feito por meio de um stop loss de rastreamento dinâmico.

  4. Os indicadores de tendência podem ser combinados com indicadores de tendência de períodos de tempo mais elevados, evitando operações de contracorrente.

Resumir

Esta estratégia é, em geral, uma típica estratégia de choque de curta linha, que utiliza o ponto de equilíbrio do indicador de equilíbrio em combinação com o ponto de venda e venda do indicador CCI para capturar oportunidades de reversão de curto prazo. Esta estratégia é adequada para negociações frequentes de curta linha, mas precisa suportar uma certa pressão de parada.

Código-fonte da estratégia
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//study(title="Strat CCI EMA scalping", shorttitle="EMA-CCI-strat", overlay=true)
strategy("Strat CCI EMA scalping", shorttitle="EMA-CCI-strat", overlay=true)

exponential = input(true, title="Exponential MA")

// the risk management inputs
inpTakeProfit   = input(defval = 1000, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 200, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 200, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

src = close

ma10 = exponential ? ema(src, 10) : sma(src, 10)
ma21 = exponential ? ema(src, 21) : sma(src, 21)
ma50 = exponential ? ema(src, 50) : sma(src, 50)

xCCI = cci(close, 200)

//buy_cond = cross(ma21, ma50) and ma10 > ma21 and (xCCI > 0)
//sell_cond = cross(ma21, ma50) and ma10 < ma21  and (xCCI < 0)

buy_cond = ma10 > ma21 and ma10 > ma50 and xCCI > 0
sell_cond = ma10 < ma21 and ma10 < ma50 and xCCI < 0



// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => buy_cond
exitLong() => ma10 < ma21
strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in
strategy.close(id = "Long", when = exitLong()) // ...and when to get out
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => sell_cond
exitShort() => ma10 > ma21
strategy.entry(id = "Short", long = false, when = enterShort())
strategy.close(id = "Short", when = exitShort())

// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
//strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)




//longCondition = buy_cond
//if(longCondition)
//    strategy.entry("Long", strategy.long)
//    strategy.exit("Close Long", "Long", when = exitLong())
    
//shortCondition = sell_cond
//if(shortCondition)
//    strategy.entry("Short", strategy.short)
//    strategy.exit("Close Short", "Short",  when = exitShort())

//plotshape(buy_cond, style=shape.flag, color=green, size=size.normal)
//plotshape(sell_cond, style=shape.flag, color=red, size=size.normal)

c1 = buy_cond==1 ? lime : sell_cond==1 ? red : #a3a3a3 // color

plot( ma10, color=red, style=line, title="10", linewidth=1)
plot( ma21, color=orange, style=line, title="21", linewidth=1)
plot( ma50, color=c1, style=line, title="50", linewidth=3)

//alertcondition(buy_cond, title = "Buy Condition", message = "Buy Condition Alert")
//alertcondition(sell_cond, title = "Sell Condition", message = "Sell Condition Alert")