Stratégie de trading de l'oscillateur à moyenne mobile de Hull


Date de création: 2023-10-07 15:24:31 Dernière modification: 2023-10-07 15:24:31
Copier: 0 Nombre de clics: 1028
1
Suivre
1617
Abonnés

Aperçu

Cette stratégie est basée sur l’indicateur des moyennes mobiles de Hull. La stratégie utilise les moyennes mobiles de Hull pour former des signaux d’achat et de vente, et appartient à la stratégie de suivi de tendance.

Principe de stratégie

La stratégie est basée sur l’indicateur de moyenne mobile de Hull, composé de deux moyennes mobiles. On calcule d’abord la moyenne mobile intermédiaire nma du prix, avec la période hullperiod. On calcule ensuite la moyenne mobile rapide n2ma du prix, avec la période nma moitié.

Pour filtrer certains faux signaux, la stratégie a également introduit la ligne Hull (Hull_Line). La ligne Hull est le résultat d’une régression linéaire calculant la différence entre nma et n2ma. La stratégie saute le signal d’achat et de vente lorsque le prix s’écarte de la ligne Hull.

Les règles de la stratégie sont les suivantes:

  1. Calculer nma, période de hull

  2. Calculer n2ma avec un cycle d’un demi-cycle nma

  3. Calculer la différence entre n2ma et nma

  4. La moyenne mobile de la différence avec la période sqrt{\displaystyle \sqrt{\mathrm {hull } } } est donnée par la ligne de Hull

  5. Un signal d’achat est émis lorsque le prix traverse la ligne de Hull

  6. Un signal de vente est émis lorsque le prix dépasse la ligne de Hull

  7. Si le prix s’écarte de la ligne de Hull, sautez le signal

  8. Entrée de position avec un certain pourcentage, arrêt de perte avec un arrêt de sortie

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Les moyennes mobiles de Hull permettent de saisir rapidement les tendances, et les fluctuations sont calculées en fonction de l’évolution de la tendance.

  2. Filtrage de faux signaux par câble de coque pour améliorer la qualité du signal

  3. Le rapport entre le retrait et la perte est bon pour les opérations de ligne courte.

  4. Adaptation des paramètres pour une flexibilité adaptée aux différentes conditions du marché

  5. La réversion des pertes permet de réduire les pertes en temps opportun et de contrôler les risques.

  6. Risques systémiques évitables au cours d’une période donnée, associés à la saisonnalité

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Les stratégies de suivi des tendances ne permettent pas de négocier 24 heures sur 24.

  2. Les pertes sont plus importantes lorsque la tendance est inversée.

  3. Les moyennes mobiles sont en retard et n’arrivent pas à saisir les points de basculement.

  4. Les transactions en ligne courtes sont fréquentes et coûteuses

  5. Une mauvaise configuration des paramètres pourrait entraîner une baisse des bénéfices sur les marchés en crise

Les mesures suivantes peuvent être prises pour contrer ces risques:

  1. La stratégie d’arrêt de Martingale pour contrôler les pertes individuelles

  2. Optimiser les paramètres, tester la robustesse des paramètres dans différents environnements de marché

  3. Les indicateurs de tendance et les indicateurs de suivi permettent d’éviter une reprise de la baisse

  4. Augmentation du temps de détention et réduction de la fréquence des transactions

Direction d’optimisation

La stratégie peut également être optimisée dans les domaines suivants:

  1. Combiné avec des indicateurs de dynamique, déterminez le point de départ de la tendance, une meilleure entrée en jeu

  2. Ajout de modèles d’apprentissage automatique pour aider à déterminer la direction et la force des tendances

  3. Adaptation des paramètres en fonction du marché en temps réel

  4. Configuration d’un système de coque à périodes multiples, avec différentes positions pour différentes périodes

  5. En combinant le volume de transactions avec l’indicateur d’énergie, on évite les fausses percées qui ne sont pas suffisantes.

  6. Ajout d’un module de gestion de position basé sur les fluctuations pour ajuster les positions en fonction des fluctuations

Résumer

