
Cette stratégie est basée sur l’indicateur de moyenne mobile de Hull, calcule la MA de Hull sur différents axes de temps et compare les mouvements de la MA de Hull sur différents axes de temps pour découvrir les changements de tendance. Génère un signal d’achat lorsque la MA de Hull à courte période traverse la MA de Hull à longue période; génère un signal de vente lorsque la MA de Hull à courte période traverse la MA de Hull à longue période.
Paramètres d’entrée: Période de la période Hull MA, Résolution de la période HMA2 et Résolution de la période HMA3
Calculer le Hull MA sur la ligne K actuelle
Calculer le Hull MA HMA2 sur la ligne de temps résolution 2
Calculer le Hull MAHMA3 sur la ligne de temps résolution 3
Comparer les relations de taille entre HMA, HMA2 et HMA3
Un signal d’achat est généré lorsque HMA>HMA2>HMA3
Lorsque HMA < HMA2 < HMA3, un signal de vente est généré
Afficher les valeurs et les signaux de Hull MA sur les différents axes temporels en haut à gauche de l’interface
Utilisation de couleurs pour distinguer les épisodes de déclin
L’utilisation de plusieurs axes de temps permet de filtrer les fausses percées et d’éviter d’être piégé.
Les paramètres de l’axe temporel peuvent être personnalisés pour différentes périodes.
Les signaux sont affichés en temps réel et les opérations sont intuitives.
Visualisez le mouvement de la Hull MA pour déterminer la tendance actuelle.
Une mauvaise configuration des paramètres peut entraîner des transactions trop fréquentes.
Le Hull MA à grande période est en retard et risque de manquer le point de basculement.
La stratégie produit un faux signal lorsque le taureau et l’ours se déplacent.
La stratégie de type “briser” peut être utilisée comme une fausse stratégie de “briser”.
Les frais de transaction ne sont pas pris en compte, ce qui affecte les bénéfices réels.
Le risque peut être réduit en optimisant les paramètres, en combinant d’autres indicateurs comme filtres et en assouplissant de manière appropriée la ligne de stop.
Optimiser les paramètres de cycle Hull MA pour s’adapter à différents cycles et taux de fluctuation.
Pour augmenter le jugement sur les indicateurs de transaction et éviter les fausses percées.
Il est également possible d’ajouter des indicateurs de choc pour déterminer la force de la tendance.
L’ajout de modèles d’apprentissage automatique pour déterminer le moment de l’achat ou de la vente.
Les résultats de l’enquête ont été publiés dans le journal Le Figaro.
Adaptation de la stratégie d’arrêt des pertes et optimisation de la gestion des risques
Les conditions d’achat et de vente sont personnalisées, combinées à d’autres signaux d’indicateurs.
Augmentation des stratégies de négociation basées sur les canaux et les bandes de prix.
Cette stratégie est basée sur la comparaison des indicateurs de Hull MA sur différents axes temporels, pour déterminer la direction de la tendance actuelle et générer des signaux d’achat et de vente lorsque la tendance se retourne. Comparée à une seule moyenne, la Hull MA multi-axes permet de filtrer efficacement les fausses ruptures. Cependant, la stratégie présente également des problèmes de paramétrage et de jugement de tendance.
/*backtest
start: 2023-10-07 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//
strategy("wtfBUYorSELLffs",overlay=true,currency="USD",initial_capital=100000,default_qty_type=strategy.percent_of_equity,default_qty_value=100,commission_type=strategy.commission.percent,commission_value=0.1)
Period=input(title="Hull MA Period",type=input.integer,defval=6,minval=1)
Resolution2=input(title="HMA2 Resolution", type=input.resolution,defval="60")
Resolution3=input(title="HMA3 Resolution", type=input.resolution,defval="240")
Price=input(title="Source of Price",type=input.source,defval=open)
xOffset = input(40, title="Panel offset (X-Axis)")
yOffset = input(0, title="Panel offset (y-Axis)")
lightgray = #D3D3D3FF
pnlTextColor = color.silver
pnlColor = color.black
HMA = hma(Price,Period)
HMA2 = security(syminfo.tickerid, Resolution2, HMA,barmerge.gaps_off,barmerge.lookahead_off)
HMA3 = security(syminfo.tickerid, Resolution3, HMA,barmerge.gaps_off,barmerge.lookahead_off)
HUP = HMA > HMA[1]
H1UP = security(syminfo.tickerid, Resolution2, HUP,barmerge.gaps_off,barmerge.lookahead_off)
H2UP = security(syminfo.tickerid, Resolution3, HUP,barmerge.gaps_off,barmerge.lookahead_off)
int barSize = timeframe.isdaily ? timeframe.multiplier*86400000 :
timeframe.isseconds? timeframe.multiplier*1000 :
timeframe.isminutes? timeframe.multiplier*60000 : (time[0]-time[1])
int lapos_x = timenow + barSize*xOffset
float lapos_y = highest(20) + yOffset*syminfo.mintick * syminfo.pointvalue
f_draw_infopanel(_x, _y, _line, _text)=>
_rep_text = ""
for _l = 0 to _line
_rep_text := _rep_text + "\n"
_rep_text := _rep_text + _text
// var label _la = na
// label.delete(_la)
// _la := label.new(
// x=_x, y=_y,
// text=_rep_text, xloc=xloc.bar_time, yloc=yloc.price,
// color=pnlColor, style=label.style_labelup, textcolor=pnlTextColor, size=size.normal)
// f_draw_infopanel(lapos_x, lapos_y, 8, "╚═══════════════════════╝")
f_draw_infopanel(lapos_x, lapos_y, 6, "HMA3 on TF " + Resolution3 + " = " + tostring(HMA3,"#.####") + (H2UP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 4, "HMA2 on TF " + Resolution2 + " = " + tostring(HMA2,"#.####") + (H1UP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 2, "HMA1 on TF " + timeframe.period + " = " + tostring(HMA,"#.####") + (HUP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 0, "╔═════════ HMA(" + tostring(Period,"#") +") ════════╗")
change_color=HMA>HMA3?color.green:color.red
change_color2=HMA2>HMA3?color.lime:color.yellow
plot1=plot(HMA3,color=change_color2,title="3 Hull MA Line",linewidth=2,transp=75)
plot2=plot(HMA2,color=change_color,title="2 Hull MA Line",linewidth=2,transp=75)
plot3=plot(HMA,color=color.white,title="Hull MA Line",linewidth=2,transp=75)
fill(plot1,plot3,color=change_color,transp=90)
fill(plot2,plot3,color=change_color2,transp=75)
if (H2UP and H1UP and HUP)
strategy.entry("BUY",strategy.long)
if (not H2UP and not H1UP and not HUP)
strategy.entry("SELL",strategy.short)