Cette stratégie utilise l'indicateur HMA (Hull Moving Average) et l'analyse technique de la ligne K pour réaliser le jugement de l'élan et les opérations de percée sur les prix.
L'indicateur HMA a été créé par Alan Hull en 2005 pour créer une moyenne mobile à la fois sensible et lisse.
(1) Calculer la DMA moyenne de doubles lissage d'un demi-cycle
(2) Calculer la moyenne SMA de cycle complet
(3) Calculer la différence DIFF entre DMA et SMA
(4) Calculer la ligne moyenne du cycle SQRT ((période) du DIFF pour obtenir HMA
La stratégie utilise les percées à la hausse et à la baisse de l'indicateur HMA comme signaux, combinés à la percée de la partie de l'entité de la ligne K, pour générer des signaux d'achat et de vente.
La caractéristique de convergence de l'indicateur HMA le rend extrêmement sensible aux variations de prix tout en maintenant la fluidité de la moyenne mobile afin d'éviter de faux signaux.
Le mécanisme de double percée améliore la fiabilité des signaux et évite de se faire piéger.
Le stop loss dynamique et la protection des bénéfices optimisent le risque et le rendement.
Le trading entièrement automatisé simplifie les opérations.
En cas de fortes fluctuations du marché, la probabilité d'un stop loss est plus élevée.
Une fréquence de négociation élevée augmente les coûts de commission.
Des paramètres incorrects peuvent générer de faux signaux.
Optimiser les conditions de stop loss et de prise de profit et fixer des retraits raisonnables.
Ajustez la fréquence des transactions afin de réduire l'impact des commissions.
Tester et optimiser le cycle HMA et les conditions de rupture pour déterminer les paramètres optimaux.
Incorporer des indicateurs de jugement de tendance pour éviter les opérations contre tendance.
Améliorer le jugement automatique sur le changement de source de données pour s'adapter à un plus grand nombre d'environnements de marché.
Améliorer les algorithmes d'apprentissage automatique pour obtenir une optimisation automatique des paramètres.
Déployer sur le serveur pour obtenir une vérification des transactions en direct 24 heures sur 24.
La stratégie de rupture d'élan HMA utilise les avantages uniques de la moyenne mobile de Hull pour capturer avec précision l'élan du marché. Le mécanisme de filtration à double rupture améliore la qualité du signal et le stop profit et stop loss dynamiques protègent les revenus. Cette stratégie est facile à utiliser, efficace et un outil de trading quantitatif très pratique qui mérite d'être promu.
/*backtest start: 2022-12-28 00:00:00 end: 2024-01-03 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //SeaSide420 strategy("Hull Moving Average and Daily Candle Crossover", shorttitle="Hull&D", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=720, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) // settings---------------------- q=input(title="HullMA",defval=5) SL = input(defval=-10000.00, title="Stop Loss in $", type=float, step=1) TP = input(defval=500.00, title="Target Point in $", type=float, step=1) price=input(ohlc4,title="Price data") ot=1 p=price[1] // Daily candle crossover--------- dt = 0.0010 Daily=(p-p[1])/p[1] //-------------------------------- // Hull MA's---------------------- n2ma=2*wma(p,round(q/2)) nma=wma(p,q) diff=n2ma-nma sqn=round(sqrt(q)) n2ma1=2*wma(p[1],round(q/2)) nma1=wma(p[1], q) diff1=n2ma1-nma1 sqn1=round(sqrt(q)) n1=wma(diff,sqn) n2=wma(diff1,sqn) //--------------------------------- // Plotting------------------------ z1e=n1>n2?green:black z2e=n1>n2?black:red z3e=n1>n2?green:red n1e=plot(n1, title="HMA1", color=z1e, linewidth=2, offset=2) n2e=plot(n2, title="HMA2", color=z2e, linewidth=2, offset=2) fill(n1e, n2e, color=z3e, transp=80) // Order controls------------------- closelong = n1<n2 and n1[1]<n2[1] and n1[2]<n2[2] or strategy.openprofit<SL or strategy.openprofit>TP if (closelong) strategy.close("Long") closeshort = n1>n2 and n1[1]>n2[1] and n1[2]>n2[2] or strategy.openprofit<SL or strategy.openprofit>TP if (closeshort) strategy.close("Short") longCondition = n1>n2 and n1[1]>n2[1] and n1[2]>n2[2] and strategy.opentrades<ot and Daily>dt and close>n1 if (longCondition) strategy.entry("Long",strategy.long) shortCondition = n1<n2 and n1[1]<n2[1] and n1[2]<n2[2] and strategy.opentrades<ot and Daily<dt and close<n1 if (shortCondition) strategy.entry("Short",strategy.short)