Cette stratégie est un système de trading de suivi des tendances basé sur des EMA doubles et l'indicateur stochastique. Elle combine des moyennes mobiles pour déterminer les tendances du marché tout en utilisant l'indicateur stochastique pour capturer les signaux croisés dans les zones de surachat/survente, avec des niveaux dynamiques de stop-loss et de take-profit pour la gestion des risques. Cette approche garantit à la fois la fiabilité du signal et une gestion efficace du risque-rendement pour chaque transaction.
La stratégie repose sur plusieurs éléments essentiels:
Les conditions d'achat exigent:
Les conditions de vente sont opposées:
Il s'agit d'un système de stratégie complet combinant le suivi de tendance et le trading de momentum. Grâce à la combinaison du système EMA et de l'indicateur stochastique, il garantit que les transactions s'alignent sur la tendance principale tout en entrant à des niveaux de prix appropriés. En outre, la stratégie comprend des mécanismes complets de gestion des risques, en utilisant des stop-loss dynamiques et des ratios de risque-rendement fixes pour contrôler le risque. Bien qu'il existe certaines limitations inhérentes, les performances globales de la stratégie peuvent être encore améliorées grâce aux optimisations suggérées.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-11 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © quadawosanya //@version=5 //indicator("My script") //@version=5 strategy("EMA-Stochastic Strategy", overlay=true) // EMA settings ema50 = ta.ema(close, 50) ema150 = ta.ema(close, 150) // Stochastic settings kLength = 14 dLength = 3 smoothK = 3 stochK = ta.sma(ta.stoch(close, high, low, kLength), smoothK) stochD = ta.sma(stochK, dLength) // Parameters for Stop Loss and Take Profit var float stopLossLevel = na var float takeProfitLevel = na // Buy condition buySignal = (close > ema50 and close > ema150) and (ema50 > ema150) and (stochK < 30 and ta.crossover(stochK, stochD)) // Sell condition sellSignal = (close < ema50 and close < ema150) and (ema50 < ema150) and (stochK > 70 and ta.crossunder(stochK, stochD)) // Previous low for Stop Loss for Buy lowBeforeBuy = ta.lowest(low, 5) // Previous high for Stop Loss for Sell highBeforeSell = ta.highest(high, 5) // Entry and exit logic if (buySignal) stopLossLevel := lowBeforeBuy risk = close - stopLossLevel takeProfitLevel := close + 2 * risk strategy.entry("Buy", strategy.long) strategy.exit("Take Profit/Stop Loss", "Buy", stop=stopLossLevel, limit=takeProfitLevel) if (sellSignal) stopLossLevel := highBeforeSell risk = stopLossLevel - close takeProfitLevel := close - 2 * risk strategy.entry("Sell", strategy.short) strategy.exit("Take Profit/Stop Loss", "Sell", stop=stopLossLevel, limit=takeProfitLevel) // Plotting EMAs plot(ema50, color=color.blue, title="50 EMA") plot(ema150, color=color.red, title="150 EMA") // Visualize Buy and Sell signals plotshape(series=buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // Visualize Stop Loss and Take Profit levels plot(stopLossLevel, color=color.red, style=plot.style_line, linewidth=2, title="Stop Loss") plot(takeProfitLevel, color=color.green, style=plot.style_line, linewidth=2, title="Take Profit") plot(close)