L'article présente une stratégie de négociation quantitative optimisée basée sur la moyenne mobile de Hull (HMA) qui combine l'analyse multicyclique et le mécanisme de stop-loss dynamique. Cette stratégie est améliorée sur la base de la célèbre Hull Suite en ajoutant la stratégie de sortie (strategy.exit) de PineScript v5. Cette stratégie utilise principalement les caractéristiques de réaction rapide de HMA pour capturer les tendances du marché tout en améliorant la fiabilité du signal grâce à l'analyse de plusieurs cycles de temps.
Hull Moving Average (HMA): au cœur de la stratégie se trouve l'utilisation de l'HMA et de ses variantes (EHMA et THMA) pour identifier les tendances du marché.
Analyse multi-cycles: stratégie pour générer des signaux de transaction en comparant des HMA à des cycles de temps différents. Cette méthode permet de réduire les faux signaux et d'améliorer l'exactitude des transactions.
Stop-loss dynamique: la stratégie utilise un mécanisme de trailing stop qui s'active lorsque la marge atteint un certain nombre de points, ce qui permet de bloquer efficacement les profits et de contrôler les risques.
Contrôle des heures de négociation: La stratégie permet aux utilisateurs de définir des heures de négociation spécifiques, ce qui aide à éviter de négocier à des heures de faible volatilité ou de faible liquidité.
Contrôle de direction: la stratégie offre des options pour choisir la direction de la transaction (plus, moins ou double direction), ce qui lui permet de s'adapter à différents environnements de marché et styles de négociation.
Flexibilité: La stratégie permet aux utilisateurs de choisir différentes variantes de la moyenne mobile de Hull (HMA, EHMA, THMA) pour s'adapter aux différentes conditions du marché.
Excellente gestion des risques: la stratégie permet de limiter les pertes potentielles tout en protégeant les profits en utilisant des mécanismes de stop-loss dynamiques.
Une grande adaptabilité: les méthodes d'analyse multicyclique permettent aux stratégies de s'adapter aux différents environnements du marché et de réduire l'impact des faux signaux.
Bonnes visualisations: la stratégie offre plusieurs options de visualisation, telles que des graphiques HMA codés en couleur, qui aident les traders à mieux comprendre les tendances du marché.
Automatisation élevée: les stratégies peuvent être exécutées de manière entièrement automatisée, ce qui réduit les risques d'influence humaine et d'erreur d'opération.
Sur-traitance: En raison de la stratégie HMA basée sur la réaction rapide, il peut y avoir trop de faux signaux sur les marchés horizontaux, ce qui entraîne une sur-traitance.
Risque de point de glissement: la stratégie utilise une technique de scalping et peut présenter un risque de point de glissement plus élevé, en particulier dans les marchés peu liquides.
Sensibilité aux paramètres: la performance des stratégies dépend fortement de la configuration des paramètres, et les paramètres incorrects peuvent entraîner une mauvaise performance des stratégies.
Changement des conditions du marché: Dans des conditions de marché qui changent fortement, la stratégie peut nécessiter de réoptimiser les paramètres pour rester efficace.
Dépendance technologique: l'exécution de la stratégie dépend d'une connexion réseau stable et d'une plateforme de trading, et une panne technique peut entraîner des pertes importantes.
Augmentation des indicateurs de l'émotion du marché: la combinaison d'indicateurs de l'émotion du marché tels que VIX et les taux de volatilité implicite des options peut aider la stratégie à mieux s'adapter aux différents environnements du marché.
Introduction d'algorithmes d'apprentissage automatique: l'utilisation de techniques d'apprentissage automatique pour ajuster dynamiquement les paramètres HMA et les niveaux de stop-loss peut améliorer l'adaptabilité des stratégies.
Augmentation de l'analyse du volume des transactions: la combinaison de données sur le volume des transactions peut améliorer l'exactitude des jugements de tendance et réduire les pertes liées aux fausses percées.
Optimisation de la sélection des cadres de temps: trouver les paramètres d'analyse multicyclique optimaux en réévaluant les combinaisons de différents cadres de temps.
Introduction d'une méthode de parité de risque: l'utilisation d'une méthode de parité de risque pour répartir les fonds dans des transactions multifonctions permet de mieux contrôler le risque global du portefeuille.
L'HMA optimisé pour la stratégie de négociation quantitative multi-cyclique est un système de négociation flexible et efficace combiné à un stop-loss dynamique. Il offre aux traders une solution complète de négociation quantitative en combinant les caractéristiques de réaction rapide des moyennes mobiles de Hull, la stabilité de l'analyse multi-cyclique et la maîtrise des risques de stop-loss dynamique. Bien que cette stratégie fonctionne bien sur un marché en évolution rapide, elle nécessite que les traders suivent de près les changements de conditions du marché et ajustent les paramètres en temps opportun pour rester efficaces.
/*backtest start: 2023-07-25 00:00:00 end: 2024-07-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © anotherDAPTrader //Based upon Hull Suite by InSilico and others// //with SCALP exit// //@version=5 strategy('DAP Hull Sweet Scalp v1 Strategy', overlay=true) // Session // session = input(title='Session (Goes flat at end of session!)', defval='1800-1700') //Check if it's in session// is_session(session) => not na(time(timeframe.period, session)) //Call the function Session = is_session(session) //Start and end of the session start = Session and not Session[1] end = not Session and Session[1] //Plot the background color to see the session bgcolor(Session ? color.new(color.white, 0) : na) // trade directions // strat_dir_input = input.string(title='Strategy Direction', defval='long', options=['long', 'short', 'all']) strat_dir_value = strat_dir_input == 'long' ? strategy.direction.long : strat_dir_input == 'short' ? strategy.direction.short : strategy.direction.all strategy.risk.allow_entry_in(strat_dir_value) src = close modeSwitch = input.string('Hma', title='Hull Variation', options=['Hma', 'Thma', 'Ehma']) length = input(55, title='Length(180-200 for floating S/R , 55 for swing entry)') switchColor = input(true, 'Color Hull according to trend?') candleCol = input(false, title='Color candles based on Hull\'s Trend?') visualSwitch = input(true, title='Show as a Band?') thicknesSwitch = input(1, title='Line Thickness') transpSwitch = input.int(40, title='Band Transparency', step=5) //FUNCTIONS //HMA HMA(_src, _length) => ta.wma(2 * ta.wma(_src, _length / 2) - ta.wma(_src, _length), math.round(math.sqrt(_length))) //EHMA EHMA(_src, _length) => ta.ema(2 * ta.ema(_src, _length / 2) - ta.ema(_src, _length), math.round(math.sqrt(_length))) //THMA THMA(_src, _length) => ta.wma(ta.wma(_src, _length / 3) * 3 - ta.wma(_src, _length / 2) - ta.wma(_src, _length), _length) //SWITCH Mode(modeSwitch, src, len) => modeSwitch == 'Hma' ? HMA(src, len) : modeSwitch == 'Ehma' ? EHMA(src, len) : modeSwitch == 'Thma' ? THMA(src, len / 2) : na //OUT HULL = Mode(modeSwitch, src, length) MHULL = HULL[0] SHULL = HULL[2] //COLOR hullColor = switchColor ? HULL > HULL[2] ? #00ff00 : #ff0000 : #ff9800 //PLOT ///< Frame Fi1 = plot(MHULL, title='MHULL', color=hullColor, linewidth=thicknesSwitch, transp=50) Fi2 = plot(visualSwitch ? SHULL : na, title='SHULL', color=hullColor, linewidth=thicknesSwitch, transp=50) ///< Ending Filler fill(Fi1, Fi2, title='Band Filler', color=hullColor, transp=transpSwitch) ///BARCOLOR barcolor(color=candleCol ? switchColor ? hullColor : na : na) // Scalp // slPoints = input.int(title='Profit Points Before Stop', minval=0, maxval=1000, step=1, defval=1, confirm=false) slOffset = input.int(title='Then Trailing Stop Loss of ', minval=1, maxval=1000, step=1, defval=1, confirm=false) //trades// // Long Entry Function// if Session and ta.crossover(HULL[0] , HULL[2]) strategy.entry('long', strategy.long) strategy.exit('trailing stop', from_entry='long', trail_points=slPoints, trail_offset=slOffset) // Short Entry Function// if Session and ta.crossunder(HULL[0] , HULL[2]) strategy.entry('short', strategy.short) strategy.exit('trailing stop', from_entry='short', trail_points=slPoints, trail_offset=slOffset) if end strategy.close_all("End of Session - Go FLat")