
Cette stratégie est basée sur la célèbre Hull Suite. Elle a été améliorée en ajoutant la commande “strategy.exit (()) ” de PineScript v5 pour réaliser un arrêt de trailing ou un arrêt de trailing retardé. La stratégie utilise principalement les caractéristiques de réaction rapide de la HMA pour capturer les tendances du marché, tout en améliorant la fiabilité du signal grâce à l’analyse de plusieurs périodes de temps.
Hull Moving Average ((HMA): Le cœur de la stratégie est d’utiliser l’HMA et ses variantes ((EHMA et THMA) pour identifier les tendances du marché. L’HMA a une vitesse de réaction plus rapide et moins de retard par rapport à la moyenne mobile traditionnelle.
Analyse multi-périodes: stratégie permettant de générer des signaux de transaction en comparant des HMA de différentes périodes. Cette méthode permet de réduire les faux signaux et d’améliorer la précision des transactions.
La stratégie utilise un mécanisme de trailing stop, qui s’active lorsque le profit atteint un certain nombre de points, permettant de verrouiller efficacement les bénéfices et de contrôler les risques.
Contrôle des périodes de transaction: la stratégie permet à l’utilisateur de définir des périodes de transaction spécifiques, ce qui aide à éviter de négocier à des périodes de faible volatilité ou de sous-liquidité.
Contrôle de la direction: la stratégie offre la possibilité de choisir la direction de la transaction (de faire plus, de faire moins ou dans les deux sens), 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 Hull Moving Average (HMA, EHMA, THMA) pour s’adapter à différentes conditions du marché.
La gestion des risques est excellente: grâce à l’utilisation d’un mécanisme de stop-loss dynamique, la stratégie permet de limiter les pertes potentielles tout en protégeant les bénéfices.
Adaptabilité: La méthode d’analyse à cycles multiples permet aux stratégies de s’adapter à différents environnements de marché, réduisant ainsi l’impact des faux signaux.
La stratégie offre de nombreuses options de visualisation, telles que des bandes HMA codées en couleurs, qui aident les traders à mieux comprendre les tendances du marché.
Le degré d’automatisation est élevé: les stratégies peuvent être exécutées de manière entièrement automatisée, ce qui réduit la possibilité d’influences émotionnelles artificielles et d’erreurs opérationnelles.
Surtrading: En raison de la stratégie basée sur la HMA de réaction rapide, il peut y avoir trop de faux signaux sur le marché horizontal, ce qui entraîne une surtrading.
Risque de glissement: la stratégie utilise la technique du scalping et peut présenter un risque de glissement plus élevé, en particulier dans les marchés à faible liquidité.
Sensitivité des paramètres: la performance d’une stratégie est fortement dépendante de la configuration des paramètres. Des paramètres incorrects peuvent entraîner une mauvaise performance de la stratégie.
Changement des conditions du marché: une stratégie peut avoir besoin de réoptimiser les paramètres pour rester efficace en cas de changement radical des conditions du marché.
Dépendance à la technologie: l’exécution de la stratégie dépend d’une connexion réseau stable et d’une plateforme de négociation, et les pannes techniques peuvent entraîner des pertes importantes.
Augmentation des indicateurs de l’humeur du marché: la combinaison d’indicateurs de l’humeur du marché tels que le VIX et la 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é de la stratégie.
Augmentation de l’analyse des volumes de transactions: la combinaison des données de volumes de transactions peut améliorer la précision des jugements de tendances et réduire les pertes causées par les fausses percées.
Optimiser le choix des périodes: trouver les meilleurs paramètres d’analyse multi-périodes en testant les différentes combinaisons de périodes.
L’introduction de la méthode de l’équilibrage du risque: l’utilisation de l’équilibrage du risque pour répartir les fonds dans des transactions multivariées permet de mieux contrôler le risque de l’ensemble du portefeuille.
HMA Optimized Multi-Periodic Quantitative Trading Strategy combinée à Dynamic Stop Loss est un système de trading flexible et efficace. Il offre aux traders une solution complète de trading quantitatif en combinant les caractéristiques de réaction rapide de la moyenne mobile de Hull, la stabilité de l’analyse multi-période et le contrôle du risque de stop loss dynamique.
/*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")