L'objectif de cette stratégie est d'identifier les points d'inversion de tendance potentiels en observant le croisement entre la moyenne mobile exponentielle (EMA) de 20 périodes et la moyenne mobile simple (SMA) de 20 périodes.
La stratégie utilise les fonctions crossover et crossunder de la bibliothèque ta pour détecter les crossovers de moyenne mobile.
La stratégie combine la capacité de suivre la tendance des moyennes mobiles et la génération de signaux d'événements croisés, avec les avantages suivants:
La stratégie comporte également les risques suivants:
Les solutions:
La stratégie peut également être améliorée dans les domaines suivants:
La stratégie est relativement simple et pratique dans l'ensemble, en identifiant les points de renversement de tendance potentiels grâce à la théorie du croisement de la moyenne mobile. Mais il y a aussi une marge d'amélioration via des indicateurs supplémentaires, des paramètres dynamiques, des arrêts de pertes, du trading algorithmique, etc. pour rendre la stratégie plus robuste, fiable et automatisée. En résumé, il fournit un bon modèle pour commencer le trading quantitatif.
/*backtest start: 2022-12-28 00:00:00 end: 2024-01-03 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA-SMA Crossover Strategy", overlay=true) // Define the length of the moving averages emaLength = 20 smaLength = 20 // Calculate moving averages emaValue = ta.ema(close, emaLength) smaValue = ta.sma(close, smaLength) // Buy condition buyCondition = ta.crossover(emaValue, smaValue) and close > emaValue // Short sell condition sellCondition = ta.crossunder(emaValue, smaValue) and close < emaValue // Exit conditions for both Buy and Short sell exitBuyCondition = ta.crossunder(emaValue, smaValue) exitSellCondition = ta.crossover(emaValue, smaValue) // Strategy logic if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.entry("Sell", strategy.short) if (exitBuyCondition) strategy.close("Buy") if (exitSellCondition) strategy.close("Sell") // Plot the moving averages plot(emaValue, color=color.blue, title="20 EMA") plot(smaValue, color=color.red, title="20 SMA")