Stratégie de croisement de moyenne mobile de Hull


Date de création: 2024-03-22 14:57:10 Dernière modification: 2024-03-22 14:57:10
Copier: 2 Nombre de clics: 1150
1
Suivre
1617
Abonnés

Stratégie de croisement de moyenne mobile de Hull

Aperçu de la stratégie

La stratégie est basée sur le croisement des signaux des moyennes mobiles de Hull. Les moyennes mobiles de Hull sont un indicateur technique destiné à réduire le retard des moyennes mobiles, développé par Alan Hull. La stratégie utilise deux lignes de HMA de différentes périodes, produisant un signal d’achat lorsque les HMA de plus courte période traversent les HMA de plus longue période de bas en haut, et vice versa.

Principe de stratégie

  1. Calculer la moyenne mobile de Hull (HMA)

Le processus de calcul de l’HMA est le suivant:

  • Moyenne mobile pondérée (WMA) calculée au préalable, avec un cycle de la moitié de la longueur des paramètres d’entrée
  • Calculez le WMA de cette WMA, et la période est la longueur
  • Utilisez la formule suivante: HMA = 2 * WMA (longueur) / 2 - WMA (longueur)
  • On calcule à nouveau le WMA pour le résultat ci-dessus, la racine carrée de la longueur de la période, et on obtient le HMA final
  1. Génération de signaux de négociation
  • Un signal d’achat est généré lorsque le prix de clôture est en HMA
  • Un signal de vente est généré lorsque le HMA est franchi en dessous du prix de clôture
  1. Exécution d’une transaction selon un signal de transaction
  • Signaux d’achat: ouvrir une position à plusieurs têtes
  • Signal de vente: ouverture de position

Avantages stratégiques

  1. Les moyennes mobiles de Hull ont moins de retard par rapport aux moyennes mobiles simples et aux moyennes mobiles pondérées, et peuvent donc réagir plus rapidement aux variations de prix, ce qui améliore la sensibilité de la stratégie.

  2. Le signal est généré par le croisement de deux lignes HMA de différentes périodes, ce qui permet de filtrer efficacement certains bruits et faux signaux, améliorant ainsi la fiabilité du signal.

  3. Les paramètres sont réglables et peuvent s’adapter à différents marchés et variétés de transactions en ajustant les paramètres cycliques des HMA.

Risque stratégique

  1. La moyenne mobile de Hull est un indicateur en retard qui peut donner de faux signaux au début d’un renversement de tendance.

  2. Une mauvaise sélection des paramètres peut entraîner une mauvaise performance de la stratégie. Une période trop longue peut ralentir la réponse de la stratégie et une période trop courte peut entraîner un trop grand nombre de faux signaux.

  3. Comme toutes les stratégies basées sur un seul indicateur, cette stratégie peut mal fonctionner en cas de choc des marchés, produisant davantage de faux signaux et de pertes de transactions.

Direction d’optimisation

  1. L’introduction d’autres indicateurs techniques ou fondamentaux comme conditions de filtrage, tels que le volume de transactions, les indicateurs de tendance, etc., peut être envisagée pour confirmer davantage l’efficacité du signal croisé HMA.

  2. Pour l’optimisation des paramètres, des méthodes telles que l’algorithme génétique et la recherche de grille peuvent être utilisées pour optimiser les paramètres sur des données historiques afin de trouver la combinaison de paramètres la plus appropriée pour le marché actuel.

  3. L’ajout de mécanismes de stop-loss et de stop-loss dans la stratégie permet de contrôler les risques et les gains d’une transaction unique.

  4. En tenant compte de la tendance du marché, il est possible de juger l’indicateur en introduisant la tendance du marché, de négocier dans un marché tendance et d’éviter les marchés instables.

Résumer

La stratégie de croisement des moyennes mobiles de Hull est une stratégie de négociation simple et facile à utiliser, qui permet de capturer les variations de prix en temps opportun grâce à la réactivité rapide de l’HMA. Cependant, comme toutes les stratégies, elle a ses limites. La performance est influencée par le type de marché et les choix de paramètres.

Code source de la stratégie
/*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)