Les ressources ont été chargées... Je charge...

Stratégie d'achat et de vente croisée dans le temps

Auteur:ChaoZhang est là., Date: 2023-11-07 16h54 et 14h
Les étiquettes:

img

Résumé

Cette stratégie est basée sur l'indicateur Hull Moving Average, calculant Hull MA sur différentes périodes et comparant les tendances de Hull MA à travers les périodes pour identifier les changements de tendance.

La logique de la stratégie

  1. Paramètres d'entrée: Période de l'AM de la coque Période, échéancier HMA2 Résolution2, échéancier HMA3 Résolution3

  2. Calculer la valeur de la barre de courant MA de la coque HMA

  3. Calculer la valeur HMA2 de Hull sur la période de résolution2

  4. Calculer la valeur HMA3 de Hull sur la période de résolution3

  5. Comparer la relation de grandeur entre HMA, HMA2, HMA3

  6. Générer un signal d'achat lorsque HMA>HMA2>HMA3

  7. Générer un signal de vente lorsque HMA

  8. Afficher les valeurs et les signaux de Hull MA sur différentes périodes dans le coin supérieur gauche du graphique

  9. Utilisez des couleurs pour distinguer la tendance haussière et la tendance baissière

Analyse des avantages

  1. Utiliser plusieurs délais peut filtrer les fausses fuites et éviter les pièges.

  2. Paramètres de calendrier personnalisables, adaptables à différentes périodes et volatilités.

  3. Affichage en temps réel, fonctionnement intuitif.

  4. Les tendances visualisées de Hull MA aident à déterminer la tendance actuelle.

Analyse des risques

  1. Des paramètres mal réglés peuvent entraîner une survente.

  2. Les délais plus longs de Hull MA ont un effet de retard, peuvent manquer les points tournants de la tendance.

  3. Peut générer de faux signaux autour de la transition taureau-ours.

  4. Les stratégies d'évasion sont sujettes à être piégées par de fausses évasions.

  5. Les commissions de négociation ne sont pas prises en compte, ce qui a une incidence sur le bénéfice réel.

Les risques peuvent être réduits en optimisant les paramètres, en combinant d'autres indicateurs pour la filtration et en permettant un stop loss plus large.

Directions d'optimisation

  1. Optimiser la période de mise en marché de Hull adaptée à différentes périodes et volatilité.

  2. Ajoutez l'indicateur de volume pour éviter les fausses éruptions.

  3. Ajoutez des oscillateurs pour déterminer la force de la tendance.

  4. Incorporer des modèles d'apprentissage automatique pour le calendrier d'achat/vente.

  5. Combinez les indicateurs de sentiment pour détecter le battage médiatique sur le marché.

  6. Adapter la stratégie de stop loss pour une meilleure gestion des risques.

  7. Personnaliser les conditions d'achat/vente avec d'autres signaux d'indicateur.

  8. Ajouter des stratégies de négociation basées sur le canal de prix ou les vagues.

Conclusion

Cette stratégie utilise un Hull MA multi-temporel pour déterminer la direction de la tendance en comparant les pentes moyennes mobiles à travers les périodes et génère des signaux lors d'inversions 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)

Plus de