Stratégie de négociation des moyennes mobiles de la coque

Auteur:ChaoZhang est là., Date: 2023-10-07 15h24 et 31h
Les étiquettes:

Résumé

Cette stratégie est une stratégie de trading à court terme basée sur l'indicateur Hull Moving Average. La stratégie utilise la croix dorée et la croix morte des lignes de la Hull Moving Average pour générer des signaux de trading, appartenant à une stratégie de suivi de tendance.

La logique de la stratégie

Cette stratégie est principalement basée sur l'indicateur de moyenne mobile Hull. La ligne de moyenne mobile Hull se compose de deux moyennes mobiles. Elle calcule d'abord la ligne moyenne mobile médiane nma du prix, avec une période de hullperiod. Puis elle calcule la ligne moyenne mobile rapide n2ma, avec une période de la moitié des nmas. Lorsque n2ma traverse au-dessus de nma, un signal d'achat est généré. Lorsque n2ma traverse en dessous de nma, un signal de vente est généré.

Pour filtrer certains faux signaux, la stratégie introduit également la Hull Line (Hull_Line). La Hull Line est un résultat de régression linéaire de la différence entre nma et n2ma. Lorsqu'il y a divergence entre le prix et la Hull Line, la stratégie sautera le signal de trading.

Plus précisément, les règles stratégiques sont les suivantes:

  1. Calculer le nma, avec la période de la coque

  2. Calculer le n2ma, avec la période moitié de la période nma

  3. Calculer la différence de différence entre n2ma et nma

  4. Moving average the diff with period sqrt ((hullperiod), obtenir et obtenir la ligne de coque

  5. Lorsque le prix dépasse la ligne Hull, un signal d'achat est généré.

  6. Lorsque le prix dépasse la ligne Hull, un signal de vente est généré.

  7. S'il y a une divergence entre le prix et Hull Line, sautez le signal

  8. Entrez avec un certain pourcentage de la position, adoptez un stop loss de sortie

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Basé sur la moyenne mobile de Hull, il peut rapidement capturer la tendance et suivre la tendance

  2. Utilisez Hull Line pour filtrer les faux signaux et améliorer la qualité du signal

  3. Bon ratio risque-rendement et utilisation appropriée pour les transactions à court terme

  4. Adaptation flexible des paramètres, adaptée aux différents environnements du marché

  5. Adopter l'inversion stop loss, peut arrêter la perte dans le temps et contrôler les risques

  6. Combiner la saisonnalité pour éviter les risques systémiques dans des périodes spécifiques

Analyse des risques

Cette stratégie comporte également des risques:

  1. Suivre la stratégie de tendance, ne peut pas négocier toute la journée

  2. Perte plus importante en cas d'inversion de tendance

  3. Retard des moyennes mobiles, incapacité de saisir les points tournants en temps opportun

  4. Une fréquence de négociation élevée entraîne des coûts de négociation plus élevés

  5. Des paramètres inappropriés peuvent entraîner une baisse de la rentabilité sur les marchés à fourchette

Pour contrôler ces risques, nous pouvons prendre les mesures suivantes:

  1. Adopter une stratégie de stop loss martingale pour contrôler les pertes uniques

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

  3. Combiner les indicateurs de jugement des tendances afin d'éviter de poursuivre les tendances lors des renversements

  4. Augmenter le temps de rétention pour réduire la fréquence de négociation

Directions d'optimisation

Cette stratégie peut également être optimisée dans les aspects suivants:

  1. Combiner les indicateurs de dynamique pour localiser le point de départ des tendances pour une meilleure entrée

  2. Ajouter des modèles d'apprentissage automatique pour aider à juger la direction et la force de la tendance

  3. Adopter des paramètres adaptatifs pour ajuster les paramètres en fonction de la dynamique du marché en temps réel

  4. Configurer des systèmes de coque multi-temporelle, avec différentes tailles de position pour différentes périodes

  5. Combiner les indicateurs de volume pour éviter les fausses ruptures avec un élan insuffisant

  6. Ajout d'un modèle de dimensionnement des positions basé sur la volatilité pour ajuster dynamiquement la taille des positions en fonction de la volatilité

Résumé

La stratégie de trading de la moyenne mobile Hull est une stratégie de suivi de tendance à court terme efficace. Elle utilise le système de moyenne mobile Hull pour déterminer la direction de la tendance dans le but de suivre la tendance. Par rapport aux systèmes de moyenne mobile unique, elle a une qualité de signal plus élevée et une flexibilité de paramètres. L'avantage de cette stratégie réside dans la capture rapide des changements de tendance avec des retraits relativement faibles. La faiblesse est l'incapacité de faire face aux inversions de tendance.


/*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


Plus de