La stratégie de l'EMA est une stratégie de trading quantitative commune. Elle utilise deux moyennes mobiles exponentielles (EMA) avec des paramètres différents. Lorsque l'EMA de la période plus courte franchit le niveau de l'EMA de la période plus longue, elle devient longue. Lorsque l'EMA de la période plus courte franchit le niveau de l'EMA de la période plus longue, elle ferme la position.
La stratégie définit d'abord deux EMA, ema1 avec une longueur de 10 et ema2 avec une longueur de 21. Ensuite, elle calcule les valeurs des deux EMA. Lorsque ema1 franchit au-dessus d'ema2, elle signale une percée ascendante, ce qui est un signal long. Lorsque ema1 franchit au-dessous d'ema2, elle signale une rupture à travers les EMA, ce qui est un signal de position fermée.
Pour filtrer les fausses éruptions, le code définit également une valeur de seuil, calculée comme suit:
threshold = ((ema1 - ema2)*100) / ((ema1 + ema2)/2)
Ce seuil représente le pourcentage de la distance EMA par rapport à la moyenne EMA. Lorsque le seuil est supérieur à 0,15%, c'est un signal long. Lorsque le seuil est inférieur à -0,006%, c'est un signal de position proche.
En résumé, les signaux de négociation de cette stratégie sont les suivants:
Les avantages de cette stratégie sont les suivants:
L'utilisation des EMA peut aplanir les données sur les prix et aider à générer des signaux de trading.
La double mise en place de l'EMA permet d'équilibrer réactivité et stabilité.
Le seuil filtre les fausses ruptures et évite les transactions inutiles.
La logique de la stratégie est simple et claire, adaptée aux débutants.
Les paramètres et le seuil de l'EMA peuvent être optimisés.
Les risques de cette stratégie comprennent:
Les EMA sont à la traîne par rapport aux prix et risquent de rater des opportunités à court terme.
Le risque d'être pris au piège lorsque la tendance s'inverse, ce qui peut entraîner de grosses pertes.
Un seuil incorrect peut filtrer des signaux valides ou générer de faux signaux.
Si les paramètres de l'EMA sont inappropriés, il est possible que les deux EMA ne présentent pas de différences significatives, ce qui génère de faux signaux.
Le stop loss doit être réglé de manière raisonnable pour éviter d'être perturbé par de fortes fluctuations du marché.
La stratégie peut être optimisée dans les aspects suivants:
Optimiser les paramètres EMA et tester différentes périodes.
Optimiser la valeur de seuil pour équilibrer les faux signaux et les signaux valides.
Ajoutez d'autres indicateurs techniques tels que MACD, KDJ pour confirmer les signaux.
Ajoutez des mécanismes de stop-loss tels que les ordres de trailing stop ou OCO pour limiter les pertes.
Considérez les entrées de positions partielles pour réduire le risque.
Testez différentes périodes de rétention pour trouver la durée optimale.
La stratégie EMA a une logique claire et simple, utilisant les caractéristiques des EMA pour générer des signaux de trading. La stratégie présente certains avantages, mais des risques potentiels existent. La stratégie peut être améliorée en optimisant les paramètres, en définissant des stop loss, en filtrant les signaux, etc. Elle convient comme stratégie de trading quantitative pour un débutant.
/*backtest start: 2023-08-18 00:00:00 end: 2023-09-17 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ if high > ta.highest(high[1], 5) strategy.entry("Enter Long", strategy.long) else if low < ta.lowest(low[1], 5) strategy.entry("Enter Short", strategy.short)//@version=3 strategy(title="ema10-21", shorttitle="10/21", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 2500, commission_type = strategy.commission.percent, commission_value = 0.2) len1 = input(10, minval=1, title="EMA #1 length") src1 = input(close, title="EMA Source #1") a = ta.ema(src1, len1) plot(a, title="EMA #1", color=color.orange, linewidth=2, style=plot.style_line) len2 = input(21, minval=1, title="EMA #2 length") src2 = input(close, title="EMA Source #2") b = ta.ema(src2, len2) plot(b, title="EMA #2", color=color.blue, linewidth=2, style=plot.style_line) threshold = ((a-b)*100)/((a+b)/2) thresholdUp = threshold > 0.15 thresholdDown = threshold < -0.006 if (thresholdUp) strategy.entry("Buy", strategy.long) if (thresholdDown) strategy.close("Buy", strategy.long) //goLong() => (crossover(a, b)) and (threshold >= 0.0025) //killLong() => (crossunder(a, b)) and (threshold <= -0.0025) //strategy.entry("Buy", strategy.long, when = goLong()) //strategy.close("Buy", when = killLong()) //threshold = ((a-b)*100)/((a+b)/2) //achat = out1 > out2 //vente = out1 < out2 //and threshold < -0.025 //strategy.entry("long", true, when = achat) //strategy.exit("exit", "long", when = vente)