Cette stratégie est basée sur l’indicateur de moyenne mobile de Hull, proposé par Alan Hull, qui fait partie de la stratégie de suivi de la tendance. L’indicateur peut réduire efficacement l’effet de retard de la moyenne mobile et être plus sensible aux changements de prix.
Calculer les moyennes mobiles de Hull pour les groupes de courte et longue période. La courte période détermine la direction de la transaction spécifique, la longue période détermine la direction de la tendance générale.
Lorsqu’une courte période de Hull MA est traversée, un revirement de tendance est jugé. Combiné à un filtrage de la direction de la tendance majeure, le bruit de transaction est filtré.
Augmenter le prix de la rupture de Hull MA pour assurer la réussite de la rupture.
Les conditions d’augmentation du taux de variation des prix permettent d’éviter des ruptures indésirables.
Définition des conditions de stop-loss et d’arrêt et contrôle des risques.
La stratégie présente les avantages suivants par rapport aux moyennes mobiles ordinaires:
Le Hull MA réagit plus rapidement aux variations de prix et peut saisir les changements de tendance en temps opportun.
La double structure de Hull MA permet de juger des tendances dans deux dimensions de temps, la grande et la petite.
Les conditions de rupture de prix et de variation de taux peuvent filtrer efficacement les fausses ruptures.
Le stop-loss dynamique permet de verrouiller les bénéfices et de contrôler les risques.
La stratégie présente également les risques suivants:
Les paramètres mal définis peuvent manquer une inversion de tendance des prix.
Les erreurs de jugement sur les tendances majeures peuvent conduire à des échanges négatifs.
La définition de stop loss trop large peut entraîner des pertes plus importantes.
Les transactions trop fréquentes augmentent les coûts de transaction et le risque de glissement.
L’optimisation peut être réalisée dans les domaines suivants:
Optimisation du cycle Hull MA, équilibrant sensibilité et fluidité.
Optimiser les paramètres d’entrée et de sortie pour trouver les valeurs optimales.
Test de la robustesse des paramètres de différentes variétés pour améliorer l’adaptabilité des stratégies.
Le risque de déviation est évité par l’indicateur de la quantité combinée.
Les conditions sont renforcées et la stabilité de la stratégie renforcée.
Dans l’ensemble, la stratégie utilise la rapidité de réponse de la Hull MA pour un suivi en temps opportun des tendances, avec une forte rentabilité dans la mesure où les risques sont maîtrisés. Cependant, il faut faire attention à l’optimisation des paramètres et à la prévention de certains risques systémiques plus difficiles à éviter.
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-12 22:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
//SeaSide420
strategy("SS420FX", 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)
q=input(title="HullMA Short",defval=14)
z=input(title="HullMA Long",defval=14)
dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001)
SL = input(defval=-50000.00, title="Stop Loss in $", type=float, step=1)
TP = input(defval=100000.00, title="Target Point in $", type=float, step=1)
ot=1
n2ma=2*wma(close,round(q/2))
nma=wma(close,q)
diff=n2ma-nma
sqn=round(sqrt(q))
n2ma1=2*wma(close[1],round(q/2))
nma1=wma(close[1], q)
diff1=n2ma1-nma1
sqn1=round(sqrt(q))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
z2ma=2*wma(close[11],round(z/2))
zma=wma(close[11],z)
ziff=n2ma-nma
zqn=round(sqrt(z))
z2ma1=2*wma(close[12],round(z/2))
zma1=wma(close[12], z)
ziff1=n2ma1-nma1
zqn1=round(sqrt(z))
z1=wma(diff,sqn)
z2=wma(diff1,sqn)
z1e=z1>z2?green:black
z2e=z1>z2?black:red
z3e=z1>z2?green:red
n1e=plot(z1, title="HMA1", color=z1e, linewidth=2, offset=2)
n2e=plot(z2, title="HMA2", color=z2e, linewidth=2, offset=2)
fill(n1e, n2e, color=z3e, transp=80)
confidence=(security(syminfo.tickerid, 'D', close)-security(syminfo.tickerid, 'D', close[1]))/security(syminfo.tickerid, 'D', close[1])
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
strategy.close("Short")
longCondition = n1>n2 and z1>z2 and strategy.opentrades<ot and confidence>dt and close>n1
if (longCondition)
strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and z1<z2 and strategy.opentrades<ot and confidence<dt and close<n1
if (shortCondition)
strategy.entry("Short",strategy.short)