Indice de desvio de tendência com estratégia de média móvel

Autora:ChaoZhang, Data: 2023-11-06 14:46:40
Tags:

img

Resumo

Esta estratégia calcula o índice de desvio de tendência (TSI) do preço, processa TSI com média móvel e forma a linha média móvel da TSI. Combinada com a direção do candelabro do preço, determina se o preço atual está em uma tendência de alta ou baixa e, assim, gera sinais de compra e venda.

Princípios

As principais etapas desta estratégia são:

  1. Calcular a variação percentual de preços
  2. Duplo pct suave com HMA para obter double_smoothed_pc
  3. Calcule o HMA duplo do pct absoluto para obter double_smoothed_abs_pc
  4. Calcular o valor da ETI: (100 * (double_smoothed_pc / double_smoothed_abs_pc))
  5. Valor da ETI de processo com HMA para obter a linha de média móvel da ETI tsihmaline
  6. Comparar o valor da ETI e a linha da média móvel da ETI, acima da média móvel é tendência ascendente, abaixo é tendência descendente
  7. Em tendência de alta, se o preço também está subindo, gerar sinal de compra
  8. Em tendência de queda, se o preço também está caindo, gerar sinal de venda

Através das etapas acima, determina a direção geral da tendência, combinada com o movimento real dos preços, para gerar sinais de negociação.

Vantagens

  1. Duplo HMA suavização filtra ruído de curto prazo e bloqueios na tendência principal
  2. A ETI e a sua linha de média móvel determinam a direcção geral da tendência
  3. Combinado com o candelabro de preço evita falha de ruptura, melhora a confiabilidade do sinal
  4. Parâmetros personalizáveis adaptados a diferentes mercados de ciclos
  5. Visualização gráfica, verde para tendência ascendente, vermelho para tendência descendente

Riscos

  1. Pode gerar múltiplos sinais falsos durante o mercado de gama
  2. Retardo da linha média móvel em pontos de virada, possivelmente faltando o melhor ponto de entrada
  3. Ajuste frequente dos parâmetros necessários para se adaptar à evolução do mercado
  4. Baseado num único indicador da ETI, pode ser otimizado com outros indicadores

Reforço

  1. Adicionar filtros para evitar sinais falsos durante a consolidação
  2. Adicionar outros indicadores para confirmar os pontos de inversão da tendência
  3. Optimização automática de parâmetros através de aprendizado de máquina etc.
  4. Introduzir o stop loss para controlar as perdas de transações individuais

Conclusão

Esta estratégia usa TSI para determinar a direção da tendência combinada com velas de preço para gerar sinais de negociação, que podem efetivamente capturar a tendência, comprando em tendência de alta e vendendo em tendência de baixa.


/*backtest
start: 2023-10-29 00:00:00
end: 2023-11-05 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="TSIHULLBOT", shorttitle="TSICCIHULL", default_qty_type=strategy.percent_of_equity, default_qty_value=100)
long = input(title="Long Length", type=input.integer, defval=50)
short = input(title="Short Length", type=input.integer, defval=50)
signal = input(title="Signal Length", type=input.integer, defval=7)
price = input(title="Source",type=input.source,defval=open)
lineupper = input(title="Upper Line", type=input.integer, defval=250)
linelower = input(title="Lower Line", type=input.integer, defval=-250)
double_smooth(price, long, short) =>
    fist_smooth = hma(price, long)
    hma(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = (100 * (double_smoothed_pc / double_smoothed_abs_pc))*5
tsihmaline=(hma(tsi_value,signal))*5
clr = tsihmaline < tsi_value ? color.red : color.lime
clr2 = tsi_value < tsi_value[1] ? color.red : color.lime
i1=plot(lineupper+3, color=color.black, linewidth=3)
i2=plot(linelower+3, color=color.black, linewidth=3)
i3=plot(lineupper, color=clr)
i4=plot(linelower, color=clr)
trendv=tsihmaline/5.6
plot(trendv, linewidth=7,  color=color.black)
plot(trendv, linewidth=4,  color=color.yellow)
j1=plot(tsi_value, linewidth=5, color=color.black)
j2=plot(tsi_value[1], linewidth=5, color=color.black)
j3=plot(tsi_value, color=clr2)
j4=plot(tsi_value[1], color=clr2)
fill(i3,i4,color=clr,transp=90)
fill(j3,j4,color=clr2,transp=15)
longCondition = tsihmaline>tsihmaline[1] and price>price[1]
if (longCondition)
    strategy.entry("Buy ⤴️", strategy.long)
shortCondition = tsihmaline<tsihmaline[1] and price<price[1]
if (shortCondition)
    strategy.entry("Sell ⤵️", strategy.short)

Mais.