
Cette stratégie est appelée stratégie de trading quantitatif basée sur l’indicateur TSI et la moyenne mobile de Hull. L’idée principale est de combiner l’indicateur TSI et la moyenne mobile de Hull pour identifier les tendances dans les actions, les monnaies numériques ou les devises et générer un signal de trading au début d’une tendance.
La stratégie utilise l’indicateur TSI pour déterminer la tendance et la dynamique des prix. L’indicateur TSI est basé sur le taux de variation des prix.
La stratégie utilise également les moyennes mobiles de Hull pour déterminer la tendance des prix. Les moyennes mobiles de Hull sont construites par des moyennes mobiles à double pondération, ce qui permet de filtrer efficacement le bruit du marché. Elles sont jugées comme une tendance à la hausse lorsqu’elles traversent la ligne rapide et comme une tendance à la baisse lorsqu’elles traversent la ligne lente.
En même temps que l’indicateur TSI émet un signal, un signal de transaction correspondant est généré si la moyenne mobile de Hull confirme également une tendance dans la même direction. De plus, la stratégie examine également la direction de l’entité de la ligne K pour confirmer la tendance. Un signal de transaction n’est émis que lorsque le signal de l’indicateur, le signal de Hull et la direction de l’entité de la ligne K sont concordants.
Cette stratégie, combinant plusieurs indicateurs de tendance, de dynamique et de moyenne, permet d’identifier efficacement le début d’une tendance du marché et d’éviter de générer de nombreux faux signaux. Les doubles moyennes mobiles peuvent également filtrer certains bruits.
Par rapport à un seul indicateur, la stratégie peut améliorer considérablement la qualité du signal en combinant plusieurs indicateurs de filtrage. Les conditions de confirmation multiples permettent également à la stratégie d’avoir une très forte certitude lors de la génération du signal.
Bien que cette stratégie soit efficace pour identifier les tendances au début, elle peut générer certains signaux erronés et des transactions excessives en cas de choc du marché. En outre, un paramètre mal réglé peut également entraîner des positions nettes inutiles.
Pour réduire le risque, il est possible d’ajuster le cycle de la moyenne mobile de la coque ou les paramètres TSI, ou d’ajouter un stop-loss pour contrôler les pertes. Le rapport signal-bruit doit être pris en compte dans le processus d’optimisation pour obtenir les meilleurs paramètres.
Cette stratégie peut être optimisée dans les domaines suivants:
La stratégie, combinée à l’indicateur TSI et à la moyenne mobile de Hull, génère un signal de transaction après la détermination de la tendance du marché. La stratégie a une grande ponctualité et qualité de signal. Grâce à l’optimisation des paramètres et à la combinaison de stratégies, la rentabilité peut être considérablement améliorée et le risque réduit.
/*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)