Médias móveis dinâmicas e estratégia de negociação do canal Keltner

Autora:ChaoZhang, Data: 2023-12-25 13:36:40
Tags:

img

Visão geral: Esta estratégia integra médias móveis dinâmicas, indicador de Super Tendência, níveis potenciais de suporte e resistência e canais Keltner para conduzir julgamentos de vários níveis sobre flutuações de preços e alcançar negociações automatizadas de tendência.

Estratégia lógica:
Esta estratégia utiliza médias móveis dinâmicas para determinar a direção de tendência de médio prazo dos preços. Especificamente, com base na seleção do usuário, o script adota a média móvel simples (SMA) ou a média móvel exponencial (EMA). Quando o preço mais alto, o preço mais baixo e o preço de fechamento são todos mais altos do que o dia anterior, ele indica uma tendência de alta. Quando todos eles são mais baixos do que o dia anterior, ele indica uma tendência de baixa. Com base nisso, combinado com a posição das médias móveis dinâmicas, são gerados sinais de compra e venda.

Além disso, a estratégia também emprega o indicador de Super Tendência para identificar tendências de longo prazo. O indicador de Super Tendência incorpora a faixa verdadeira média (ATR) e gera sinais de compra quando os preços estão acima da faixa superior, enquanto o fechamento anterior estava abaixo da faixa superior.

Para filtrar sinais falsos, esta estratégia utiliza os canais de Keltner para traçar as faixas superiores e inferiores do canal. Combinado com o intervalo do canal e o indicador Super Trend, ele pode alcançar a negociação de tendência. Especificamente, quando os preços quebram a faixa superior para cima e o fechamento de ontem estava abaixo da faixa superior, são gerados sinais de compra fortes. Quando os preços quebram a faixa inferior e o fechamento de ontem estava acima da faixa inferior, são ativados sinais de venda fortes.

Além disso, o script ajuda a traçar níveis de suporte e resistência potenciais para determinar ainda mais os níveis de preços-chave.

Vantagens:

  1. A combinação de múltiplos indicadores de estratégia gera sinais comerciais claros. Os canais de Keltner determinam a faixa de preços chave. Combinado com médias móveis dinâmicas e indicador de Super Tendência, ele julga rigorosamente a direção da tendência e efetivamente filtra falhas no mercado.

  2. As condições de ruptura rigorosas garantem a qualidade dos sinais de negociação. Os preços precisam realmente romper as faixas superiores ou inferiores do canal, combinados com a posição do fechamento de ontem para evitar armadilhas.

  3. O indicador Super Trend pode capturar tendências de longo prazo e rastrear tendências direcionais.

  4. Os níveis potenciais de suporte e resistência ajudam a determinar pontos-chave de preços e a descobrir oportunidades de reversão.

  5. Em geral, a frequência de negociação é moderada sem negociação excessivamente intensiva.

Riscos:

  1. Em mercados variados, os indicadores podem emitir sinais enganosos, resultando em perdas de ruptura ineficazes.

  2. Os pontos de stop loss ao quebrar as faixas de canais podem ser muito amplos com altos riscos por negociação.

  3. No seguimento das tendências a longo prazo, podem ser perdidas algumas oportunidades de reversão a médio prazo.

  4. As soluções incluem a redução dos parâmetros da média móvel ou a incorporação de outros indicadores auxiliares.

Orientações de otimização: Com base nos diferentes ambientes de mercado e preferências comerciais, esta estratégia pode ser otimizada nos seguintes aspectos:

  1. Ajustar os parâmetros da média móvel para otimizar a sensibilidade do sistema de indicadores às variações de preços.

  2. Ajustar os parâmetros do período ATR e do fator do indicador Super Trend para otimizar a sua funcionalidade.

  3. Ajuste os pontos de stop loss para equilibrar a relação risco/recompensa por negociação.

  4. Incorporar outros indicadores auxiliares, como as bandas de Bollinger e o KD, para avaliar melhor as correções locais e as oportunidades de reversão.

  5. Utilize abertura, fechamento, etc. para traçar padrões de candelabro para julgamento visual intuitivo das ações de preço.

  6. Realizar otimização de parâmetros e backtesting para comparar os resultados de diferentes combinações de parâmetros.

