Estratégia cruzada de média móvel ponderada pelo volume elástico

Autora:ChaoZhang, Data: 2023-09-18 22:07:14
Tags:

Resumo

Esta estratégia usa duas linhas EVWMA com períodos diferentes para gerar crossovers e produzir sinais de compra e venda. Quando a linha de curto período cruza a linha de longo período, gera um sinal de compra. Quando a linha de curto período cruza abaixo da linha de longo período, gera um sinal de venda.

Estratégia lógica

A estratégia identifica as alterações de tendência através do cálculo e cruzamento de duas linhas EVWMA com períodos diferentes.

Especificamente, primeiro calcula duas linhas EVWMA:

  1. Linha de curto prazo m1, com duração de período1, por defeito a 5

  2. Linha de período longo m2, com duração de período2, por defeito 40

Em seguida, utiliza as funções de cruzamento e de cruzamento para determinar as situações de cruzamento entre m1 e m2:

  • Se m1 cruzar sobre m2, ele gera um sinal de compra e executa a operação longa

  • Se m1 cruzar abaixo de m2, ele gera um sinal de venda e executa uma operação curta

Observe que a EVWMA dá mais peso aos dados recentes em comparação com a média móvel simples.

data = (nz(data[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume_price/nb_floating_shares)

Onde nz ((data[1]) é o valor EVWMA do período anterior, nb_floating_shares é o volume total do período, volume é o volume do período atual e volume_preço é o volume de negócios do período atual.

Análise das vantagens

As vantagens desta estratégia incluem:

  1. A EVWMA responde mais rapidamente às alterações de preços e melhora as oportunidades de lucro

  2. Crossover de linhas duplas EVWMA identifica pontos de viragem em tempo hábil

  3. Lógica simples e fácil de implementar

  4. Períodos de duração personalizáveis para adaptar os diferentes ambientes de mercado

  5. Nenhuma otimização complexa de parâmetros necessária e fácil para negociação ao vivo

Riscos e soluções

Há também alguns riscos com esta estratégia:

  1. Os crossovers podem gerar sinais inválidos excessivos sem filtrar o ruído do mercado

    • Solução: combinar com o volume ou outros indicadores para filtrar sinais
  2. Dificuldade de identificar pontos de inversão da tendência e riscos de falta de inversões

    • Solução: Ajustar os parâmetros do período ou adicionar outros indicadores de reversão
  3. Nenhum stop loss ou take profit, incapaz de controlar eficazmente os riscos

    • Solução: definir os correlativos de stop loss e take profit adequados com base em dados históricos e volatilidade
  4. Optimização de parâmetros insuficiente leva a configurações de período inadequadas

    • Solução: Otimize os parâmetros através de backtesting e escolha comprimentos adequados

Orientações para melhorias

Algumas orientações para melhorar a estratégia:

  1. Adicionar stop loss e take profit para controlar estritamente os riscos

  2. Otimizar o comprimento do período para encontrar os melhores parâmetros

  3. Adicionar filtro de volume para reduzir transações inválidas

  4. Combinar com indicadores de reversão para evitar reversões em falta

  5. Optimização dinâmica dos parâmetros com base nas alterações do mercado

  6. Diferenciar os mercados dos touros e dos ursos e utilizar parâmetros diferentes

  7. Introduzir modelos de aprendizagem de máquina para determinar o calendário de negociação com base em big data

Conclusão

Em resumo, esta estratégia cruzada EVWMA pode identificar efetivamente as mudanças de tendência e gerar sinais de negociação, calculando e cruzando linhas EVWMA duplas. A lógica é simples, mas há riscos e direções de melhoria. Ao otimizar o stop loss, seleção de parâmetros, integração de outros indicadores, etc., a estratégia pode ser fortalecida para negociação ao vivo.


/*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")

Mais.