Estratégia de tendência de volume de preços modificada com base nas alterações de volume de preços

Autora:ChaoZhang, Data: 2023-12-01 14:56:17
Tags:

img

Resumo

O nome desta estratégia é Estratégia de Tendência de Preço-Volume Modificada Baseada em Mudanças de Preço-Volume. Esta estratégia calcula as mudanças cumulativas de preço e volume, combinadas com linhas médias móveis para estabelecer posições longas e curtas, a fim de acompanhar a tendência.

Princípio da estratégia

O indicador central desta estratégia é o indicador de tendência do volume de preços modificado (MPVT). Este indicador reflete o entusiasmo do mercado e as entradas e saídas de capital através das alterações no preço e no volume de negociação. A fórmula específica de cálculo é a seguinte:

rV = Volume / 50000
xCumPVT = Yesterday's xCumPVT + (rV * (Latest Close Price - Yesterday's Close Price) / Yesterday's Close Price) 

Em seguida, em combinação com os parâmetros Nível e Escala, construir o indicador de mudança de preço-volume de residência:

nRes = Level + Scale * xCumPVT

O indicador de residência reflete as mudanças combinadas no preço e no volume. Quando cruza acima de sua média móvel simples de N dias, vá longo. Quando cai abaixo de sua média móvel simples de N dias, vá curto.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. A avaliação do entusiasmo do mercado e da direcção dos fluxos de capitais através de indicadores de volume de preços pode capturar oportunamente os pontos de virada da tendência.

  2. Ajuste flexível dos parâmetros da estratégia através da otimização dos parâmetros para se adaptarem aos diferentes ambientes de mercado.

  3. A estratégia de curto prazo pode ser realizada definindo o parâmetro de entrada inversa para expandir o cenário de aplicação da estratégia.

Análise de riscos

Esta estratégia apresenta também alguns riscos:

  1. Os indicadores de volume de preços são propensos a sinais falsos, e pode haver casos em que os avanços não se mantenham.

  2. É mais adequado para mercados de tendência e pode produzir sinais falsos em mercados de intervalo.

  3. O efeito da otimização dos parâmetros depende do ciclo histórico, o que pode conduzir a riscos de adaptação excessiva.

Orientações de otimização

Os seguintes aspectos podem ser considerados para otimizar esta estratégia:

  1. Teste diferentes médias móveis, tais como média móvel ponderada, EMA, etc., para ver qual combinação funciona melhor.

  2. Combinar com outros indicadores, tais como RSI, KD, etc., para filtrar sinais e reduzir a probabilidade de sinais falsos.

  3. Testar diferentes combinações de parâmetros para encontrar o par de parâmetros ideal.

  4. Melhorar a estabilidade da estratégia, combinando-a com indicadores de tendência, como as bandas de Bollinger.

Resumo

Esta estratégia calcula as mudanças cumulativas no preço e no volume para projetar um indicador de mudança de preço-volume, que pode efetivamente refletir as entradas e saídas de capital.


/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-20 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/07/2018
//  The related article is copyrighted material from
//  Stocks & Commodities.
//  Strategy by HPotter.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Modified Price-Volume Trend Backtest", shorttitle="MPVT")
Level = input(0)
Scale = input(1)
Length = input(23)
reverse = input(false, title="Trade reverse")
xOHLC4 = ohlc4
xV = volume
rV = xV / 50000
xCumPVT = nz(xCumPVT[1]) + (rV * (xOHLC4 - xOHLC4[1]) / xOHLC4[1])
nRes = Level + Scale * xCumPVT
xMARes = sma(nRes, Length)
pos = iff(nRes > xMARes, 1,
       iff(nRes < xMARes, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(nRes, color=red, title="MPVT", linewidth = 2)
plot(xMARes, color=blue, title="MPVT", linewidth = 2)

Mais.