Conclusão: Esta estratégia integra médias móveis dinâmicas, indicador de Super Tendência, canais de Keltner e outros múltiplos indicadores para alcançar a negociação de tendência automática. As principais vantagens incluem: geração de sinal claro, taxa de vitória relativamente alta; rastreamento de tendências de longo prazo e captura de oportunidades direcionais; pontos de stop loss razoáveis para controlar riscos por negociação. Combinações eficazes de múltiplos indicadores filtram estritamente falhas e garantem uma qualidade relativamente alta de sinais de negociação, adequados para negociação automatizada. Através do ajuste e otimização de parâmetros, esta estratégia pode se adaptar a diferentes ambientes de mercado e auxiliar decisões manuais na busca de oportunidades de negociação.


/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mahesh_linux1989

//@version=5
strategy("Intraday Trend Identifier with Dynamic Moving Averages, Super Trend, VWAP, and Keltner Signals", overlay=true, shorttitle="ITI Keltner")

// Input for Moving Average Type
maType = input("SMA", title="Moving Average Type")

// Input for SMA Length
smaLength = input.int(20, title="SMA Length", minval=1, maxval=200)

// Input for EMA Length
emaLength = input.int(20, title="EMA Length", minval=1, maxval=200)

// Selecting Moving Average
selectedMA = maType == "SMA" ? ta.sma(close, smaLength) : ta.ema(close, emaLength)

// Bullish conditions
bullish = high > high[1] and low > low[1] and close > high[1]

// Bearish conditions
bearish = high < high[1] and low < low[1] and close < low[1]

// Strategy logic
longCondition = bullish and not bearish and close > selectedMA
shortCondition = bearish and not bullish and close < selectedMA

if (longCondition)
    strategy.entry("Buy", strategy.long)

if (shortCondition)
    strategy.entry("Sell", strategy.short)

// Exit conditions
bullishExit = close < selectedMA
bearishExit = close > selectedMA

if (bullishExit)
    strategy.close("Buy")

if (bearishExit)
    strategy.close("Sell")

// Keltner Channels
basisKC = maType == "SMA" ? ta.sma(close, smaLength) : ta.ema(close, emaLength)
atrKC = ta.atr(14)
upperKC = basisKC + atrKC
lowerKC = basisKC - atrKC

// Super Trend
atrLengthST = input.int(7, title="ATR Length for Super Trend")
factorST = input.int(2, title="Factor for Super Trend")

atrValueST = ta.atr(atrLengthST)

var float upperST = na
var float lowerST = na

if (close[1] > upperST[1])
    upperST := close[1] - factorST * atrValueST
else
    upperST := close - factorST * atrValueST

if (close[1] < lowerST[1])
    lowerST := close[1] + factorST * atrValueST
else
    lowerST := close + factorST * atrValueST

// Potential Support and Resistance
potentialSupport = ta.lowest(low, smaLength)
potentialResistance = ta.highest(high, smaLength)

// VWAP
//vwapValue = ta.vwap(close, volume)

// Keltner Signals
buySignalKC = close > upperKC and close[1] <= upperKC[1]
sellSignalKC = close < lowerKC and close[1] >= lowerKC[1]

// Super Trend Signals
buySignalST = close > upperST and close[1] <= upperST[1]
sellSignalST = close < lowerST and close[1] >= lowerST[1]

// Plotting
plot(basisKC, color=color.gray, title="Keltner Channel Basis")
plot(upperKC, color=color.blue, title="Upper Keltner Channel")
plot(lowerKC, color=color.blue, title="Lower Keltner Channel")

plot(upperST, color=color.green, title="Super Trend Upper")
plot(lowerST, color=color.red, title="Super Trend Lower")

plot(potentialSupport, color=color.green, title="Potential Support")
plot(potentialResistance, color=color.red, title="Potential Resistance")

//plot(vwapValue, color=color.orange, title="VWAP")

// Plot Bullish and Bearish arrows
plotarrow(buySignalST ? 1 : na, colorup=color.green, offset=-1, title="Bullish Arrow ST")
plotarrow(sellSignalST ? -1 : na, colordown=color.red, offset=-1, title="Bearish Arrow ST")

plotarrow(buySignalKC ? 1 : na, colorup=color.blue, offset=-1, title="Bullish Arrow KC")
plotarrow(sellSignalKC ? -1 : na, colordown=color.orange, offset=-1, title="Bearish Arrow KC")

// Plot candlesticks
plot(open, color=color.gray)
plot(close, color=bullish ? color.green : bearish ? color.red : color.gray)
plot(high, color=bullish ? color.green : bearish ? color.red : color.gray)
plot(low, color=bullish ? color.green : bearish ? color.red : color.gray)

Mais.