
A estratégia de empilhamento de cruzamento de médias móveis ponderadas auto-adaptadas (AWMA) é um sistema de acompanhamento de tendências baseado em relações de cruzamento e empilhamento de médias móveis ponderadas (WMA) de múltiplos períodos. A estratégia combina habilmente 6 WMA de períodos curtos e 6 WMA de períodos longos para determinar a direção e a força da tendência do mercado, observando a relação de cruzamento e posição relativa entre eles.
Os princípios centrais da estratégia baseiam-se na análise hierárquica e no mecanismo de confirmação múltipla das médias móveis ponderadas:
Computação de WMA de múltiplos períodos:
Análise de parâmetros-chave:
Condições de entrada:
Condições de partida:
A estratégia pode capturar a formação de uma tendência em tempo hábil, mas também pode fornecer um sinal de saída suave quando a tendência enfraquece, reduzindo a interferência de falsos sinais.
Uma análise aprofundada da implementação do código da estratégia pode ser resumida em algumas vantagens significativas:
Mecanismo de confirmação múltiplaA estratégia exige que os dois requisitos de sinal de cruzamento e confirmação de acumulação sejam cumpridos antes de executar a negociação, reduzindo significativamente o risco de falsas rupturas. Em particular, o condicionamento de acumulação (bullAlign/bearAlign) exige que todos os indicadores de curto prazo estejam no mesmo lado de todos os indicadores de longo prazo, o que é uma confirmação de tendência muito forte.
Altamente adaptávelA estratégia é capaz de se adaptar a diferentes ambientes de mercado e oscilações de preços através da utilização de WMAs de vários períodos diferentes. O grupo de curto período capta o momento, enquanto o grupo de longo período confirma a direção da tendência geral.
Regras claras de entrada e saídaA estratégia fornece sinais de entrada e saída objetivos baseados em modelos matemáticos, reduzindo a interferência emocional causada por julgamentos subjetivos.
Mecanismo de saída asynchronousA entrada é baseada em cruzamento de extremos e empilhamento e a saída é baseada em cruzamento de médias, o que permite que a estratégia mantenha a posição por mais tempo em uma tendência forte e saia em tempo hábil quando a tendência diminui.
Sistema de notificação perfeitoA estratégia integra um mecanismo de alerta baseado no formato JSON, que pode ser conectado a um sistema de robôs externo, permitindo transações automatizadas e monitoramento remoto.
Apoio em visualizaçãoA estratégia traça todas as 12 linhas do indicador WMA no gráfico, permitindo que os comerciantes observem intuitivamente a estrutura do mercado e os sinais potenciais.
Apesar da estratégia ser bem concebida, existem alguns riscos e desafios potenciais:
Sensibilidade do parâmetroA estratégia usa 12 diferentes parâmetros de ciclo WMA, cuja escolha pode ter um impacto significativo na performance da estratégia. Diferentes mercados ou prazos de tempo podem exigir diferentes combinações de parâmetros para obter o melhor resultado.
Mercado de choque não está indo bemComo uma estratégia de acompanhamento de tendências, pode ocorrer frequentes falsos sinais e “efeitos de whipsaw” em mercados de baixa ou alta volatilidade, resultando em perdas contínuas.
Problemas de atrasoTodos os sistemas baseados em médias móveis apresentam um certo atraso. Apesar do uso de um WMA mais curto para reduzir o problema, é possível perder os melhores pontos de entrada ou saída em mercados de rápida reversão.
Complexidade do cálculoA estratégia requer o cálculo e comparação de várias médias móveis, o que pode causar problemas de desempenho em algumas plataformas de negociação, especialmente em ambientes de negociação de baixo tempo ou alta frequência.
Sinais de congestionamento: Em certas condições de mercado, os WMAs de curto e longo prazo podem se cruzar com frequência, resultando em excesso de sinais de negociação, aumentando os custos de negociação e podendo levar a excesso de negociação.
Com base na análise acima, a estratégia pode ser otimizada em vários aspectos:
Ajuste de parâmetros dinâmicos:
Filtragem do cenário de mercado:
Gestão de Riscos reforçada:
Melhoria da qualidade do sinal:
Quadro de avaliação e otimização:
A estratégia de estocagem de cruzamento de médias móveis autogravadas é um sistema de rastreamento de tendências bem projetado para identificar tendências fortes e fornecer sinais de negociação claros por meio de relações de cruzamento e estocagem de múltiplos WMAs. A vantagem central da estratégia reside em seu mecanismo de confirmação múltipla e design de saída asynchronous, que permite capturar de forma eficaz tendências contínuas e reduzir o risco de falso sinal.
No entanto, como qualquer estratégia de análise técnica, ela também enfrenta desafios como fraco desempenho em mercados de turbulência e sensibilidade de parâmetros. A performance da estratégia pode ser melhorada ainda mais com a introdução de ajustes de parâmetros dinâmicos, filtragem do ambiente de mercado e mecanismos de gerenciamento de risco aprimorados.
Para os comerciantes, é fundamental entender os princípios e as limitações da estratégia, e é recomendável fazer um bom teste de retorno e simulação de negociação antes da aplicação no mercado real, e ajustar os parâmetros de acordo com a variedade de negociação específica e o ambiente de mercado. Ao mesmo tempo, o uso da estratégia como parte de um sistema de negociação mais amplo, combinado com a análise fundamental e os princípios de gerenciamento de risco, para obter um efeito de negociação estável a longo prazo.
/*backtest
start: 2024-06-23 00:00:00
end: 2025-06-21 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("AWMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, calc_on_every_tick=true)
// Inputs
_Period1 = input.int(3, 'WMA1 Period')
_Period2 = input.int(5, 'WMA2 Period')
_Period3 = input.int(8, 'WMA3 Period')
_Period4 = input.int(10, 'WMA4 Period')
_Period5 = input.int(12, 'WMA5 Period')
_Period6 = input.int(15, 'WMA6 Period')
_Period7 = input.int(30, 'WMA7 Period')
_Period8 = input.int(35, 'WMA8 Period')
_Period9 = input.int(40, 'WMA9 Period')
_Period10 = input.int(45, 'WMA10 Period')
_Period11 = input.int(50, 'WMA11 Period')
_Period12 = input.int(60, 'WMA12 Period')
// Calculate WMA
wma1 = ta.wma(close, _Period1)
wma2 = ta.wma(close, _Period2)
wma3 = ta.wma(close, _Period3)
wma4 = ta.wma(close, _Period4)
wma5 = ta.wma(close, _Period5)
wma6 = ta.wma(close, _Period6)
wma7 = ta.wma(close, _Period7)
wma8 = ta.wma(close, _Period8)
wma9 = ta.wma(close, _Period9)
wma10 = ta.wma(close, _Period10)
wma11 = ta.wma(close, _Period11)
wma12 = ta.wma(close, _Period12)
// Max/Min/Average of short and long WMA groups
short_max = math.max(math.max(math.max(math.max(math.max(wma1, wma2), wma3), wma4), wma5), wma6)
short_min = math.min(math.min(math.min(math.min(math.min(wma1, wma2), wma3), wma4), wma5), wma6)
long_max = math.max(math.max(math.max(math.max(math.max(wma7, wma8), wma9), wma10), wma11), wma12)
long_min = math.min(math.min(math.min(math.min(math.min(wma7, wma8), wma9), wma10), wma11), wma12)
avg_short = (wma1 + wma2 + wma3 + wma4 + wma5 + wma6) / 6
avg_long = (wma7 + wma8 + wma9 + wma10 + wma11 + wma12) / 6
// Cross events and trend alignment
bullCross = ta.crossover(short_max, long_min)
bearCross = ta.crossunder(short_max, long_min)
bullAlign = short_min > long_max
bearAlign = short_max < long_min
// State flags
var bool readyLong = false
var bool readyShort = false
if bullCross
readyLong := true
if bearCross
readyShort := true
// Message variables
sym = syminfo.ticker
tf = timeframe.period
price = str.tostring(close)
// Entry and Alerts
if barstate.isconfirmed
if readyLong and bullAlign
strategy.entry("Long", strategy.long, comment="[AWMA] Long Entry")
readyLong := false
if readyShort and bearAlign
strategy.entry("Short", strategy.short, comment="[AWMA] Short Entry")
readyShort := false
// Exit conditions: Avg WMA cross
if ta.crossunder(avg_short, avg_long)
strategy.close("Long", comment="[AWMA] Close Long")
alert('{"text":"Long position closed\nTicker: ' + sym + '\nTimeframe: ' + tf + '\nAvg Short WMA: ' + str.tostring(avg_short) + '\nAvg Long WMA: ' + str.tostring(avg_long) + '\nClose: ' + price + '"}', alert.freq_once_per_bar_close)
if ta.crossover(avg_short, avg_long)
strategy.close("Short", comment="[AWMA] Close Short")
alert('{"text":"Short position closed\nTicker: ' + sym + '\nTimeframe: ' + tf + '\nAvg Short WMA: ' + str.tostring(avg_short) + '\nAvg Long WMA: ' + str.tostring(avg_long) + '\nClose: ' + price + '"}', alert.freq_once_per_bar_close)
// Plotting
plot(wma1, color=color.new(#4fc3d2, 0), title='Short WMA 1')
plot(wma2, color=color.new(#4fc3d2, 0), title='Short WMA 2')
plot(wma3, color=color.new(#4fc3d2, 0), title='Short WMA 3')
plot(wma4, color=color.new(#4fc3d2, 0), title='Short WMA 4')
plot(wma5, color=color.new(#4fc3d2, 0), title='Short WMA 5')
plot(wma6, color=color.new(#4fc3d2, 0), title='Short WMA 6')
plot(wma7, color=color.new(#fe0d5f, 0), title='Long WMA 1')
plot(wma8, color=color.new(#fe0d5f, 0), title='Long WMA 2')
plot(wma9, color=color.new(#fe0d5f, 0), title='Long WMA 3')
plot(wma10, color=color.new(#fe0d5f, 0), title='Long WMA 4')
plot(wma11, color=color.new(#fe0d5f, 0), title='Long WMA 5')
plot(wma12, color=color.new(#fe0d5f, 0), title='Long WMA 6')
// Uncomment if you want to show the averages
// plot(avg_short, color=color.new(#00FF00, 0), title='Avg Short WMA')
// plot(avg_long, color=color.new(#FF0000, 0), title='Avg Long WMA')