Stratégie de suivi de la tendance des moyennes mobiles doubles

Auteur:ChaoZhang est là., Date: 2024-02-04 15:57:12 Les résultats de l'enquête
Les étiquettes:

img

Résumé

La stratégie de suivi de tendance des moyennes mobiles doubles utilise une combinaison de moyennes mobiles rapides et lentes pour déterminer la direction de la tendance, ainsi que la couleur du corps du chandelier comme signaux d'entrée.

Principe

La stratégie utilise une moyenne mobile lente de 20 périodes pour définir la tendance globale. Le croisement ascendant suggère une tendance haussière tandis que le croisement descendant suggère une tendance baissière. Un MA rapide de 5 périodes sert de filtre d'entrée. Les transactions ne sont déclenchées que lorsque le prix dépasse la MA rapide.

La stratégie examine l'action des prix en utilisant trois dimensions - tendance, MA à court terme et corps de chandelier, améliorant la fiabilité du signal.

Les avantages

  1. Combine le suivi de la tendance et le renversement moyen, adaptable à tous les environnements de marché.

  2. L'examen multifactoriel des signaux antérieurs améliore le taux de victoire en évitant les faux signaux.

  3. Optimisé en utilisant des longueurs MA, des couleurs de bougies vérifiées, etc.

  4. Une logique claire et concise, adaptée aux débutants.

Les risques

  1. L'utilisation d'un système d'évaluation de la rentabilité peut entraîner des pertes ou des retraits.

  2. Essayez de modifier le nombre de bougies vérifiées ou de désactiver le renversement moyen.

  3. Des tests antérieurs importants sont nécessaires pour valider les paramètres et les performances.

Amélioration

  1. Examiner d'autres types d'AM, par exemple EMA, KAMA, etc.

  2. Ajouter des règles de dimensionnement des positions, par exemple quantité fixe ou pourcentage de capitaux propres.

  3. Considérez la possibilité de sortir des positions longues si le prix se ferme en dessous de la moyenne moyenne lente.

  4. Test sur différents instruments pour vérifier la stabilité.

Conclusion

La stratégie Double MA tire profit des transactions de tendance tout en extraisant l'alpha de la réversion moyenne dans des délais plus courts. La performance et le potentiel de profit peuvent être améliorés par l'optimisation. Malgré sa simplicité, elle permet aux débutants de saisir les concepts clés autour de la combinaison de la tendance et de la réversion moyenne.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs 1.5", shorttitle = "Trend MAs 1.5", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
type = input(7, defval = 7, minval = 1, maxval = 7, title = "Type of Slow MA")
src = input(close, defval = close, title = "Source of Slow MA")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")

fastsma = ema(src, fastlen)

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Trend
ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0
trend = low > ma ? 1 : high < ma ? -1 : trend[1]

//Bars
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

//Signals
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

//Lines
colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast MA")
plot(ma, color = blue, linewidth = 3, transp = 0, title = "Slow MA")

//Trading
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)

Plus de