A estratégia usa uma média móvel ponderada elástica de dois períodos diferentes (EVWMA) para operar de forma cruzada para gerar um sinal de compra e uma de venda. Um sinal de compra é gerado quando uma linha de curto período atravessa uma linha de longo período. Um sinal de venda é gerado quando uma linha de curto período atravessa uma linha de longo período.
A estratégia determina a variação da tendência através do cálculo das linhas EVWMA de diferentes períodos e fazendo com que elas se cruzem.
Para se ter uma ideia, primeiro calcula duas linhas EVWMA:
Linha de curto período m1, período length1, o padrão é 5
A linha de comprimento m2, a duração do período 2, o padrão é 40
Em seguida, ele julga a interseção de m1 e m2 com as funções de crossover e crossunder:
Se m1 atravessado por m2, gera um sinal de compra e executa a operação long
Se a m1 atravessar a m2, um sinal de venda será gerado e uma operação de curto prazo será executada.
Note-se que o EVWMA, ao contrário da média móvel comum, dá maior peso aos dados mais recentes, de modo a responder mais rapidamente às mudanças de preço. A fórmula de cálculo é a seguinte:
data = (nz(data[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume_price/nb_floating_shares)
Nz ((data)[1]) representa o valor do EVWMA do período anterior, o nb_floating_shares representa o volume total de transações no período, o volume representa o volume de transações do período atual e o volume_price representa o volume de transações do período atual. Isso permite que os dados mais recentes sejam mais pesados.
A estratégia tem as seguintes vantagens:
A utilização do EVWMA permite uma resposta mais rápida às mudanças de preços e melhores oportunidades de lucro
O uso de duplo cruzamento de linhas EVWMA permite detectar pontos de mudança de tendência e entrar em tempo
Simples de usar e fácil de implementar
Duração de ciclo personalizável, adaptável a diferentes circunstâncias de mercado
Não precisa de parâmetros complexos de otimização, é fácil de disco rígido
A estratégia também apresenta alguns riscos:
Os binários não conseguem filtrar o ruído do mercado, podendo gerar uma grande quantidade de sinais inativos
Não é possível determinar o ponto de reversão da tendência e existe o risco de perder a reversão.
Mecanismos de bloqueio ininterrupto que não controlam os riscos de forma eficaz
Parâmetros de otimização insuficiente, configuração de ciclo de linha imprópria pode perder o efeito
A estratégia pode ser melhorada em vários aspectos:
Aumentar as estratégias de suspensão de prejuízos e controlar rigorosamente os riscos
Optimizar a duração do ciclo da linha, escolher o melhor parâmetro
Adição de sinais de filtragem de volume de transação para reduzir transações inválidas
Combinado com outros indicadores, o que determina a reversão da tendência e reduz as oportunidades perdidas
Parâmetros de otimização dinâmica, comprimento de ciclo da linha de ajuste de acordo com as mudanças do mercado
Distinguir entre mercados de títulos e mercados de títulos, usando diferentes parâmetros
Algoritmos de aprendizagem de máquina usam treinamento de big data para determinar quando comprar ou vender
Em geral, esta estratégia de cruzamento de média móvel ponderada elástica pode ser usada para detectar mudanças de tendência e gerar sinais de negociação. A estratégia é simples e fácil de usar, mas há alguns riscos e direções de otimização.
/*backtest
start: 2023-08-18 00:00:00
end: 2023-08-26 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Elastic Volume Weighted Moving Average Cross Strategy", shorttitle="EVWMA Cross", overlay=true)
length1=input(5, title="EVWMA Short")
length2=input(40, title="EVWMA Long")
nbfs1=sum(volume, length1)
nbfs2=sum(volume, length2)
medianSrc=close
calc_evwma(price, length, nb_floating_shares) =>
data = (nz(data[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume*price/nb_floating_shares)
data
m1=calc_evwma(medianSrc, length1, nbfs1)
m2=calc_evwma(medianSrc, length2, nbfs2)
if (crossover(m1, m2))
strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE")
if (crossunder(m1, m2))
strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE")
p1=plot(m1,color=orange,linewidth=2, title="evwma")
p2=plot(m2,color=orange,linewidth=2, title="evwma")