Cette stratégie génère des signaux de trading basés sur les croisements entre la ligne EMA rapide et la ligne EMA lente. Lorsque la ligne EMA rapide traverse au-dessus de la ligne EMA lente, un signal d'achat est généré. Lorsque la ligne EMA rapide traverse en dessous de la ligne EMA lente, un signal de vente est généré. Cette stratégie utilise l'avantage de la moyenne mobile pour suivre efficacement la tendance du marché et générer des signaux de trading lors de l'initiation de la tendance.
La ligne EMA à 10 jours répond plus rapidement aux changements de prix, tandis que la ligne EMA à 20 jours répond plus lentement. Lorsque la ligne EMA à court terme traverse au-dessus de la ligne EMA à long terme, cela signifie que la ligne moyenne à court terme commence à conduire la ligne à long terme vers le haut, ce qui implique que le marché peut passer à l'état haussier. À ce stade, un signal d'achat est généré. Au contraire, lorsque la EMA à court terme tombe en dessous de la EMA à long terme, cela signifie que la EMA à court terme commence à perdre sa puissance de leader avant la EMA à long terme, ce qui implique que le marché peut passer à l'état baissier.
En tirant parti de la logique de croisement entre les lignes EMA rapides et lentes, cette stratégie capture les points de basculement de la tendance du marché en temps opportun et génère des signaux de trading en conséquence.
Pour faire face à ces risques, des optimisations peuvent être introduites comme l'ajout de règles de filtrage, la combinaison du MACD pour éviter de faux signaux, l'utilisation d'une EMA adaptative pour accélérer la réponse, etc. De plus, des mécanismes d'arrêt des pertes et de prise de profit appropriés sont nécessaires.
Les orientations possibles pour une optimisation ultérieure comprennent:
Cette stratégie capture les points tournants critiques du marché grâce à la logique de croisement des lignes EMA doubles, ce qui la rend efficace pour le trading en direct. Avec des filtres supplémentaires, des indicateurs d'assistance et des optimisations de stop loss, la stabilité de la stratégie peut être encore améliorée.
/*backtest start: 2023-01-15 00:00:00 end: 2024-01-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Backtest single EMA cross", overlay=true) qty = input(100000, "Buy quantity") testStartYear = input(2019, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testStartHour = input(0, "Backtest Start Hour") testStartMin = input(0, "Backtest Start Minute") testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin) testStopYear = input(2099, "Backtest Stop Year") testStopMonth = input(1, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? #00FF00 : na testPeriod() => true ema1 = input(10, title="Select EMA 1") ema2 = input(20, title="Select EMA 2") expo = ema(close, ema1) ma = ema(close, ema2) avg_1 = avg(expo, ma) s2 = cross(expo, ma) ? avg_1 : na //plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0) p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0) p2 = plot(ma, color=color.orange, linewidth=2, transp=0) fill(p1, p2, color=color.white, transp=80) longCondition = crossover(expo, ma) shortCondition = crossunder(expo, ma) if testPeriod() strategy.entry("Long", strategy.long, when=longCondition) strategy.entry("Short", strategy.short, when=shortCondition) plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0) plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)