Estratégia de força de volatilidade baseada no cálculo de volume-preço-longo prazo


Data de criação: 2023-10-30 17:03:02 última modificação: 2023-10-30 17:03:02
cópia: 0 Cliques: 669
1
focar em
1617
Seguidores

Estratégia de força de volatilidade baseada no cálculo de volume-preço-longo prazo

A estratégia baseia-se em um indicador de medição do preço e do comprimento para projetar sinais de negociação que permitam julgar a força de compra e venda no mercado.

Princípio da estratégia

O indicador VB reflete o impulso da mudança de volume de transação sobre os preços. Sua estrutura é:

  1. A taxa de flutuação diária calculada para um preço típico representa a força de variação do preço.

  2. A força de compra e venda no fechamento é determinada pela multiplicação do volume de transações e da força de flutuação dos preços.

  3. Os valores do indicador flutuam no eixo 0 para baixo, e a base de medição da força do espaço-tempo é o valor positivo-negativo do indicador.

Esta estratégia constrói o indicador VB e define uma linha de sinal. Um sinal de compra é gerado quando o indicador VB atravessa a linha de sinal; um sinal de venda é gerado quando o indicador VB atravessa a linha de sinal.

Os principais passos do código são os seguintes:

  1. Calcule a taxa de flutuação diária de um preço típico inter como a força de mudança de preço.

  2. Configure o coefficiente de interseção da força de oscilação, e as forças de oscilação que ultrapassam esse intervalo são consideradas coefficientes.

  3. Calcule a força quantitativa vcp após o corte.

  4. Requerer e vcp obter indicadores de quantificação vfi ≠

  5. Configure o comprimento da linha de sinal signalLength, para obter a linha de sinal vfima。

  6. Comparando o indicador VB vfi e a linha de sinal vfima, gerando um sinal de transação.

Vantagens estratégicas

A estratégia tem as seguintes vantagens:

  1. O preço não é influenciado pela força de compra e venda do mercado, mas pela relação de preço e quantidade.

  2. Pode-se configurar um parâmetro para controlar a quantidade de força e evitar o impacto de flutuações anormais.

  3. Combinando o próprio indicador VB com a comparação da linha de sinalização, pode-se definir um horário de entrada razoável.

  4. O método de cálculo do indicador é simples, claro e fácil de operar no disco rígido.

  5. Parâmetros de indicador e linha de sinal podem ser personalizados para otimizar o efeito da estratégia.

Risco estratégico

A estratégia também apresenta alguns riscos:

  1. O indicador VB é sensível a flutuações anormais de preços e precisa de um parâmetro de corte apropriado.

  2. A probabilidade de que o preço da ação se desvie dos sinais do indicador é maior e deve-se evitar o seguimento cego.

  3. Os parâmetros do indicador e os parâmetros da linha de sinal precisam ser apropriadamente otimizados para evitar a produção de falsos sinais.

  4. Aplica-se a variedades com características de quantidade visíveis e não é recomendado para variedades com pouca mobilidade.

  5. A tendência é de que os indicadores se dispersem, o que pode indicar uma reversão do mercado.

O risco pode ser controlado por meio de ajustes nos parâmetros, filtragem em combinação com outros indicadores e estancamento adequado.

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

A estratégia pode ser otimizada em:

  1. Otimizar os parâmetros de cálculo para quantificar a força, equilibrando a sensibilidade e a estabilidade.

  2. Otimização de parâmetros de linha de sinal, equilíbrio de atraso e ruído.

  3. Adição de indicadores como Volume Spread Analysis para comprovação de eficácia.

  4. Aumentar a tendência e apoiar os indicadores de resistência, evitando a negociação em sentido contrário.

  5. Estabelecer um mecanismo de stop loss dinâmico, ajustando o ponto de stop loss de acordo com a volatilidade do mercado.

  6. Treinar o melhor conjunto de parâmetros usando métodos de aprendizagem de máquina.

  7. Revisão em várias variedades e em diferentes ciclos para avaliar a robustez da estratégia.

  8. Comparar o impacto de diferentes parâmetros de indicadores na curva de ganhos, procurando o parâmetro ideal.

Resumir

A estratégia baseia-se em indicadores de medição do preço e do comprador, para julgar a força de compra e venda. Ela tem vantagens como a simplicidade do design do indicador, o ajuste dos parâmetros, mas também existe um certo risco de falso sinal.

Código-fonte da estratégia
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("VB Strategy", overlay=true)

length = input(130, title="거래량 길이")
coef = input(0.2, title="계수")
vcoef = input(2.5, title="최대 계수")
signalLength=input(5)
smoothVFI=input(false, type=bool, title="부드럽게")
//볼밴
length2 = input(20, minval=1, title="볼밴 길이")

ma(x,y) => smoothVFI ? sma(x,y) : x

typical=hlc3
inter = log( typical ) - log( typical[1] )
vinter = stdev(inter, 30 )
cutoff = coef * vinter * close
vave = sma( volume, length )[1]
vmax = vave * vcoef
vc = iff(volume < vmax, volume, vmax)
mf = typical - typical[1]
vcp = iff( mf > cutoff, vc, iff ( mf < -cutoff, -vc, 0 ) )

vfi = ma(sum( vcp , length )/vave, 3)
vfima=ema( vfi, signalLength )
d=vfi-vfima

upper = vfima + stdev(vfi, length2)
lower = vfima - stdev(vfi, length2)

buysignal = cross(vfi, lower) and crossunder(vfi, lower) == 1 ? vfima : na

sellsignal = cross(vfi, upper) and crossover(vfi, upper) == 1 ? vfima : na

//times = timestamp("GMT+6", 2017, 12, 6, 00, 00)

//if (buysignal and times <= time)
if (buysignal)
    if(strategy.position_size < 0)
        strategy.close("SHORT")
        
    if(strategy.position_size > 0)
        strategy.order("LONG", true, 1, when = (low+high)/2)
        
    if(strategy.position_size == 0)
        strategy.entry("LONG", strategy.long, when = (low+high)/2)

//if (sellsignal and times <= time)
if (sellsignal)
    if(strategy.position_size > 0)
        strategy.close("LONG")
        
    if(strategy.position_size < 0)
        strategy.order("SHORT", false, 1, when = (low+high)/2)
        
    if(strategy.position_size == 0)
        strategy.entry("SHORT", strategy.short, when = (low+high)/2)