
Cette stratégie utilise l’indicateur HMA (Hull Moving Average) et l’analyse technique de la ligne K pour déterminer la dynamique des prix et les opérations de rupture.
L’indicateur HMA a été créé par Alan Hull en 2005 avec l’objectif de créer une moyenne mobile à la fois sensible et lisse. Sa méthode de calcul est la suivante:
(1) Calculer le DMA de la moyenne de doubles lissage sur la moitié du cycle
(2) Calculer la moyenne SMA pour l’ensemble du cycle
(3) Calculer le DIFF de la différence entre le DMA et le SMA
(4) Calculer la moyenne des périodes SQRT (en cycle) du DIFF pour obtenir HMA
La stratégie utilise les signaux de rupture à la hausse et de rupture à la baisse de l’indicateur HMA, combinés à la rupture de la partie de l’entité de la ligne K, pour générer des signaux d’achat et de vente. Tout en définissant le principe de stop loss et de stop-loss, surveillez en temps réel les pertes et les pertes, et protégez les bénéfices.
La caractéristique de convergence de l’indicateur HMA le rend extrêmement sensible aux variations de prix, tout en conservant la fluidité de la moyenne et en évitant les faux signaux.
Le système de doubles percées améliore la fiabilité du signal et évite l’encombrement.
Le stop-loss dynamique et la protection des bénéfices permettent d’optimiser le contrôle des risques et des bénéfices.
Les transactions sont entièrement automatisées et simplifiées.
La probabilité d’un stop loss est plus élevée lorsque le marché est très volatile.
La fréquence des transactions est plus élevée et les frais de traitement augmentent.
Une mauvaise configuration des paramètres peut générer de nombreux faux signaux.
Optimiser les conditions de stop-loss et de rétractation raisonnable.
Adaptation de la fréquence des transactions pour réduire l’impact des frais.
Optimisation des tests sur les cycles HMA et les conditions de rupture afin de déterminer les paramètres optimaux.
Les traders peuvent choisir d’utiliser des indicateurs de tendance pour évaluer les tendances et éviter les transactions à contre-courant.
L’augmentation des jugements automatiques sur le changement de source de données pour s’adapter à un environnement de marché plus large.
Ajout d’algorithmes d’apprentissage automatique pour optimiser automatiquement les paramètres.
L’ajout de déploiement sur le serveur, permettant une validation en temps réel de 24 heures.
La stratégie de rupture de l’indicateur dynamique HMA utilise les avantages uniques de la moyenne mobile de Hull pour capturer avec précision la dynamique du marché. Le mécanisme de double rupture de filtrage améliore la qualité du signal et le stop-loss dynamique garantit l’efficacité.
/*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)