Estratégia de negociação de média móvel multi-tempo


Data de criação: 2023-09-21 20:45:38 última modificação: 2023-09-21 20:45:38
cópia: 3 Cliques: 1241
1
focar em
1617
Seguidores

Visão geral

Esta estratégia usa o cruzamento de médias móveis de múltiplos períodos para determinar os sinais de negociação. A estratégia pode observar médias móveis de períodos mais longos no período atual para descobrir a direção da tendência maior.

Princípio da estratégia

A estratégia usa duas médias móveis, calculadas no período atual e no período superior.

Por exemplo, a linha de 20 dias e a linha de 50 dias num gráfico de 15 minutos:

  • Linha de 20 dias com base na linha K de 15 minutos atual
  • A linha 50 é calculada a partir da linha K

Quando 15 minutos na linha de 20 dias atravessam a linha de 50 dias, faça mais; quando 15 minutos na linha de 20 dias abaixo atravessam a linha de 50 dias, faça vazio.

Isso permite a observação de tendências de períodos mais longos no ciclo atual. A estratégia também permite a personalização do comprimento do ciclo da média móvel.

Os pontos de sinalização cruzada também podem exibir marcas em forma de ponto para alertar sobre a transação.

Vantagens estratégicas

  • Análise de quadros de tempo para encontrar tendências maiores
  • Linhas de alta periodicidade são mais estáveis e evitam excesso de falsos sinais
  • As linhas de baixa periodicidade são mais sensíveis e capturam rapidamente as mudanças de tendência
  • Pode definir a combinação de múltiplos conjuntos de períodos lineares
  • Indicações de transação com marcações pontuais

Risco estratégico

  • A síntese de multi-quadros de tempo aumenta a complexidade da estratégia
  • O risco de falsos sinais em linhas de baixa periodicidade permanece
  • O sistema de linha média está atrasado em geral e pode ter perdido os melhores pontos de entrada.
  • Apenas um sistema linear, com filtragem limitada
  • A combinação de parâmetros de ciclo precisa ser otimizada, as diferentes variedades não são necessariamente iguais

As medidas a seguir podem reduzir o risco:

  • Manter uma média periódica mais alta para garantir que as principais tendências sejam corretas

  • Adição de outros indicadores técnicos para filtragem de sinais

  • Optimizar os parâmetros do ciclo de equilíbrio para combinações ótimas

  • Condições de admissão adequadamente relaxadas, como a inclusão de uma forma de linha K.

Direção de otimização

A estratégia pode ser melhorada em alguns aspectos:

  1. Testar mais combinações de ciclos equilíneos e parâmetros de otimização

Combinações de diferentes períodos têm combinações de melhor correspondência para diferentes variedades

  1. Adicionar uma condição de confirmação secundária ao cruzar

Por exemplo, verifique a trajetória do indicador MACD ao cruzar

  1. Optimizar o Stop Loss para evitar o Stop Loss prematuro

A decisão de se retirar pode ser baseada em evidências auxiliares do PostForm123

  1. Filtração de curto e longo período

Os ciclos curtos usam condições de filtragem mais rigorosas e os ciclos longos usam condições mais flexíveis

  1. Considerar diferentes combinações de parâmetros para cada período de tempo

Diferentes períodos de tempo têm características de mercado diferentes e podem ser otimizados para parâmetros

Resumir

A estratégia julga a direção da tendência observando o cruzamento da linha de equilíbrio de múltiplos quadros temporais para descobrir tendências de maior nível. Isso pode eliminar efetivamente o ruído de curto prazo, o ritmo de mercado maior. Mas também há dificuldades de configuração de ciclo, atraso no julgamento de tendências e outros problemas.

Código-fonte da estratégia
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 7d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

//Run script on a long interval gives better result for e.g. 1 Day
//Plots The Majority of Moving Averages
//Defaults to Current Chart Time Frame --- But Can Be Changed to Higher Or Lower Time Frames
//2nd MA Capability with Show Crosses Feature
//study(title="CM_Ultimate_MA_MTF", shorttitle="CM_Ultimate_MA_MTF", overlay=true)
strategy("Stratergy CM_Ultimate_MA_MTF", shorttitle = "Stratergy CM_Ultimate_MA_MTF", overlay = true) 
//,default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//inputs
src = close
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above",  defval="D")
len = input(20, title="Moving Average Length - LookBack Period")
atype = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA")
cc = input(true,title="Change Color Based On Direction?")
smoothe = input(2, minval=1, maxval=10, title="Color Smoothing - 1 = No Smoothing")
doma2 = input(false, title="Optional 2nd Moving Average")
len2 = input(50, title="Moving Average Length - Optional 2nd MA")
atype2 = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA")
cc2 = input(true,title="Change Color Based On Direction 2nd MA?")
warn = input(false, title="***You Can Turn On The Show Dots Parameter Below Without Plotting 2nd MA to See Crosses***")
warn2 = input(false, title="***If Using Cross Feature W/O Plotting 2ndMA - Make Sure 2ndMA Parameters are Set Correctly***")
sd = input(false, title="Show Dots on Cross of Both MA's")


res = useCurrentRes ? timeframe.period : resCustom
//hull ma definition
hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
//TEMA definition
ema1 = ema(src, len)
ema2 = ema(ema1, len)
ema3 = ema(ema2, len)
tema = 3 * (ema1 - ema2) + ema3

avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src,len) : tema
//2nd Ma - hull ma definition
hullma2 = wma(2*wma(src, len2/2)-wma(src, len2), round(sqrt(len2)))
//2nd MA TEMA definition
sema1 = ema(src, len2)
sema2 = ema(sema1, len2)
sema3 = ema(sema2, len2)
stema = 3 * (sema1 - sema2) + sema3

avg2 = atype2 == 1 ? sma(src,len2) : atype2 == 2 ? ema(src,len2) : atype2 == 3 ? wma(src,len2) : atype2 == 4 ? hullma2 : atype2 == 5 ? vwma(src, len2) : atype2 == 6 ? rma(src,len2) : tema

out = avg 
out_two = avg2

out1 = security(syminfo.tickerid, res, out)
out2 = security(syminfo.tickerid, res, out_two)

ma_up = out1 >= out1[smoothe]
ma_down = out1 < out1[smoothe]

col = cc ? ma_up ? lime : ma_down ? red : aqua : aqua
col2 = cc2 ? ma_up ? lime : ma_down ? red : aqua : aqua

circleYPosition = out2
chk=col==red?1:0

if (not na(chk))
    if (chk[1]==1 and chk==0)
        strategy.entry("RsiLE", strategy.long, comment="RsiLE")
    else
        strategy.exit("RsiLE")

    if (chk[1]==0 and chk==1)
        strategy.entry("RsiSE", strategy.short, comment="RsiLE")
    else
        strategy.exit("RsiSE")
        
plot(out1, title="Multi-Timeframe Moving Avg", style=line, linewidth=4, color = col)
plot(doma2 and out2 ? out2 : na, title="2nd Multi-TimeFrame Moving Average", style=circles, linewidth=4, color=col2)
plot(sd and cross(out1, out2) ? circleYPosition : na,style=cross, linewidth=5, color=yellow)