Stratégie de prix croisés de la moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-11-27 16h52 et 19h
Les étiquettes:

img

Résumé

Cette stratégie est essentiellement une stratégie croisée de moyenne mobile. En calculant la moyenne mobile des prix et en fixant certaines moyennes mobiles à court et à long terme, passez à long lorsque la moyenne mobile à court terme passe au-dessus de la moyenne mobile à long terme depuis le bas; passez à court lorsque la moyenne mobile à court terme passe en dessous de la moyenne mobile à long terme depuis le haut.

Principaux

L'idée de base de la stratégie croisée des moyennes mobiles des prix est la suivante: la moyenne mobile des prix peut refléter efficacement la tendance des changements de prix.

La stratégie calcule une moyenne mobile à plus long terme et une moyenne mobile à plus court terme. La ligne longue juge principalement la tendance majeure, et la ligne courte est utilisée pour capturer les fluctuations à moyen terme pendant la tendance majeure. Les signaux de trading de la stratégie proviennent principalement du croisement de la ligne courte sur la ligne longue: le signal long lorsque la ligne courte traverse au-dessus de la ligne longue, et le signal court lorsque la ligne courte traverse en dessous. En outre, la stratégie filtre les signaux pour éviter les faux signaux.

Plus précisément, la stratégie utilise 7 types différents de moyennes mobiles, y compris SMA, EMA, VWMA, etc. Les utilisateurs peuvent sélectionner le type de moyenne mobile. La longueur de la moyenne mobile peut également être réglée de manière flexible. En outre, la stratégie prévoit également des restrictions sur certaines périodes de temps de négociation et des mécanismes de gestion de position.

Analyse des avantages

Les principaux avantages de la stratégie croisée des moyennes mobiles sont les suivants:

  1. La logique stratégique est claire et simple, facile à comprendre et à mettre en œuvre, adaptée aux débutants.

  2. Le principe de la stratégie est solide, basé sur des règles entièrement vérifiées de négociation de moyennes mobiles, et a été testé dans la pratique sur les marchés.

  3. Les paramètres de la stratégie sont flexibles et réglables, les utilisateurs pouvant choisir les paramètres appropriés en fonction de leurs propres jugements et préférences sur le marché.

  4. La stratégie comporte certains mécanismes de contrôle des risques pour réduire le temps de détention des ordres perdants et prévenir les positions inversées inutiles.

  5. La stratégie contient plusieurs types de moyennes mobiles. Les utilisateurs peuvent sélectionner le type de moyenne mobile le plus approprié pour leurs variétés de trading.

  6. La stratégie préconise d'utiliser une logique de négociation pendant des périodes de négociation spécifiques afin d'éviter des fluctuations anormales sur les principaux marchés des fêtes.

Analyse des risques

Bien que la stratégie croisée des moyennes mobiles présente de nombreux avantages, il existe encore certains risques dans le commerce réel, qui se reflètent principalement dans les deux aspects suivants:

  1. En raison du décalage de la plupart des moyennes mobiles, des signaux croisés peuvent apparaître à un stade ultérieur après la fin de l'inversion des prix, ce qui est facile à piéger.

  2. En cas d'imposition incorrecte des paramètres, les signaux croisés peuvent être trop fréquents, ce qui entraîne une activité de négociation trop élevée et des coûts de négociation plus élevés.

En réponse aux risques susmentionnés, les contrôles et les méthodes d'adaptation sont effectués de la manière suivante:

  1. Contrôler le risque de perte unique en définissant une plage de stop loss appropriée.

  2. Réduire la fréquence des transactions et prévenir le sur-échange en ajoutant des conditions de filtrage.

  3. Optimiser les paramètres de la moyenne mobile pour sélectionner la combinaison de paramètres la plus appropriée pour vos propres variétés et cycles de trading.

Optimisation

Il est encore possible d'optimiser davantage cette stratégie de croisement des moyennes mobiles de prix, dans les domaines suivants:

  1. Renforcer le mécanisme de protection dans des conditions de marché extrêmes, par exemple suspendre temporairement les échanges lors de fortes fluctuations de prix pour éviter des conditions de marché anormales.

  2. Augmenter les conditions de filtrage et les signaux de trading combinés pour améliorer la qualité et la stabilité des signaux.

  3. Adopter un système de paramètres dynamiques. Selon les conditions du marché et les caractéristiques des variétés, ajuster automatiquement les paramètres clés tels que la longueur moyenne mobile, l'interrupteur de négociation, etc. au lieu d'utiliser des valeurs fixes.

  4. Appliquez ce signal de croisement de moyenne mobile dans des stratégies avancées comme l'arbitrage de variété composite. Combinez-le avec d'autres informations pour une optimisation de stratégie approfondie.

Ces suggestions peuvent élargir l'environnement applicable et l'efficacité de cette stratégie et permettre de mieux équilibrer les risques et les avantages.

Conclusion

Cet article fait une analyse détaillée du code et une interprétation de la stratégie de croisement de moyenne mobile simple - Noros CrossMA. Nous analysons son idée de stratégie, sa structure de principe, ses principaux avantages et les directions d'amélioration possibles. Dans l'ensemble, cette stratégie a une logique claire et est simple et pratique. L'ajustement flexible des paramètres peut s'adapter à de nombreux environnements de trading. Nous analysons également les problèmes et les risques existants dans la stratégie et donnons des conseils ciblés.


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

//Noro
//2019

//@version=4
strategy(title = "Noro's CrossMA", shorttitle = "CrossMA", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0, commission_value = 0.1)

needlong = input(true, "long")
needshort = input(true, "short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
type = input(defval = "SMA", options = ["SMA", "EMA", "VWMA", "DEMA", "TEMA", "KAMA", "PCMA"], title = "MA type")
src = input(close, defval = close, title = "MA Source")
len = input(30, defval = 30, minval = 1, title = "MA length")
off = input(00, defval = 00, minval = 0, title = "MA offset")
anti = input(true, defval = true, title = "Anti-saw filter")
showma = input(true, defval = true, title = "Show MA")
showbg = input(false, defval = false, title = "Show background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//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 = 0.0
kama := nz(kama[1]) + nsmooth * (src - nz(kama[1]))

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

sma_1 = sma(src, len)
ema_1 = ema(src, len)
vwma_1 = vwma(src, len)
ma2 = type == "SMA" ? sma_1 : type == "EMA" ? ema_1 : type == "VWMA" ? vwma_1 : type == "DEMA" ? dema : type == "TEMA" ? tema : type == "KAMA" ? kama : type == "PCMA" ? center : 0
ma = ma2[off]

macol = showma ? color.blue : na
plot(ma, color = macol, linewidth = 3, transp = 0)

//Background
trend = 0
trend := anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]
bgcol = showbg ? trend == 1 ? color.lime : trend == -1 ? color.red : na : na
bgcolor(bgcol, transp = 70)

//Trading
size = strategy.position_size
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if trend == 1 and trend[1] == -1
    strategy.entry("Long", strategy.long, lot, when = needlong and truetime)
if trend == -1 and trend[1] == 1
    strategy.entry("Short", strategy.short, lot, when = needshort and truetime)
if size > 0 and needshort == false and trend == -1
    strategy.close_all()
if size < 0 and needlong == false and trend == 1
    strategy.close_all()
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")

Plus de