Estratégia de tendência de volume de preços alargada

Autora:ChaoZhang, Data: 2024-01-18 16:32:28
Tags:

img

Resumo

A estratégia de tendência de volume de preços estendido (EPVT) é uma estratégia de combinação de indicadores técnicos.

Princípio da estratégia

O indicador central desta estratégia é a tendência do volume de preços estendido (EPVT). Seu método de cálculo é: volume de negociação acumulado * mudança de preço percentual. Em seguida, calcule os valores máximos e mínimos do EPVT durante um determinado período para obter o intervalo de referência. A curva do indicador EPVT é a curva de diferença entre o EPVT e esse intervalo de referência.

Quando a curva do indicador EPVT cruza acima do eixo zero, indica que a pressão de compra está a aumentar e aparece um sinal longo.

Para melhorar a qualidade do sinal, a estratégia também utiliza uma média móvel simples para confirmar a fiabilidade das alterações de tendência.

Análise das vantagens

Esta estratégia combina indicadores de três dimensões: tendência, impulso e volume de negociação, que podem julgar de forma mais abrangente o sentimento e a intensidade do mercado.

Definir três níveis de take-profit para sair pode escolher diferentes rácios de lucro de acordo com a sua própria preferência de risco.

Análise de riscos

Esta estratégia baseia-se relativamente fortemente na morfologia das curvas de indicadores e emitirá falsos sinais quando a tendência for atípica.

Os parâmetros podem ser ajustados adequadamente ou outros indicadores de filtragem podem ser adicionados para otimizar.

Direcção de otimização

  1. Optimização de parâmetros, como ajustar o parâmetro do ciclo do EPVT para encontrar a combinação ideal de parâmetros.

  2. Adicionar condições de filtragem da tendência, tais como julgar a direção do canal de preços ou a média móvel com base no sinal EPVT.

  3. Optimize as estratégias de stop loss, como definir paradas de valor fixo ou paradas ATR.

Resumo

A estratégia de tendência de volume de preço estendido de aceleração de impulso capta mudanças no sentimento do mercado através do indicador EPVT, aproveitando potenciais pontos de virada da tendência.


/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Extended Price Volume Trend", overlay=true )//@version=5
var cumVol = 0.
cumVol += nz(volume)
if barstate.islast and cumVol == 0
    runtime.error("No volume is provided by the data vendor.")
src = close
lenght = input(200,"Trend Lenght")   
vt = ta.cum(ta.change(src)/src[1]*volume)
upx = ta.highest(vt,lenght)
downx = ta.lowest(vt,lenght)
basex = (upx +downx)/2
VTX = vt - basex
VTY = ta.valuewhen(ta.cross(VTX,0),close,0)
plot(VTY, color=color.black, title="Extended-PVT")

/////////////////////// STRATEGY ////////////////
/////////////////////// TAKE PROFIT SECTION ////////////////
longConditionx = ta.crossover(close,VTY)
ShortConditionx = ta.crossunder(close,VTY)
tp1 = input.int(10, minval=1,title = "TP-1")
tp2 = input.int(20, minval=1,title = "TP-2")
tp3 = input.int(30, minval=1,title = "TP-3")

ematp = ta.ema(close,2)
TPTAKA1S = VTY*(1-tp1/100)
plot(TPTAKA1S, "SELL-TP1", color=color.red,linewidth = 1)
TPTAKA2S = VTY*(1-tp2/100)
plot(TPTAKA2S, "SELL-TP2", color=color.red,linewidth = 1)
TPTAKA3S = VTY*(1-tp3/100)
plot(TPTAKA3S, "SELL-TP3", color=color.red,linewidth = 1)

TPTAKA1B = VTY*(1+tp1/100)
plot(TPTAKA1B, "BUY-TP1", color=color.red,linewidth = 1)
TPTAKA2B = VTY*(1+tp2/100)
plot(TPTAKA2B, "BUY-TP2", color=color.red,linewidth = 1)
TPTAKA3B = VTY*(1+tp3/100)
plot(TPTAKA3B, "BUY-TP3", color=color.red,linewidth = 1)

BUYTP = ta.crossunder(close,VTY) or ta.crossunder(ematp,TPTAKA1B) or ta.crossunder(ematp,TPTAKA2B) or ta.crossunder(ematp,TPTAKA3B) 
SELLTP = ta.crossover(close,VTY) or ta.crossover(ematp,TPTAKA1S) or ta.crossover(ematp,TPTAKA2S) or ta.crossover(ematp,TPTAKA3S)
/////////////////////// STRATEGY ////////////////
// Check for Long Entry
longCondition = longConditionx==true
if longCondition
    strategy.entry('Long', strategy.long, comment = "ENTER-LONG")

buyclose = ShortConditionx==true or BUYTP==true 
// Exit condition 
strategy.close('Long', when=buyclose or BUYTP==true, comment = "EXIT-LONG")

// Check for Short Entry
ShortCondition = ShortConditionx==true
if ShortCondition
    strategy.entry('Short', strategy.short, comment = "ENTER-SHORT")

sellclose = longConditionx==true or SELLTP ==true
// Exit condition 
strategy.close('Short', when=sellclose or SELLTP==true, comment = "EXIT-SHORT")
///// END OF STRATEGY ///////////


Mais.