A estratégia de tendência quantitativa Super Z é uma estratégia de rastreamento de tendências baseada em indicadores quantitativos.
O indicador VHMA é calculado com base na linha da média móvel de Hull. Aplicando a função da raiz quadrada para suavizar o Hull MA, ele forma uma curva com boa suavidade. A curva VHMA pode julgar a direção da tendência do preço.
A estratégia também incorpora o indicador Super Trend. O indicador Super Trend pode descobrir tendências de preços de ciclo mais longo para ajudar o indicador VHMA a determinar a direção da tendência.
Portanto, esta estratégia usa o indicador VHMA para julgar a direção da tendência de curto prazo, auxiliado pelo indicador Super Trend para determinar o ponto de virada da tendência de longo prazo, realizando o rastreamento da tendência geral.
Esta estratégia tem as seguintes vantagens:
O indicador VHMA possui uma grande suavidade e pode reduzir os falsos sinais. Pode julgar com precisão e fiabilidade a direção da tendência;
Em combinação com o indicador Super Trend, pode detectar rapidamente inversões de tendência a longo prazo e compreender o momento das compras e vendas;
Usar linhas K sólidas e linhas K ocas de cores diferentes para representar a relação de tamanho entre o preço de fechamento e o preço de abertura para formar um indicador visual que ajude a avaliar a tendência;
Adotar um projeto de quadros de tempo múltiplos que possa determinar a direção da tendência em quadros de tempo superiores e emitir sinais de negociação em quadros de tempo inferiores, a fim de alcançar uma filtragem eficiente;
Os parâmetros da estratégia são otimizados para a estabilidade e são adequados para vários ambientes de mercado.
A estratégia apresenta igualmente os seguintes riscos:
Os indicadores quantitativos têm efeitos de backtesting e os efeitos reais podem ser mais fracos do que os backtests;
A definição inadequada dos parâmetros do indicador Super Trend pode levar a oportunidades de negociação perdidas ou a negociações desnecessárias;
Os projetos de quadros de tempo múltiplos podem também falhar em condições reais de negociação.
Contramedidas:
Aumentar as definições de deslizamento e otimizar os parâmetros para reduzir os efeitos dos backtests;
Ajustar os parâmetros do indicador Super Trend e otimizar as definições dos parâmetros;
Testar métodos de correspondência de vários prazos para garantir a estabilidade de vários prazos.
A estratégia pode ser otimizada nos seguintes aspectos:
Ensaiar diferentes indicadores da média móvel suavizada para substituir o indicador VHMA;
Tentar diferentes indicadores de tendência para substituir o indicador Super Trend;
Aumentar os parâmetros do indicador de treinamento do modelo de aprendizagem de máquina.
Estas medidas de otimização podem melhorar a adaptabilidade das estratégias às condições complexas do mercado.
A estratégia de tendência quantitativa Super Z realiza o julgamento e rastreamento das tendências de preços através do indicador de tendência personalizado VHMA combinado com o indicador de tendência Super. A estratégia tem boa estabilidade e excelentes efeitos reais. Através de testes e otimização contínuos, esta estratégia tem o potencial de se tornar uma estratégia de rastreamento de tendência quantitativa eficiente e estável.
/*backtest start: 2022-11-20 00:00:00 end: 2023-11-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ //Original script //https://www.tradingview.com/script/wYknDlLx-super-Z/ //@version=4 strategy("Super Z strategy - Thanks to Rafael Zioni", shorttitle="Super Z strategy",overlay=true ) src5 = input(close) tf = input(1440) len5 = timeframe.isintraday and timeframe.multiplier >= 1 ? tf / timeframe.multiplier * 7 : timeframe.isintraday and timeframe.multiplier < 60 ? 60 / timeframe.multiplier * 24 * 7 : 7 ma = ema(src5*volume, len5) / ema(volume, len5) //script taken from https://www.tradingview.com/script/kChCRRZI-Hull-Moving-Average/ src1 = ma p(src1, len5) => n = 0.0 s = 0.0 for i = 0 to len5 - 1 w = (len5 - i) * len5 n := n + w s := s + src5[i] * w s / n hm = 2.0 * p(src1, floor(len5 / 2)) - p(src1, len5) vhma = p(hm, floor(sqrt(len5))) lineColor = vhma > vhma[1] ? color.lime : color.red plot(vhma, title="VHMA", color=lineColor ,linewidth=3) hColor = true,vis = true hu = hColor ? (vhma > vhma[2] ? #00ff00 : #ff0000) : #ff9800 vl = vhma[0] ll = vhma[1] m1 = plot(vl, color=hu, linewidth=1, transp=60) m2 = plot(vis ? ll : na, color=hu, linewidth=2, transp=80) fill(m1, m2, color=hu, transp=70) // b = timeframe.isintraday and timeframe.multiplier >= 1 ? 60 / timeframe.multiplier * 7 : timeframe.isintraday and timeframe.multiplier < 60 ? 60 / timeframe.multiplier * 24 * 7 : 7 // res5 = input("D", type=input.resolution) o = security(syminfo.tickerid, res5, open, barmerge.gaps_off, barmerge.lookahead_on) c = security(syminfo.tickerid, res5, close, barmerge.gaps_off, barmerge.lookahead_on) hz = security(syminfo.tickerid, res5, high, barmerge.gaps_off, barmerge.lookahead_on) l = security(syminfo.tickerid, res5, low, barmerge.gaps_off, barmerge.lookahead_on) col = c >= o ? color.lime : color.red ppo = plot(b ? o >= c ? hz : l : o, color=col, title="Open", style=plot.style_stepline, transp=100) ppc = plot(b ? o <= c ? hz : l : c, color=col, title="Close", style=plot.style_stepline, transp=100) plot(b and hz > c ? hz : na, color=col, title="High", style=plot.style_circles, linewidth=2,transp=60) plot(b and l < c ? l : na, color=col, title="Low", style=plot.style_circles,linewidth=2, transp=60) fill(ppo, ppc, col) // // INPUTS // st_mult = input(1, title = 'SuperTrend Multiplier', minval = 0, maxval = 100, step = 0.01) st_period = input(50, title = 'SuperTrend Period', minval = 1) // CALCULATIONS // up_lev =l - (st_mult * atr(st_period)) dn_lev = hz + (st_mult * atr(st_period)) up_trend = 0.0 up_trend := c[1] > up_trend[1] ? max(up_lev, up_trend[1]) : up_lev down_trend = 0.0 down_trend := c[1] < down_trend[1] ? min(dn_lev, down_trend[1]) : dn_lev // Calculate trend var trend = 0 trend := c > down_trend[1] ? 1: c < up_trend[1] ? -1 : nz(trend[1], 1) // Calculate SuperTrend Line st_line = trend ==1 ? up_trend : down_trend // Plotting //plot(st_line[1], color = trend == 1 ? color.green : color.red , style = plot.style_cross, linewidth = 2, title = "SuperTrend") buy=crossover( c, st_line) sell=crossunder(c, st_line) signal=input(false) /////////////// Plotting /////////////// plotshape(signal and buy, style=shape.triangleup, size=size.normal, location=location.belowbar, color=color.lime) plotshape(signal and sell, style=shape.triangledown, size=size.normal, location=location.abovebar, color=color.red) if (buy) strategy.entry("My Long Entry Id", strategy.long) if (sell) strategy.entry("My Short Entry Id", strategy.short)