Estratégia de elementos de volume finito de volatilidade adaptativa

Autora:ChaoZhang, Data: 2023-10-17 14:50:13
Tags:

img

Resumo

Esta estratégia utiliza o método do elemento de volume finito combinado com métricas de volatilidade adaptativa para determinar sinais longos e curtos, pertencentes às estratégias de tendência seguinte.

Princípios

A estratégia primeiro calcula a média dos preços altos e baixos, a média dos preços de fechamento de N barras recentes e a média dos preços altos, baixos e fechados da barra anterior. Em seguida, calcula os retornos logarítmicos Intra e Inter para a barra atual e anterior. Enquanto isso, calcula as volatilidades Vintra e Vinter de Intra e Inter.

Com base nos níveis de volatilidade e nos parâmetros ajustáveis, o coeficiente de corte adaptativo CutOff é determinado. Quando a mudança de preço excede o CutOff, sinais longos ou curtos são gerados. Especificamente, ele calcula a diferença MF entre o preço de fechamento atual e a média de preços altos e baixos. Quando MF é maior que CutOff, é um sinal longo. Quando MF é menor que o CutOff negativo, é um sinal curto.

Finalmente, de acordo com os sinais, os fluxos de fundos são calculados, produzindo o sinal de posição pos e traçando a curva FVE do elemento de volume finito.

Vantagens

  1. Parâmetros adaptáveis, aplicáveis a diferentes prazos e níveis de volatilidade sem ajuste manual.

  2. Captura com precisão as alterações de tendência dos preços.

  3. A curva FVE reflete claramente a comparação de forças longas e curtas.

  4. Base teórica sólida da análise dos fluxos de fundos, sinais relativamente fiáveis.

Riscos

  1. Pode gerar mais sinais falsos durante as violentas flutuações do mercado.

  2. Incapaz de lidar com diferenças de preços, pode considerar a combinação de outros indicadores.

  3. Os sinais de fluxo de fundos podem divergir da análise técnica às vezes.

Optimização

  1. Pode testar o impacto de diferentes valores de N. Geralmente um N maior pode filtrar o ruído.

  2. Pode testar diferentes combinações de Cintra e Cinter para encontrar parâmetros ideais ou considerar adaptá-los dinamicamente.

  3. Pode combinar com outros indicadores como o MACD para melhorar a robustez.

  4. Pode incorporar mecanismos de stop loss para controlar a perda de uma única negociação.

Conclusão

Em geral, esta estratégia é bastante confiável com princípios sólidos. Ela pode servir como um componente de estratégias de tendência seguinte, e funcionar ainda melhor quando combinado corretamente com outros. A chave é encontrar parâmetros ideais e estabelecer uma gestão de risco sólida. Se otimizado ainda mais, pode se tornar um sistema de tendência seguinte muito poderoso.


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/08/2017
// This is another version of FVE indicator that we have posted earlier 
// in this forum.
// This version has an important enhancement to the previous one that`s 
// especially useful with intraday minute charts.
// Due to the volatility had not been taken into account to avoid the extra 
// complication in the formula, the previous formula has some drawbacks:
// The main drawback is that the constant cutoff coefficient will overestimate 
// price changes in minute charts and underestimate corresponding changes in 
// weekly or monthly charts.
// And now the indicator uses adaptive cutoff coefficient which will adjust to 
// all time frames automatically.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Volatility Finite Volume Elements", shorttitle="FVI")
Samples = input(22, minval=1)
Perma = input(40, minval=1)
Cintra = input(0.1, step=0.1)
Cinter = input(0.1, step=0.1)
reverse = input(false, title="Trade reverse")
xhl2 = hl2
xhlc3 = hlc3
xClose = close
xIntra = log(high) - log(low)
xInter = log(xhlc3) - log(xhlc3[1])
xStDevIntra = stdev(sma(xIntra, Samples) , Samples)
xStDevInter = stdev(sma(xInter, Samples) , Samples)
xVolume = volume
TP = xhlc3
TP1 = xhlc3[1]
Intra = xIntra
Vintra = xStDevIntra
Inter = xInter
Vinter = xStDevInter
CutOff = Cintra * Vintra + Cinter * Vinter
MF = xClose - xhl2 + TP - TP1
FveFactor = iff(MF > CutOff * xClose, 1, 
             iff(MF < -1 * CutOff * xClose, -1,  0))
xVolumePlusMinus = xVolume * FveFactor
Fvesum = sum(xVolumePlusMinus, Samples)
VolSum = sum(xVolume, Samples)
xFVE = (Fvesum / VolSum) * 100
xEMAFVE = ema(xFVE, Perma)
pos = iff(xFVE > xEMAFVE, 1,
	   iff(xFVE < xEMAFVE, -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(xFVE, color=green, title="FVI")
plot(xEMAFVE, color=blue, title="FVI EMA")

Mais.