
La stratégie de double croisement des moyennes mobiles est une stratégie de négociation quantitative qui utilise les moyennes mobiles et les moyennes mobiles pour juger des entrées et des sorties. La stratégie combine simultanément les moyennes des différentes périodes pour former un filtre à plusieurs niveaux, ce qui réduit efficacement les faux signaux et améliore la fiabilité des signaux de négociation.
La logique centrale de la stratégie est de suivre 2 moyennes mobiles sur 3 périodes de temps (lignes de 10 et 200 jours) (lignes de 180 minutes, 60 minutes et 120 minutes). Lorsque la ligne rapide traverse la ligne lente du côté inférieur, un signal de fourche dorée est généré, ce qui signifie que la variété est entrée dans un mouvement à plusieurs têtes; lorsque la ligne rapide traverse la ligne lente du côté supérieur, un signal de fourche morte est généré, ce qui signifie que la variété est entrée dans un mouvement à vide.
La stratégie commence par calculer les lignes de 10 jours et de 200 jours, respectivement, sur des cycles de 180 minutes et 60 minutes. Lorsque la ligne de 10 jours de 180 minutes traverse la ligne de 200 jours de bas en haut, elle produit un signal de fourche dorée; lorsqu’elle traverse la ligne de 200 jours de haut en bas, elle produit un signal de fourche morte. Cela équivaut à un signal de transaction à cycle rapide.
Ensuite, la stratégie introduit la ligne de 200 jours sur une période de 120 minutes comme ligne de contrôle. La décision de lancer une transaction est prise en jugant si la ligne de 200 jours sur une période de 60 minutes est supérieure ou inférieure à la ligne de 200 jours sur une période de 120 minutes, afin d’éliminer certains faux signaux.
Par exemple, lorsque 180 minutes produisent un fourchette d’or, si la ligne de 200 jours de 60 minutes est supérieure à la ligne de 200 jours de 120 minutes, il faut regarder plus haut; ce n’est que dans cette condition que l’on peut ouvrir plus de billets. Au contraire, si la ligne de 200 jours de 60 minutes est inférieure à la ligne de 200 jours de 120 minutes, il ne faut pas regarder plus haut et ne pas ouvrir de position.
En résumé, la stratégie consiste à comparer les relations entre différentes périodes de temps, formant des filtres à plusieurs niveaux, ce qui améliore la fiabilité du signal et fait partie des stratégies de trading de type filtre courantes.
La confirmation à plusieurs cycles améliore l’exactitude du signal. Par rapport au jugement à un seul cycle, la stratégie utilise trois cycles de 180 minutes, 60 minutes et 120 minutes pour confirmer la relation de la ligne moyenne, ce qui réduit considérablement les faux signaux et améliore la qualité du signal de transaction.
La fréquence d’opération est modérée. Comparée à la stratégie de trading haute fréquence, la fréquence de négociation de cette stratégie est plus faible et ne nécessite pas d’opérations fréquentes, ce qui convient mieux au suivi manuel.
La mise en œuvre est simple et facile à comprendre. La stratégie utilise uniquement l’indicateur de la moyenne, sans logique complexe, une mise en œuvre très facile à comprendre, un seuil bas, adapté aux praticiens débutants.
L’optimisation peut s’effectuer en fonction de différents cycles et paramètres. Les cycles et les types de ligne moyenne de la stratégie peuvent être ajustés pour étudier des combinaisons de paramètres adaptées à différentes variétés et environnements de marché.
La stratégie repose principalement sur la relation de régularité, la réponse aux variations de prix étant un peu retardée, et il est facile de manquer une reprise rapide.
Il est facile de s’arrêter dans des marchés très volatiles. Lorsque les marchés sont très volatiles, les relations de parité peuvent se croiser fréquemment, ce qui entraîne des ouvertures et des arrêts fréquents. Cela augmente les coûts de transaction et le risque de perte.
Cette stratégie consiste principalement à optimiser les paramètres pour obtenir l’alpha, ce qui peut entraîner des problèmes de sur-optimisation et de sur-adaptation.
Les solutions pour gérer les risques sont les suivantes:
Réduire le paramètre de la moyenne de manière appropriée pour accélérer la vitesse de réaction.
Les conditions de filtrage sont renforcées pour éviter les positions fréquentes sur les marchés en crise.
Tester les données de différentes variétés et périodes pour évaluer la robustesse des paramètres.
Il y a encore de la place pour optimiser cette stratégie:
Essayez différentes combinaisons de cycles et de paramètres de moyenne ligne pour trouver des paramètres plus optimaux. Vous pouvez trouver de meilleures combinaisons de paramètres en utilisant des méthodes d’optimisation par le biais de l’exigence et de l’apprentissage automatique.
Augmentation de la confirmation des indicateurs de volume et de tendance à grande échelle. Cela permet de filtrer davantage les faux signaux, par exemple, ne pas ouvrir de position lorsque le volume est insuffisant.
Les modèles d’apprentissage en profondeur, tels que les RNN, sont utilisés pour faire des prévisions sur les prix futurs et aider à la prise de décision.
L’utilisation d’une ligne moyenne adaptative améliore la logique de filtrage. Lorsque le marché est en état de choc, la longueur de la ligne moyenne est ajustée dynamiquement, ce qui réduit la fréquence d’ouverture des positions.
La stratégie de négociation de l’algorithme de la fourchette à double ligne est une stratégie de négociation d’algorithme de type filtre plus courante. Elle est facile à mettre en œuvre, convient aux débutants, peut également être étendue et optimisée en plusieurs dimensions et mérite une étude et une application approfondies.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(shorttitle = "ALGO 3-1-2", title="ALGO 3h, 1h, 2h", overlay=true)
bool startLONGBOTandDEAL = false
bool stopLONGBOTandDEAL = false
bool openLONG = false
bool closeLONG = false
bool startSHORTBOTandDEAL = false
bool stopSHORTBOTandDEAL = false
bool openSHORT = false
bool closeSHORT = false
MA1Period = ema(close, 10)
MA2Period = ema(close, 200)
MA3Period = ema(close, 200)
MA1 = security(syminfo.tickerid, "180", MA1Period)
MA2 = security(syminfo.tickerid, "60", MA2Period)
MA3 = security(syminfo.tickerid, "120", MA3Period)
MA12Crossover = crossover(MA1, MA2)
MA12Crossunder = crossunder(MA1, MA2)
MA23Crossover = crossover(MA2, MA3)
MA23Crossunder = crossunder(MA2, MA3)
if MA23Crossover
startLONGBOTandDEAL := true //stop shortBOT and DEAL code in the TV alert as well, probably stop first w/ a delay on startlong
lblBull = label.new(bar_index, na, ' BULL Time Open LONG', color=color.blue, textcolor=color.black, style=label.style_label_up, size=size.small)
label.set_y(lblBull, MA2)
strategy.close("go Short")
strategy.entry("go Long", strategy.long, comment="go Long")
if MA23Crossunder
//not sure if i should set alert for stop and start each bot, or just put start appropriate bot and stop its opposite in the same alert.
startSHORTBOTandDEAL := true
lblBull = label.new(bar_index, na, ' BEAR Time - Open SHORT', color=color.orange, textcolor=color.black, style=label.style_label_down, size=size.small)
label.set_y(lblBull, MA2)
strategy.close("go Long")
strategy.entry("go Short", strategy.short, comment="go Short")
if MA12Crossover
if MA2 >= MA3
openLONG := true
lup1 = label.new(bar_index, na, ' OPEN LONG ', color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small, yloc=yloc.belowbar)
strategy.entry("go Long", strategy.long, comment="go Long")
if MA2 <= MA3
closeSHORT := true
lup1 = label.new(bar_index, na, ' CLOSE SHORT ', color=color.gray, textcolor=color.black, style=label.style_label_up, size=size.small, yloc=yloc.belowbar)
strategy.close("go Short")
if MA12Crossunder
if MA2 >= MA3
closeLONG := true
lun1 = label.new(bar_index, na, ' CLOSE LONG ', color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small, yloc=yloc.abovebar)
strategy.close("go Long")
if MA2 <= MA3
openSHORT := true
lun1 = label.new(bar_index, na, ' OPEN SHORT ', color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small, yloc=yloc.abovebar)
strategy.entry("go Short", strategy.short, comment="go Short")
plot(MA1, color=color.green, linewidth=2, title="MA1")
plot(MA2, color=color.yellow, linewidth=3, title="MA2")
plot(MA3, color=color.red, linewidth=4, title="MA3")
alertcondition(startLONGBOTandDEAL, title="Start LONG BOT and DEAL", message="Start Long Bot and Deal")
alertcondition(stopLONGBOTandDEAL, title="Stop LONG BOT and DEAL", message="Stop Long Bot and Deal")
alertcondition(openLONG, title="Open LONG DEAL", message="Open Long Deal")
alertcondition(closeLONG, title="Close LONG DEAL", message="Close Long Deal")
alertcondition(stopSHORTBOTandDEAL, title="Stop SHORT BOT and DEAL", message="Stop Short Bot and Deal")
alertcondition(openSHORT, title="Open SHORT DEAL", message="Open Short Deal")
alertcondition(closeSHORT, title="Close SHORT DEAL", message="Close Short Deal")