Stratégie quantitative à double moyenne mobile de la croix d'or

Auteur:ChaoZhang est là., Date: 2023-12-26 à 15h52
Les étiquettes:

img

Résumé

Cette stratégie évalue les tendances des prix et les opportunités de trading en calculant les doubles croisements des moyennes mobiles. Lorsque le MA rapide dépasse le MA lent, il est considéré comme une croix d'or pour aller long. Lorsque le MA rapide dépasse le MA lent, il est considéré comme une croix de mort pour aller court.

Principe de stratégie

Les principes fondamentaux de cette stratégie sont les suivants:

  1. Calculer deux groupes de moyennes mobiles avec des paramètres différents, un groupe réagit rapidement aux changements de prix et l'autre réagit relativement lentement.

  2. Lorsque les MAs se croisent, vérifiez le changement de l'indicateur de volume. Si l'indicateur de volume se brise également de manière significative, le signal de croisement est fiable. S'il n'y a pas de rupture correspondante dans le volume, il peut s'agir d'un faux signal.

  3. Enregistrer des positions longues ou courtes en fonction de la direction croisée et du jugement du volume.

Plus précisément, la stratégie évalue les tendances des prix en utilisant un croisement de MAs doubles de 7 périodes. Elle utilise des indicateurs de volume pour vérifier la fiabilité du signal. Lorsqu'elle obtient des signaux fiables, elle va long ou court par SIGNAL. Elle fixe des objectifs de profit pour prendre des profits.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. Combinaison de deux MAs pour déterminer la direction de la tendance et filtre de volume pour éviter de faux signaux et être pris au piège.

  2. Ne prenez des positions que lorsque le volume confirme, augmentant le taux de réussite.

  3. Avoir un mécanisme de prise de bénéfices pour prendre des bénéfices à temps et éviter de rendre des bénéfices.

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  1. Un retard de croisement de MA peut manquer la meilleure opportunité. peut optimiser les paramètres pour rendre les MA plus sensibles.

  2. Difficile de juger quand le volume diverge, on peut ajouter plus d'indicateurs pour confirmer.

  3. Un mauvais paramètre de stop profit peut entraîner une survente ou une retention trop longue des gains.

Directions d'optimisation

La stratégie peut être optimisée par les aspects suivants:

  1. Optimiser les périodes de MA pour qu'il soit plus réactif à la capture des changements de prix dans le temps.

  2. Ajouter plus d'indicateurs tels que MACD, KD pour la confirmation du signal afin d'éviter les faux signaux de volume.

  3. Incorporer plus de mécanismes de prise de profit comme arrêt de piste, arrêt de pourcentage, arrêt de volatilité pour une prise de profit dynamique.

  4. Ajouter un mécanisme de stop loss pour contrôler le montant des pertes d'une seule transaction.

  5. Optimiser la taille des positions adaptée aux différents environnements de marché.

Conclusion

En conclusion, l'idée de base de cette stratégie est d'utiliser un double crossover MA pour la tendance et un filtre de volume pour la fiabilité du signal. Il est stable et facile à mettre en œuvre.


/*backtest
start: 2022-12-19 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("ZendicatoR", overlay=true, calc_on_order_fills= true, calc_on_every_tick=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15, pyramiding=0)
dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001)
keh=input(title="Double HullMA Cross",defval=7, minval=1)
che1=input(title="MA 1",defval=34,minval=1)
che2=input(title="MA 2",defval=144,minval=1)
che3=input(title="MA 3",defval=377,minval=1)
amnt=input(title="TP ($)",defval=4200,minval=1)
wma1=wma(close,che1)
wma2=wma(close,che2)
wma3=wma(close,che3)
sma1=sma(close,11)
tms=10000000000000
A=request.security(syminfo.tickerid, 'D', close)*tms
B=request.security(syminfo.tickerid, 'D', close[1])*tms
C=A>B?green:red
D=wma2>wma3?green:red
plot(wma1,style=line,color=C,linewidth=4)
p1=plot(wma2,style=line,color=D)
p2=plot(wma3,style=line,color=D)
fill(p1, p2, color=D, transp=75)
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma,sqn=round(sqrt(keh))
n2ma1=2*wma(close[2],round(keh/2))
nma1=wma(close[2],keh)
diff1=n2ma1-nma1,sqn1=round(sqrt(keh))
n1=wma(diff,sqn)*tms
n2=wma(diff1,sqn)*tms
Q=n1>n2?blue:yellow
plot(sma1,style=line,color=Q,linewidth=4)
closelong = A*tms<B*tms and n2*tms>n1*tms and strategy.openprofit>amnt
if (closelong)
    strategy.close("Long")
closeshort = A*tms>B*tms and n1*tms>n2*tms and strategy.openprofit>amnt
if (closeshort)
    strategy.close("Short") 
longCondition = A*tms>B*tms and n1*tms>n2*tms
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = A*tms<B*tms and n1*tms<n2*tms
if (shortCondition)
    strategy.entry("Short",strategy.short)

Plus de