L’ensemble de la stratégie de négociation des moyennes mobiles de Hull est une stratégie de suivi de courte ligne très pratique. Elle utilise le système de moyennes mobiles de Hull pour déterminer la direction de la tendance et atteindre des positions positives. Par rapport au système de moyennes mobiles uniques, elle présente une meilleure qualité de signal et une plus grande flexibilité des paramètres.

Code source de la stratégie
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//                               Hull Moving Average Swing Trader by SEASIDE420
strategy("Hull Moving Average Swing Trader", shorttitle="HMA_Swing_Trader", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
hullperiod = input(title="HullMA Period", type=input.integer, defval=210, minval=1)
price = input(open, type=input.source, title="Price data")
FromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
FromDay = input(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input(defval=2020, title="From Year", minval=2017)
ToMonth = input(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input(defval=9999, title="To Year", minval=2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => true
n2ma = 2 * wma(price, round(hullperiod / 2))
nma = wma(price, hullperiod)
diff = n2ma - nma
sqn = round(sqrt(hullperiod))
n2ma1 = 2 * wma(price[1], round(hullperiod / 2))
nma1 = wma(price[1], hullperiod)
diff1 = n2ma1 - nma1
n1 = wma(diff, sqn)
n2 = wma(diff1, sqn)
Hull_Line = n1 / n1 * n2
Hull_retracted = if n1 > n2
    Hull_retracted = Hull_Line - 2
else
    Hull_retracted = Hull_Line + 2
c1 = Hull_retracted + n1 - price
c2 = Hull_retracted - n2 + price
c4 = n1 > n2 ? color.green : color.red
c2p = plot(c2, color=color.black, linewidth=1)
c3p = plot(price, color=color.black, linewidth=1)
fill(c3p, c2p, color=c4, transp=75)
//plot(cross(c1, c2) ? c1 : na, style=plot.style_circles, color=c4, linewidth=4)
if price < c2
    strategy.close("BUY", when=window())
if price > c2
    strategy.close("SELL", when=window())
if price > c2 and price[1] > c1
    strategy.entry("BUY", strategy.long, when=window())
if price < c1 and price[1] < c2
    strategy.entry("SELL", strategy.short, when=window())  //        /L'-, 
//                               ,'-.      `   ````                 /  L '-, 
//     .                    _,--dMMMM\        `   ` ` '`..         /       '-, 
//     :             _,--,  )MMMMMMMMM),.      `     ,<>          /_      '-,' 
//     ;     ___,--. \MM(    `-'   )M//MM\          ,',.;      .-'* ;     .' 
//     |     \MMMMMM) \MM\       ,dM//MMM/     ___ < ,; `.      )`--'    / 
//     |      \MM()M   MMM)__   /MM(/MP'  ___, \  \ `  `. `.   /__,    ,' 
//     |       MMMM/   MMMMMM( /MMMMP'__, \     | /      `. `-,_\     / 
//     |       MM     /MMM---' `--'_ \     |-'  |/         `./ .\----.___ 
//     |      /MM'   `--' __,-  \""   |-'  |_,               `.__) . .F. )-. 
//     |     `--'       \   \    |-'  |_,     _,-/            J . . . J-'-. `-., 
//     |         __  \`. |   |   |         \    / _           |. . . . \   `-.  F 
//     |   ___  /  \  | `|   '      __  \   |  /-'            F . . . . \     '` 
//     |   \  \ \  /  |        __  /  \  |  |,-'        __,- J . . . . . \ 
//     |    | /  |/     __,-  \  ) \  /  |_,-     __,--'     |. .__.----,' 
//     |    |/    ___     \    |'.  |/      __,--'           `.-;;;;;;;;;\ 
//     |     ___  \  \     |   |  `   __,--'                  /;;;;;;;;;;;;. 
//     |     \  \  |-'\    '    __,--'                       /;;;;;;;;;;;;;;\ 
// \   |      | /  |      __,--'                             `--;;/     \;-'\ 
//  \  |      |/    __,--'                                   /  /         \  \ 
//   \ |      __,--'                                        /  /           \  \ 
//    \|__,--'                                          _,-;M-K,           ,;-;\ 
//                                                     <;;;;;;;;           '-;;;; 
//                                                                                  :D