Estratégia de crossover longo-curto baseada em oscilador de volume


Data de criação: 2023-12-12 11:19:04 última modificação: 2023-12-12 11:19:04
cópia: 0 Cliques: 855
1
focar em
1621
Seguidores

Estratégia de crossover longo-curto baseada em oscilador de volume

Visão geral

A estratégia é baseada em uma média móvel de longo prazo do volume de transações. Ela usa o EMA de diferentes períodos para calcular a tendência de longo prazo do volume de transações e, com seu diferencial, constrói um indicador de oscilação.

Princípio da estratégia

O indicador central da estratégia é o indicador de oscilação do volume de transações (Volume Oscillator). Ele reflete a tendência de mudança no volume de transações através do diferencial da média móvel do índice de volume de transações de longo prazo. A fórmula de cálculo é a seguinte:

Volume Oscillator = (ShortEMA - LongEMA) / LongEMA * 100

Entre eles, ShortEMA e LongEMA representam as médias móveis do índice de curto e longo prazo respectivamente. Quando o ShortEMA atravessa o LongEMA, o indicador é positivo, o que significa que o volume de transação está se expandindo; quando o ShortEMA atravessa o LongEMA, o indicador é negativo, o que significa que o volume de transação está se contraindo.

Depois de calcular o indicador de oscilação, a estratégia usa o seu cruzamento com o eixo zero para gerar um sinal de negociação. Quando o indicador é negativo, ou seja, quando atravessa o eixo zero, faça mais; Quando o indicador é negativo, ou seja, quando atravessa o eixo zero, faça zero.

Além disso, a estratégia também combina o alto e o baixo do anterior para julgar a direção específica da operação. Ou seja, quando o indicador passa pelo eixo zero, se o alto anterior for maior que o valor absoluto do baixo anterior, veja mais; ao contrário, veja menos. Utilize essa característica para julgar a intensidade da expansão do volume de negociação.

Vantagens estratégicas

A estratégia tem as seguintes vantagens:

  1. Usando o volume de transações como um indicador básico, é possível determinar com eficácia a vontade dos participantes do mercado, com uma forte utilidade.

  2. A combinação de EMAs de curto e longo prazo permite capturar simultaneamente tendências de médio e longo prazo e dinâmicas de curto prazo.

  3. Os sinais de negociação formados pelo cruzamento do indicador com o eixo zero são simples, claros e fáceis de discernir.

  4. A adição de um ponto alto ou baixo anterior para determinar a direção específica da operação, pode efetivamente aproveitar o volume de transações.

  5. A estratégia é clara, os parâmetros são flexíveis e a adaptabilidade é forte.

Risco estratégico

A estratégia também apresenta alguns riscos que devem ser lembrados:

  1. Os indicadores de volume de transação são suscetíveis a falhas no mercado, podendo gerar sinais errados. Pode-se definir um stop loss para controlar o risco.

  2. Em situações de turbulência, o cruzamento de volumes pode ser frequente e a reversão do indicador precisa ser razoavelmente confirmada.

  3. Os altos e baixos anteriores refletem apenas a expansão mais recente, e não é possível determinar a duração de sua intensidade.

  4. Os parâmetros de diferentes variedades e períodos de tempo precisam ser otimizados individualmente e não são suficientemente universais.

  5. O indicador de volume de transação é lento em reagir a transações programadas de alta frequência, podendo perder o melhor momento de entrada.

Direção de otimização da estratégia

A estratégia pode ser melhorada em vários aspectos:

  1. Adicionar condições de filtragem para evitar sinais falsos, como a confirmação de inclusão de indicadores de preços.

  2. Otimização dos parâmetros de ciclo dos EMAs de curto e longo prazo para que sejam mais adequados às características de diferentes variedades.

  3. Configure os parâmetros de ciclo para o ponto mais alto e mais baixo do período anterior, usando o preço mais alto e o preço mais baixo de um período de tempo.

  4. Defina a área de conversão do indicador como um intervalo para evitar transações frequentes.

  5. Aumentar as estratégias de stop loss e controlar as perdas individuais.

  6. Indicadores técnicos de avaliação em combinação com outros indicadores de avaliação, como o indicador de avaliação do VRP.

  7. Parâmetros de otimização automática usando métodos de aprendizagem de máquina.

Resumir

Em geral, a estratégia de cruzamento de linhas longas e curtas baseada no indicador de volatilidade do volume de negociação aproveita ao máximo as características da reversão do volume de negociação, tem um bom discernimento e uma boa detecção no início do desenvolvimento da tendência. Ao mesmo tempo, a combinação de altos e baixos anteriores para determinar a direção específica, torna a decisão de negociação mais precisa.

Código-fonte da estratégia
/*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)