Estratégia quantitativa de negociação baseada no indicador da ETI e na média móvel do casco

Autora:ChaoZhang, Data: 2023-12-18 16:56:22
Tags:

img

Resumo

Esta estratégia é chamada Quantitative Trading Strategy Based on TSI Indicator and Hull Moving Average. A ideia principal é identificar tendências em ações, criptomoedas ou forex combinando o indicador TSI e a média móvel de Hull, e gerar sinais de negociação quando uma tendência começa.

Estratégia lógica

A estratégia utiliza o indicador da ETI para determinar as tendências e o ímpeto dos preços. O indicador da ETI baseia-se na média móvel duplamente suavizada da taxa de mudança de preços.

A estratégia também usa a média móvel de Hull para determinar as tendências de preços. A média móvel de Hull é construída com médias móveis duplamente ponderadas e pode filtrar o ruído do mercado efetivamente.

Quando o indicador TSI gera um sinal, se o Hull Moving Average confirma a tendência na mesma direção, os sinais de negociação correspondentes serão acionados. Além disso, a estratégia também verifica a direção dos corpos de velas para confirmar a tendência.

Análise das vantagens

A combinação de indicadores de tendência, dinâmica e médias móveis permite identificar eficazmente o início das tendências do mercado e evitar sinais falsos excessivos.

Em comparação com as estratégias de indicador único, esta estratégia filtra os sinais combinando vários indicadores, o que pode melhorar muito a qualidade dos sinais.

Análise de riscos

Embora esta estratégia possa identificar efetivamente o início da tendência, pode gerar alguns sinais falsos e excesso de negociação durante as consolidações de mercado.

Para reduzir os riscos, os parâmetros do período do casco ou da ETI podem ser ajustados em conformidade. Paradas também podem ser adicionadas às perdas de controle. Durante as otimizações, é necessário prestar atenção para garantir uma alta relação sinal-ruído para melhores parâmetros.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar os parâmetros da média móvel do casco para suavizar curvas e filtrar sinais falsos
  2. Otimizar os parâmetros da ETI para equilibrar sensibilidade e estabilidade
  3. Adicionar estratégias de stop loss para controlar o tamanho da perda
  4. Ajustar o comprimento do sinal para filtrar o ruído de curta duração
  5. Teste em diferentes produtos e prazos
  6. Incorporar outros indicadores para verificação do sinal

Conclusão

Esta estratégia combina o indicador TSI e a média móvel de Hull para gerar sinais de negociação depois de confirmar as tendências do mercado. A estratégia tem alto tempo e qualidade de sinal. Através da otimização de parâmetros e combinação de estratégia, a lucratividade pode ser em grande parte melhorada, reduzindo os riscos. A estratégia é adequada para identificar tendências de médio a longo prazo e tem perspectivas de aplicação promissoras, especialmente nos mercados de criptomoedas e forex.


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

//@version=2
strategy("TSI/HullMA/VWMA strategy", shorttitle="TSI/HullMA/VWMA", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=420, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
TP = input(defval=200.00, title="TargetPoint in $", type=float, step=1)
SL = input(defval=-2000.00, title="StopLoss in $", type=float, step=1)
signal = input(title="Signal Length",  defval=6)
keh=input(title="HullMA cross",defval=2)
a=input(title="VWMA",defval=2)
long=35,short=35,linebuy=4,linesell=-4,ot=1,p=ohlc4[0]
double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(p)
rvwma=vwma(p,round(a))
rvwma2=vwma(p,round(a*2))
n2ma=2*wma(p,round(keh/2))
nma=wma(p,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(p[1],round(keh/2))
nma1=wma(p[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
hullbuy=n1>n2 and n1>n2[1] and rvwma>rvwma2
hullsell=n1<n2 and n1<n2[1] and rvwma<rvwma2
candlebuy=ohlc4[0]>ohlc4[1] and ohlc4[0]>ohlc4[2] and ohlc4[0]>ohlc4[3]
candlesell=ohlc4[0]<ohlc4[1] and ohlc4[0]<ohlc4[2] and ohlc4[0]<ohlc4[3]
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)
strategy.entry("buy", true, na, when = tsi_value>ema(tsi_value, signal) and candlebuy and hullbuy)
strategy.entry("sell", false, na, when = tsi_value<ema(tsi_value, signal) and candlesell and hullsell)
strategy.close_all(when = strategy.openprofit>TP or strategy.openprofit<SL)

Mais.