Stratégie de croisement des moyennes mobiles exponentielles

Auteur:ChaoZhang est là., Date: 2023-10-17 16:55:10 Je suis désolé
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de trading automatique basée sur le croisement de deux moyennes mobiles exponentielles (MMA) avec des périodes de temps différentes.

Principe

La stratégie utilise deux EMA, l'une est l'EMA sur une période plus longue, et l'autre est l'EMA sur la période actuelle.

Plus précisément, la stratégie définit d'abord deux paramètres de l'EMA:

  1. tf - Le plus grand délai, par défaut quotidien.
  2. len - Durée de la période EMA, par défaut 3.

Il calcule ensuite deux EMA:

  1. Ma1 - EMA de 3 jours sur la période journalière.
  2. Le montant de la valeur ajoutée de la valeur ajoutée de la valeur ajoutée de la valeur ajoutée de la valeur ajoutée de la valeur ajoutée.

Enfin, il entre dans les métiers basés sur:

  • Quand ma2 > ma1, il est long.
  • Quand ma2 < ma1, il est court.

En jugeant la direction de la tendance à travers des croisements entre deux EMA de périodes différentes, il automatise le trading.

Les avantages

La stratégie présente les avantages suivants:

  1. Principe simple, facile à comprendre et à mettre en œuvre, très adapté aux débutants.
  2. Suivre la tendance, obéir à la tendance, peut faire de bons profits.
  3. L'utilisation des EMA, plus sensibles aux variations de prix, permet de détecter rapidement les renversements de tendance.
  4. La combinaison des EMA de périodes différentes peut exploiter leurs points forts respectifs et améliorer la stabilité du système.
  5. Pas besoin de trop de paramètres, facile à tester et à optimiser, pratique pour le trading en direct.

Les risques

La stratégie comporte également certains risques:

  1. Une tendance faible à la suite de la capacité, peut être étouffée dans les marchés variés.
  2. En retardant dans les doubles croisements EMA, vous risquez de manquer certaines opportunités.
  3. Ne peut pas filtrer efficacement les croisements désordonnés entre deux EMA.
  4. Il s'appuie uniquement sur des EMA simples, difficiles à adapter à des marchés complexes.

Les risques peuvent être réduits en définissant un stop loss, en optimisant les paramètres, en ajoutant d'autres indicateurs, etc.

Optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Testez différents paramètres de l'EMA à grande période pour trouver la combinaison optimale.
  2. Ajoutez un filtre de volume pour éviter les faux signaux.
  3. Incorporer des indicateurs de tendance pour augmenter la taille et l'efficacité des positions.
  4. Définir un stop loss adaptatif pour contrôler les pertes d'une seule transaction.
  5. Optimiser le dimensionnement des positions en fonction des conditions du marché.
  6. Ajoutez des modèles d'apprentissage automatique pour rendre la stratégie plus intelligente.

Conclusion

La stratégie crossover de l'EMA capture les tendances avec des indicateurs simples, adaptés aux débutants pour apprendre et pratiquer.


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

//@version=3
strategy("Noro's Singapore Strategy", shorttitle = "Singapore str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
tf = input("D", title = "Big Timeframe")
len = input(3, minval = 1, title = "MA length")
src = input(close, title = "MA Source")
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")

//MAs
ma1 = request.security(syminfo.tickerid, tf, sma(src, len))
ma2 = sma(src, len)
plot(ma1, linewidth = 2, color = blue, title = "Big TF MA")
plot(ma2, linewidth = 2, color = red, title = "MA")

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]

if ma2 > ma1
    strategy.entry("L", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if ma2 < ma1
    strategy.entry("S", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Plus de