Il s'agit d'une stratégie de suivi de tendance basée sur plusieurs croisements de moyennes mobiles exponentielles (EMA). La stratégie utilise les relations de croisement entre une EMA à court terme de 10 périodes, une EMA à moyen terme de 50 périodes et une EMA à long terme de 200 périodes pour capturer les tendances du marché et exécuter des transactions longues / courtes lorsque les conditions sont remplies.
La stratégie utilise un triple système de croisement EMA comme mécanisme de génération de signaux. 1. Utilise l'EMA à 200 périodes comme indicateur principal de tendance, ne prenant que des positions longues au-dessus et des positions courtes en dessous 2. ouvre des positions longues lorsque l'EMA à court terme (10 périodes) dépasse l'EMA à moyen terme (50 périodes) et que le prix dépasse l'EMA à long terme 3. ouvre des positions courtes lorsque l'EMA à court terme dépasse l'EMA à moyen terme et que le prix est inférieur à l'EMA à long terme 4. Ferme les positions longues lorsque la moyenne moyenne moyenne à court terme est inférieure à la moyenne moyenne moyenne moyenne à court terme 5. Ferme les positions courtes lorsque la moyenne moyenne moyenne à court terme dépasse la moyenne moyenne moyenne moyenne à court terme La stratégie comprend des fonctionnalités de débogage pour surveiller les croisements et les relations EMA anormaux.
Cette stratégie est un système classique de suivi des tendances qui garantit la capture des tendances majeures tout en maintenant un bénéfice et un stop-loss opportuns grâce à l'utilisation de plusieurs EMA. Bien qu'elle ait un certain retard inhérent, des paramètres raisonnables et une gestion des risques peuvent toujours générer des rendements stables sur les marchés en tendance.
/*backtest start: 2024-12-10 00:00:00 end: 2025-01-09 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("EMA Crossover Strategy (Enhanced Debug)", overlay=true) // Inputs for EMA periods shortEMA = input.int(10, title="Short EMA Period") mediumEMA = input.int(50, title="Medium EMA Period") longEMA = input.int(200, title="Long EMA Period") // Calculating EMAs emaShort = ta.ema(close, shortEMA) emaMedium = ta.ema(close, mediumEMA) emaLong = ta.ema(close, longEMA) // Plot EMAs plot(emaShort, color=color.green, title="Short EMA") plot(emaMedium, color=color.blue, title="Medium EMA") plot(emaLong, color=color.red, title="Long EMA") // Conditions for entry and exit longCondition = close > emaLong and ta.crossover(emaShort, emaMedium) and emaMedium > emaLong shortCondition = close < emaLong and ta.crossunder(emaShort, emaMedium) and emaMedium < emaLong closeLongCondition = ta.crossunder(emaShort, emaMedium) closeShortCondition = ta.crossover(emaShort, emaMedium) // Debugging labels for unexpected behavior if (ta.crossover(emaShort, emaLong) and not ta.crossover(emaShort, emaMedium)) label.new(bar_index, high, "Short > Long", style=label.style_circle, color=color.red, textcolor=color.white) // Debugging EMA relationships if (emaMedium <= emaLong) label.new(bar_index, high, "Medium < Long", style=label.style_cross, color=color.orange, textcolor=color.white) // Entry logic if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Exit logic if (closeLongCondition) strategy.close("Long") if (closeShortCondition) strategy.close("Short") // Display labels for signals plotshape(series=longCondition, style=shape.labelup, color=color.green, location=location.belowbar, title="Buy Signal") plotshape(series=shortCondition, style=shape.labeldown, color=color.red, location=location.abovebar, title="Sell Signal")