Cette stratégie utilise seulement deux lignes SMA, avec la SMA lente pour la direction de la tendance et la SMA rapide pour les signaux d'entrée.
Deux lignes SMA sont calculées, une rapide et une lente, ainsi que la ligne médiane du canal de prix. La ligne rapide a une période de 5, tandis que la ligne lente a une période de 20. Au-dessus de la ligne médiane du canal de prix, une tendance haussière est considérée, où des opportunités d'aller long sur la ligne rapide traversant au-dessus de la ligne lente sont recherchées. En dessous de la ligne médiane, une tendance baissière est recherchée, où des opportunités d'aller court sur la ligne rapide traversant au-dessous de la ligne lente sont recherchées.
Dans une tendance haussière, au moins 2 bougies rouges consécutives sont nécessaires après avoir vu le bas, avant d'aller long lorsque la ligne rapide traverse au-dessus de la ligne lente.
Les lignes SMA doubles et le canal de prix aident à déterminer la direction de la tendance, évitant ainsi les fausses ruptures.
Les paramètres personnalisables permettent de configurer de manière flexible les conditions long/short.
La surdépendance aux lignes SMA peut générer des faux signaux excessifs lors des variations.
L'ajustement des périodes SMA ou l'incorporation d'autres indicateurs techniques pourraient filtrer les signaux. Les indicateurs de volume peuvent également fournir des informations supplémentaires. La dimensionnement des positions pourrait également être optimisé en fonction des conditions du marché.
Testez différentes combinaisons de SMA rapide et lente pour trouver les paramètres optimaux.
Ajouter du volume et d'autres indicateurs pour la validation du signal.
Incorporer d'autres indicateurs techniques pour former une stratégie globale.
Mettre en place une dimensionnement dynamique des positions pour optimiser la gestion des capitaux.
Appliquer l'apprentissage automatique pour prédire les tendances des prix et les points d'inflexion.
Optimiser les stratégies de stop loss pour limiter les pertes.
Le double système SMA pour la détermination de la tendance est logiquement clair et couramment utilisé. Mais la dépendance excessive aux moyennes mobiles seule a tendance à générer de faux signaux, nécessitant d'autres indicateurs pour l'amélioration. Avec une validation plus qualitative et quantitative, la stratégie deviendrait plus robuste. Dans l'ensemble, elle fournit un modèle de tendance simple et fiable.
/*backtest start: 2023-08-20 00:00:00 end: 2023-09-19 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Noro's Trend SMA Strategy v1.4", shorttitle = "Trend SMA str 1.4", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) needlong = input(true, "long") needshort = input(true, "short") usefastsma = input(true, "Use fast SMA") fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast SMA Period") slowlen = input(20, defval = 20, minval = 2, maxval = 200, title = "slow SMA Period") bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q") fastsma = ema(close, fastlen) slowsma = ema(close, slowlen) //PriceChannel src = ohlc4 lasthigh = highest(src, slowlen) lastlow = lowest(src, slowlen) center = (lasthigh + lastlow) / 2 trend = low > center ? 1 : high < center ? -1 : trend[1] bar = close > open ? 1 : close < open ? -1 : 0 redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0 greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0 up = trend == 1 and (low < fastsma or usefastsma == false) and redbars == 1 ? 1 : 0 dn = trend == -1 and (high > fastsma or usefastsma == false) and greenbars == 1 ? 1 : 0 colorfastsma = usefastsma == true ? red : na plot(fastsma, color = colorfastsma, title = "Fast SMA") plot(center, color = blue, title = "Price Channel") longCondition = up == 1 if (longCondition) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) shortCondition = dn == 1 if (shortCondition) strategy.entry("Short", strategy.short, needshort == false ? 0 : na)