Estratégia de acompanhamento de tendência de média móvel dupla


Data de criação: 2024-01-24 11:28:57 última modificação: 2024-01-24 11:28:57
cópia: 1 Cliques: 559
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendência de média móvel dupla

Visão geral

A estratégia de acompanhamento de tendências de dupla linha de equilíbrio é uma estratégia que usa uma combinação de médias móveis rápidas e médias móveis lentas para determinar a tendência do mercado e emite um sinal de negociação quando a tendência se desvia. A estratégia combina o indicador de linha de equilíbrio e o indicador de canal de preço para identificar a tendência e filtrar efetivamente o ruído do mercado para determinar a direção da tendência.

Princípio da estratégia

A estratégia de acompanhamento de tendências em dupla equilíbrio usa dois indicadores de médias móveis: a média móvel rápida (de 5 ciclos) e a média móvel lenta (de 21 ciclos). A média rápida é usada para gerar um sinal de negociação, e a média lenta é usada para determinar a direção da tendência do mercado. Quando a média rápida atravessa a média lenta de baixo para cima, gera um sinal de compra; quando a média rápida atravessa a média lenta de cima para baixo, gera um sinal de venda.

A estratégia também usa o indicador de canal de preço para auxiliar na determinação da tendência. O canal de preço é definido pela média móvel dos preços mais altos e mais baixos. Quando o preço quebra o canal, a tendência é reversível. A estratégia usa dois canais de preço, o primeiro com um ciclo de canal de preço de 21 e o segundo com um ciclo de canal de preço de 5, correspondendo ao ciclo da linha média.

A estratégia requer que o red column apareça em sequência (o número de colunas que o usuário pode configurar) para julgar os sinais de compra e venda, como uma condição de filtragem adicional. Isso pode evitar o envio de sinais errados na área de composição.

Em geral, a lógica de uma estratégia de acompanhamento de tendências em linha dupla é a seguinte:

  1. Usando o canal de preço para determinar a direção da tendência em grande escala
  2. Utilize a linha média rápida para avaliar tendências de curto prazo e emitir sinais de negociação
  3. Combinação de filtros colunais adicionais para evitar sinais errados na compilação

A análise de tendências em vários níveis permite filtrar o ruído e determinar a direção das tendências.

Análise de vantagens

A estratégia de acompanhamento de tendências em linha dupla tem as seguintes vantagens:

  1. Utilizando um sistema de dupla equação, é possível identificar as tendências e determinar a direção das principais tendências.
  2. A linha média rápida emite sinais de negociação para capturar a reversão da tendência em tempo hábil
  3. Os canais de preços julgam tendências de grande escala e evitam ser enganados pelo ruído do mercado de curto prazo
  4. Condições de filtragem de coluna vermelha/verde para reduzir a probabilidade de um sinal de erro na região de reconstituição
  5. Parâmetros de estratégia ajustáveis para diferentes mercados, aumentando a estabilidade da estratégia
  6. Pode ser adicionada uma estratégia de stop loss para controlar o risco de cada transação

No geral, a estratégia é mais estável em geral e tem um bom desempenho em mercados de tendência mais acentuada.

Análise de Riscos

A estratégia de acompanhamento de tendências em linha dupla também apresenta alguns riscos, principalmente:

  1. Quando os mercados se ajustam a longo prazo, são propensos a sinais errados, o que pode levar a pequenas perdas consecutivas.
  2. Os parâmetros de estratégia não são definidos no momento certo, o sinal de negociação pode atrasar e perder o melhor momento de entrada
  3. A falta de uma estratégia de parada de perdas eficaz torna o risco de uma única transação difícil de controlar

Em contrapartida, o risco estratégico pode ser reduzido por:

  1. Ajustar as condições de filtragem do pilar vermelho/verde para reduzir a frequência de negociação no mercado de liquidação
  2. Optimizar os parâmetros da linha média rápida para garantir que os sinais de negociação sejam oportunos
  3. Adição de uma estratégia de stop loss móvel ou percentual e controle rigoroso de perdas individuais

Direção de otimização

A estratégia de acompanhamento de tendências em linha dupla ainda tem espaço para ser melhorada.

  1. Combinação de indicadores de volatilidade, como o ATR, para ajustar automaticamente a amplitude de parada
  2. Parâmetros de estratégia de otimização automática usando métodos de aprendizado de máquina
  3. Adição de módulos para a rede neuronal de discernimento de tendências
  4. Integrar vários indicadores e condições de filtragem para construir um portfólio de estratégias

Essas orientações de otimização podem aumentar ainda mais a estabilidade, adaptabilidade e inteligência das estratégias.

Resumir

A estratégia de acompanhamento de tendências de dupla linha de equilíbrio é, em geral, uma estratégia de acompanhamento de tendências mais robusta. Ela combina o indicador de linha de equilíbrio e o canal de preço para determinar a direção e a intensidade da tendência e enviar sinais de negociação em linha de equilíbrio rápida.

Código-fonte da estratégia
/*backtest
start: 2023-12-24 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs Strategy v1.8", shorttitle = "Trend MAs str 1.8", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
useohlc4 = input(false, defval = false, title = "Use OHLC4")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needarr = input(false, defval = false, title = "Need entry arrows?")

src = useohlc4 == true ? ohlc4 : close
fastsma = ema(src, 5)

//PriceChannel 1
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2

//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 2

//Trend
//ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0
//trend = low > ma and low[1] > ma[1] and low[2] > ma[2] ? 1 : high < ma and high[1] < ma[1] ? -1 : trend[1]

trend1 = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend1[1]
trend2 = low > center2 and low[1] > center2[1] ? 1 : high < center2 and high[1] < center2[1] ? -1 : trend1[1]
trend = trend1 == 1 and trend2 == 1 ? 1 : trend2 == -1 and trend2 == -1 ? -1 : trend[1]

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

//Signals
up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0
dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0

//Lines
colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast MA")
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")
plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2")

//Arrows
plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0)
plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0)

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//Alerts
alertcondition(up == 1, title='buy', message='Uptrend')
alertcondition(dn == 1, title='sell', message='Downtrend')

//Trading
stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
    strategy.exit("Stop Long", "Long", stop = stoplong)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    strategy.exit("Stop Short", "Short", stop = stopshort)