Cette stratégie est un système de négociation basé sur plusieurs signaux croisés de moyenne mobile exponentielle (EMA), combinant des EMA de différentes périodes avec un mécanisme de stop-loss dynamique basé sur ATR. La stratégie utilise des EMA de 10, 39 et 73 périodes comme indicateurs de signal primaires, tout en incorporant une EMA de 143 périodes supérieure comme filtre de tendance, et implémente des cibles de stop-loss et de prise de profit dynamiques à l'aide de l'indicateur ATR.
La logique de base est basée sur plusieurs croisements EMA et confirmation de tendance. Un signal long est généré lorsque l'EMA à court terme (10 périodes) franchit au-dessus de l'EMA à moyen terme (39 périodes) et que le prix est au-dessus de l'EMA à long terme (73 périodes) et de l'EMA à plus long terme (143 périodes).
Cette stratégie construit un système de négociation combinant le suivi des tendances et la gestion des risques à travers plusieurs croisements EMA et arrêts dynamiques basés sur ATR. Ses principales forces résident dans les mécanismes de confirmation de plusieurs délais et la gestion dynamique des positions, tout en étant conscient des risques de marché et de retard. La stabilité et la rentabilité de la stratégie peuvent être encore améliorées grâce à la confirmation du volume, au filtrage de la force de la tendance et à d'autres optimisations. Dans l'application pratique, les paramètres doivent être ajustés en fonction des différents environnements du marché et des caractéristiques des instruments de négociation.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-28 00:00:00 period: 2d basePeriod: 2d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Enhanced EMA Crossover Strategy", overlay=true) // Define the EMA lengths ema_short_length = 10 ema_long_length = 39 ema_filter_length = 73 ema_higher_tf_length = 143 // Calculate the EMAs ema_short = ta.ema(close, ema_short_length) ema_long = ta.ema(close, ema_long_length) ema_filter = ta.ema(close, ema_filter_length) ema_higher_tf = request.security(syminfo.tickerid, "D", ta.ema(close, ema_higher_tf_length)) // Calculate ATR for volatility-based stop loss and take profit atr_length = 14 atr = ta.atr(atr_length) // Plot the EMAs plot(ema_short, title="EMA 10", color=color.blue) plot(ema_long, title="EMA 35", color=color.red) plot(ema_filter, title="EMA 75", color=color.orange) plot(ema_higher_tf, title="EMA Higher TF", color=color.purple) // EMA crossover conditions with EMA 75 and higher timeframe EMA filter longCondition = ta.crossover(ema_short, ema_long) and close > ema_filter and close > ema_higher_tf shortCondition = ta.crossunder(ema_short, ema_long) and close < ema_filter and close < ema_higher_tf // Execute long trade with dynamic stop loss and take profit if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Take Profit/Stop Loss", "Long", limit=close + 2 * atr, stop=close - 1 * atr) // Execute short trade with dynamic stop loss and take profit if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Take Profit/Stop Loss", "Short", limit=close - 2 * atr, stop=close + 1 * atr) // Plot signals on the chart plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY") plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")