Oscilador de volume Estratégia de cruzamento da média móvel de curto e longo prazo

Autora:ChaoZhang, Data: 2023-12-12 11:19:04
Tags:

img

Resumo

Esta estratégia é baseada no cruzamento de médias móveis de longo e curto prazo do volume de negociação. Ele usa EMAs de diferentes períodos para calcular as tendências de longo e curto prazo do volume de negociação e constrói um oscilador com base em sua diferença. Ele vai longo quando o oscilador cruza acima do nível zero e vai curto quando cruza abaixo. Ele também incorpora preços altos e baixos anteriores para determinar a direção específica.

Estratégia lógica

O indicador central desta estratégia é o oscilador de volume. Ele reflete a tendência da mudança de volume de negociação, calculando a diferença entre as médias móveis exponenciais de longo prazo e de curto prazo.

Oscilador de volume = (ShortEMA - LongEMA) / LongEMA * 100

Aqui, o ShortEMA e o LongEMA se referem a EMAs de curto e longo prazo, respectivamente. Quando o ShortEMA cruza o LongEMA, o indicador se torna positivo, implicando um volume de negociação em expansão. Quando o ShortEMA cruza abaixo do LongEMA, o indicador se torna negativo, implicando um volume de negociação em contração.

Após o cálculo do oscilador, esta estratégia usa seu cruzamento com o nível zero para gerar sinais de negociação. Ele vai longo quando o oscilador vira de negativo para positivo, ou seja, cruzando acima do nível zero, e vai curto quando vira de positivo para negativo, ou seja, cruzando abaixo do nível zero. Isso reflete a conversão de impulso do volume de negociação.

Além disso, a estratégia também incorpora preços altos e baixos anteriores para determinar direções específicas. Ou seja, quando o oscilador cruza acima do nível zero, se o preço alto anterior for maior que o valor absoluto do preço baixo anterior, isso implica um sinal longo, caso contrário, um sinal curto.

Vantagens

Esta estratégia tem as seguintes vantagens:

  1. Usar o volume de negociação como indicador de base pode determinar eficazmente a vontade dos participantes no mercado e é muito prático.

  2. A incorporação de EMAs de longo prazo e de curto prazo permite captar simultaneamente as tendências de médio e longo prazo e o ímpeto de curto prazo.

  3. Os sinais de cruzamento formados pelo indicador e pelo nível zero são simples e claros para a tomada de decisões.

  4. A adição de máximos e mínimos anteriores para determinar as direções pode fazer bom uso do tamanho do ímpeto dos volumes de negociação.

  5. A lógica da estratégia é simples, os parâmetros são flexíveis para ajustamento e tem uma adaptabilidade relativamente forte.

Riscos

É necessário observar alguns riscos desta estratégia:

  1. O indicador de volume pode ser influenciado por falhas de mercado, gerando sinais errados.

  2. Em mercados de intervalo, podem ocorrer frequentemente cruzes de volume, sendo necessária uma confirmação adequada dos pontos de viragem dos indicadores.

  3. Os altos e baixos anteriores reflectem apenas a mais recente expansão e não podem determinar a sua sustentabilidade.

  4. Os parâmetros precisam de otimização separada para diferentes produtos e períodos de tempo.

  5. O indicador de volume reage lentamente à negociação algorítmica de alta frequência, possivelmente perdendo o melhor momento de entrada.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Adicionar filtros para evitar sinais falsos, por exemplo, confirmar com indicadores de preços.

  2. Otimizar os períodos de EMA de longo e curto prazo para que correspondam às características dos diferentes produtos.

  3. Estabelecimento de parâmetros de período para os máximos e mínimos anteriores para utilizar os preços máximos e mínimos de um período.

  4. Definição de um intervalo para a área de rotação do indicador em vez de um único nível para evitar a troca excessiva.

  5. Adicionar estratégias de stop loss para controlar perdas individuais.

  6. Incorporar outros indicadores baseados no volume, como o VRP.

  7. Usando métodos de aprendizagem de máquina para otimizar automaticamente parâmetros.

Resumo

Em resumo, a estratégia de crossover de média móvel de curto prazo faz bom uso das características de reversão de volume e tem forte poder de julgamento na fase inicial das tendências. Adicionar altos e baixos anteriores para determinar direções torna as decisões de negociação mais precisas. O controle de risco também é importante para evitar perdas de sinais falsos. Esta estratégia tem grande espaço para otimização, em aspectos como ajuste de parâmetros e combinação de indicadores, para encurtar seu atraso de negociação e tempo de reação às mudanças do mercado.


/*backtest
start: 2022-12-05 00:00:00
end: 2023-03-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("SB_Volume_oscillator_Prev_high_low", overlay=true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

shortlen = input(5, minval=1)
longlen = input(10, minval=1)
short = ema(volume, shortlen)
long = ema(volume, longlen)
osc = 100 * (short - long) / long
//hline(0, title="Zero")
//plot(osc)
zero=input(0.0)

low_val=input(0.0)
high_val=input(0.0)
prev_high_val=input(0.0)
prev_low_val=input(0.0)
where=input(0)
where:=nz(where[1])
low_val:=nz(low_val[1])
high_val:=nz(high_val[1])
prev_high_val:=nz(prev_high_val[1])
prev_low_val:=nz(prev_low_val[1])
if(crossover(osc,zero))
    high_val:=osc
    where:=1
    prev_low_val:=low_val
    low_val:=osc

if(crossunder(osc,zero))
    low_val:=osc
    where:=-1
    prev_high_val:=high_val
    high_val:=osc

if(where==1)
    if(high_val<osc)
        high_val:=osc
        
if(where==-1)
    if(low_val>osc)
        low_val:=osc


if (crossover(osc,zero))
    if(prev_high_val<=abs(prev_low_val))
        strategy.entry("My Long Entry Id", strategy.long)
    if(prev_high_val>abs(prev_low_val))
        strategy.entry("My Short Entry Id", strategy.short)

if (crossunder(osc,zero))
    if(prev_high_val<=abs(prev_low_val))
        strategy.entry("My Long Entry Id", strategy.long)
    if(prev_high_val>abs(prev_low_val))
        strategy.entry("My Short Entry Id", strategy.short)

Mais.