
Esta estratégia, denominada estratégia de negociação quantitativa baseada no índice TSI e na média móvel de Hull, tem como principal idéia identificar tendências em ações, moedas digitais ou moedas de câmbio e gerar um sinal de negociação no início de uma tendência.
A estratégia usa o indicador TSI para determinar a tendência e a dinâmica dos preços. O indicador TSI é uma média móvel dupla baseada na taxa de variação dos preços.
A estratégia também usa a média móvel de Hull para determinar a tendência dos preços. A média móvel de Hull é construída por meio de uma média móvel de dupla ponderação, que efetivamente filtra o ruído do mercado. A média móvel de Hull é julgada como uma tendência ascendente quando atravessa a linha rápida e uma tendência descendente quando atravessa a linha lenta.
Ao mesmo tempo em que o indicador TSI emite um sinal, um sinal de negociação correspondente é gerado se a média móvel de Hull também confirmar a tendência na mesma direção. Além disso, a estratégia também verifica a direção da entidade K-line para confirmar a tendência. O sinal de negociação é emitido somente quando o indicador, o sinal de Hull e a direção da entidade K-line coincidem.
A estratégia combina vários indicadores de tendência, dinâmica e média para identificar efetivamente o início de uma tendência de mercado e evitar a geração de uma grande quantidade de falsos sinais. As médias móveis de duplo plano também podem filtrar parte do ruído.
Em comparação com um único indicador, a estratégia pode melhorar significativamente a qualidade do sinal através da combinação de vários indicadores de filtragem. Os vários critérios de confirmação também fazem com que a estratégia tenha uma grande certeza ao gerar um sinal.
Embora a estratégia seja eficaz para identificar o início de uma tendência, ela pode gerar alguns sinais errados e excesso de negociação em momentos de turbulência no mercado. Além disso, a configuração inadequada dos parâmetros também pode levar a posições baixas desnecessárias.
Para reduzir o risco, pode-se ajustar adequadamente o ciclo de média móvel de casco ou o parâmetro TSI, ou pode-se adicionar o stop loss para controlar os prejuízos. No processo de otimização, é necessário prestar atenção ao rácio de sinal de ruído para obter o melhor parâmetro.
A estratégia pode ser melhorada em vários aspectos:
Esta estratégia, combinada com o indicador TSI e a média móvel de Hull, gera um sinal de negociação após a determinação da tendência do mercado. A estratégia possui uma alta pontualidade e qualidade de sinal. Através da otimização de parâmetros e da combinação de estratégias, pode-se aumentar significativamente a lucratividade e reduzir o risco.
/*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)