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


Data de criação: 2024-02-04 15:57:12 última modificação: 2024-02-04 15:57:12
cópia: 0 Cliques: 504
1
focar em
1617
Seguidores

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

Visão geral

Dual Moving Average Trend Tracking Strategy é uma estratégia de negociação quantitativa que usa uma combinação de média móvel rápida e média móvel lenta para determinar a direção da tendência e combina a cor da entidade K-line como sinal de entrada. A estratégia possui características de acompanhamento de tendência e negociação de reversão ao mesmo tempo.

Princípio da estratégia

A estratégia usa uma média móvel lenta de 20 de comprimento para determinar a direção da tendência geral, sendo considerada uma tendência ascendente quando o preço sobe e uma tendência descendente quando o preço desce. A média móvel rápida de 5 de comprimento é usada como filtro de entrada e só é emitida quando o preço quebra a média móvel rápida. Além disso, a estratégia examina a cor real da linha N-K mais próxima, emitindo um sinal múltiplo quando a cor real se combina com uma tendência ascendente quando ela se transforma em vermelho e um sinal de vazio quando a cor real se combina com uma tendência descendente quando ela se transforma em verde para evitar uma falsa quebra.

A estratégia de integração julga a informação em três dimensões: a tendência geral, a linha média de curto prazo e a linha K, o que aumenta a confiabilidade do sinal de negociação. O sinal de negociação é emitido apenas quando os três estão alinhados, filtrando efetivamente parte do ruído.

Vantagens estratégicas

  1. A plataforma tem características de acompanhamento de tendências e inversão de negociações, podendo ser adaptada a diferentes ambientes de mercado.

  2. O processo de julgamento multidimensional antes da emissão do sinal de negociação, filtrando os falsos sinais e aumentando a taxa de vitória.

  3. O espaço para otimização de parâmetros é grande e pode ser otimizado por meio do ajuste do comprimento da média móvel, da cor da entidade K e do número de raízes.

  4. A lógica da estratégia é clara, concisa, fácil de entender e adequada para quem está começando.

Risco estratégico

  1. Em situações de grande agitação, é fácil formar uma série de osing, levando a uma maior retração. Pode-se ajustar adequadamente os parâmetros da média móvel ou adicionar um stop loss para evitar.

  2. Na fase de agendamento horizontal, é fácil a formação de whipsaw, trazendo prejuízos. Pode-se ajustar adequadamente o número de raízes para o julgamento da cor da entidade da linha K ou fechar a negociação inversa.

  3. A retrospectiva é necessária para garantir que os parâmetros sejam corretamente definidos, pois, caso contrário, o desempenho da estratégia pode ser afetado.

Direção de otimização

  1. Experimente diferentes tipos de médias móveis, como médias móveis indexadas, médias móveis adaptadas de Kaufman, etc.

  2. Aumentar o controle do volume de transações, como o volume fixo de transações ou o ajuste de acordo com os interesses da conta.

  3. Aumento do mecanismo de suspensão de perdas. Quando o preço cai novamente abaixo da média móvel lenta, pode-se considerar a suspensão de perdas.

  4. Os testes podem ser realizados em diferentes variedades para determinar a estabilidade e adaptabilidade da estratégia.

Resumir

A estratégia de acompanhamento de tendências de linha média móvel dupla, combinada com o julgamento de tendências e o comércio de reversão, pode efetivamente capturar o excedente de tendências de linha média e longa, mas também pode obter lucros adicionais na linha curta. O espaço de lucro pode ser ampliado ainda mais através da otimização de parâmetros e do reforço do mecanismo. A lógica da estratégia é simples e clara, muito adequada para o estudo de aprendizagem de novatos.

Código-fonte da estratégia
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs 1.5", shorttitle = "Trend MAs 1.5", 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")
type = input(7, defval = 7, minval = 1, maxval = 7, title = "Type of Slow MA")
src = input(close, defval = close, title = "Source of Slow MA")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")

fastsma = ema(src, fastlen)

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 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 ? 1 : high < ma ? -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 < fastsma or usefastsma == false) and redbars == 1 ? 1 : 0
dn = trend == -1 and (high > fastsma or usefastsma == false) and greenbars == 1 ? 1 : 0

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

//Trading
longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

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