Cette stratégie est basée sur les signaux croisés de la moyenne mobile de Hull (HMA). La moyenne mobile de Hull est un indicateur technique développé par Alan Hull, qui vise à réduire le décalage des moyennes mobiles traditionnelles.
L'HMA est calculée comme suit:
Comparé à la moyenne mobile simple et à la moyenne mobile pondérée, la moyenne mobile Hull a moins de décalage, elle peut donc réagir plus rapidement aux variations de prix, améliorant ainsi la réactivité de la stratégie.
En utilisant le croisement de deux HMA avec des périodes différentes pour générer des signaux, beaucoup de bruit et de faux signaux peuvent être filtrés efficacement, ce qui améliore la fiabilité des signaux.
Les paramètres sont réglables: en ajustant les paramètres périodiques des HMA, la stratégie peut être adaptée à différents marchés et instruments de négociation.
La moyenne mobile Hull est un indicateur à retardement, qui peut générer de faux signaux dans les premiers stades d'un renversement de tendance.
Une sélection inappropriée des paramètres peut entraîner une mauvaise performance de la stratégie.
Comme toutes les stratégies basées sur un seul indicateur, cette stratégie peut ne pas bien fonctionner sur les marchés latéraux, générant plus de faux signaux et des transactions perdantes.
Il convient d'envisager d'introduire d'autres indicateurs techniques ou facteurs fondamentaux comme filtres, tels que le volume des transactions, les indicateurs de tendance, etc., afin de confirmer davantage la validité des signaux croisés HMA.
Pour l'optimisation des paramètres, des méthodes telles que les algorithmes génétiques et la recherche par grille peuvent être utilisées pour trouver la combinaison optimale de paramètres sur les données historiques qui convient le mieux au marché actuel.
Incorporer des mécanismes de stop-loss et de take-profit dans la stratégie pour contrôler le risque et le rendement de chaque transaction.
En introduisant des indicateurs pour juger des tendances du marché, on peut négocier sur des marchés en tendance et éviter les marchés latéraux.
La stratégie Hull Moving Average Crossover est une stratégie de trading simple et facile à utiliser. Avec la caractéristique de réponse rapide de HMA, elle peut capturer les changements de prix en temps opportun. Cependant, comme toutes les stratégies, elle a également ses limites et sa performance sera affectée par les types de marché et la sélection des paramètres. Dans l'application pratique, elle peut être combinée avec d'autres méthodes d'analyse pour confirmer davantage les signaux.
/*backtest start: 2023-03-16 00:00:00 end: 2024-03-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //Basic Hull Ma Pack tinkered by InSilico strategy("RKTD BETA - Hull Suite by InSilico", overlay=true) //INPUT src = input(close, title="Source") modeSwitch = input("Ehma", title="Hull Variation", options=["Hma", "Thma", "Ehma"]) length = input(200, title="Length(180-200 for floating S/R , 55 for swing entry)") lengthMult = input(1.0, title="Length multiplier (Used to view higher timeframes with straight band)") useHtf = input(false, title="Show Hull MA from X timeframe? (good for scalping)") htf = input("240", title="Higher timeframe", type=input.resolution) 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(40, title="Band Transparency",step=5) // Alert Messages longAlertMessage = '{"base": "BTC", "quote": "USDT", "price": ' + tostring(close) + ', "action": "long", "orderType": "market", "close":true}' shortAlertMessage = '{"base": "BTC", "quote": "USDT", "price": ' + tostring(close) + ', "action": "short", "orderType": "market", "close":true}' //FUNCTIONS //HMA HMA(_src, _length) => wma(2 * wma(_src, _length / 2) - wma(_src, _length), round(sqrt(_length))) //EHMA EHMA(_src, _length) => ema(2 * ema(_src, _length / 2) - ema(_src, _length), round(sqrt(_length))) //THMA THMA(_src, _length) => wma(wma(_src,_length / 3) * 3 - wma(_src, _length / 2) - 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, int(length * lengthMult)) HULL = useHtf ? security(syminfo.ticker, htf, _hull) : _hull 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) alertcondition(crossover(MHULL, SHULL), title="Hull trending up.", message="Hull trending up.") alertcondition(crossover(SHULL, MHULL), title="Hull trending down.", message="Hull trending down.") ///< Ending Filler fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch) ///BARCOLOR barcolor(color = candleCol ? (switchColor ? hullColor : na) : na) // Define Buy and Sell Conditions based on crossovers buyCondition = crossover(MHULL, SHULL) sellCondition = crossunder(MHULL, SHULL) // Plotting the Hull Moving Average (HMA) plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch) plot(SHULL, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=transpSwitch) fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch) // Execute Strategy based on Buy and Sell Conditions strategy.entry("Buy", strategy.long, when=buyCondition, alert_message=longAlertMessage) strategy.entry("Sell", strategy.short, when=sellCondition, alert_message=shortAlertMessage) // Additional elements like bar coloring remain unchanged barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)