Stratégie de croisement à double moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-10-17 13:54:05 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie génère des signaux de trading basés sur la différence entre deux moyennes mobiles avec des délais différents. Elle calcule une SMA plus rapide et une SMA plus lente, et produit des signaux d'achat lorsque la SMA rapide traverse au-dessus de la SMA lente d'en bas, et des signaux de vente lorsque la SMA rapide traverse au-dessous de la SMA lente d'en haut.

Comment fonctionne- t- il?

La logique de base de cette stratégie est de calculer deux moyennes mobiles, SMA (len1) et SMA (len2), et leur différence diff. Ici, len1 représente la période de l'AM plus rapide et len2 l'AM plus lent.

Lorsque le MA plus rapide traverse le MA plus lent en bas, cela indique que le prix à court terme a commencé à augmenter au-dessus de la tendance à long terme, et donc une entrée longue peut être prise.

Pour filtrer les faux signaux, la stratégie utilise également out3 comme ligne de signal de trading, qui est la différence lissée entre le MA plus rapide et le point médian du prix.

Plus précisément, la variable longue détient des valeurs positives lorsque out3 dépasse dif, donnant des signaux d'achat. La variable courte détient des valeurs négatives lorsque out3 dépasse dif, générant des signaux de vente.

Analyse des avantages

Il s'agit d'une stratégie très simple et intuitive pour suivre les tendances. Il utilise le croisement de deux MA de périodes différentes pour identifier les points d'inversion de tendance, ce qui peut être plus fiable qu'un seul système MA. Le filtre de la ligne de signal de trading aide également à éviter les faux signaux dans les marchés agités dans une certaine mesure.

Comparé au stop loss, il adopte une mentalité de suivi de tendance pour maximiser les profits pendant les tendances plus longues sans être arrêté.

Cette stratégie a peu de paramètres et est facile à comprendre et à régler, ce qui la rend adaptée comme stratégie de trading algos pour un débutant.

Risques et améliorations

Le risque le plus important de cette stratégie est de ne pas choisir correctement les périodes de MA, ce qui entraîne de mauvais signaux. Si le len1 est trop long, les premiers mouvements de tendance seront manqués; si le len2 est trop court, les fléchettes augmenteront.

Les paramètres peuvent être optimisés en essayant différentes valeurs de len1 et len2 pour trouver la meilleure combinaison.

Les stratégies de suivi des tendances devraient également contrôler les pertes sur les transactions uniques, par le biais d'un stop loss ou d'une dimensionnement des positions.

Conclusion

La stratégie de double MA est une tendance par excellence. Son système simple de double MA offre des signaux stables, tandis que le filtre aide à éviter le bruit. Avec des périodes MA optimisées, elle peut obtenir de bonnes performances.


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

//by afrazium
//@version=3
strategy(title="SMA Diff strat", shorttitle="SMAD STR", overlay=false, initial_capital=1, precision=8, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, calc_on_order_fills= false, calc_on_every_tick=false, pyramiding=0)
len1 = input(50, minval=1, title="Length1"), len2 = input(100, minval=1, title="Length2"), smo = input(1, minval=1, title="Smoothing")
src = input(ohlc4, title="Source")

mid = src
expr1 = sma(src, len1), expr2 = sma(src, len2)
dif = (expr1 - expr2), out1 = (mid - expr1), out2 = (mid - expr2), out3 = sma(out1, smo)

long = crossover(out3, dif) ? out3 : na, short = crossunder(out3, dif) ? out3 : na

plot(out3, color=black, linewidth=2), hline(0)
clr = out2 >= out1 ? lime : red, plot(dif, color=clr, linewidth=2)
plot(long, title = 'Crossover', color = green, style = circles, linewidth=4), plot(short, title = 'Crossunder', color = red, style = circles, linewidth=4)

strategy.entry("buy", strategy.long, when=crossover(out1, dif))
strategy.close("buy", when=crossunder(out1, dif))

//plot(out2, color=blue, linewidth=2)
//A = plot(mid/10, color=red, linewidth=1, transp=100), B = plot(mid/20, color=red, linewidth=1, transp=100)
//C = plot(-mid/10, color=green, linewidth=1, transp=100), D = plot(-mid/20, color=green, linewidth=1, transp=100)
//fill(A, B, color=red), fill(C, D, color=green)



Plus de