
La stratégie est un système de trading de suivi de tendance basé sur les moyennes mobiles à 33 cycles de l’indice ((EMA)). Elle identifie les changements de tendance du marché par la relation croisée du prix avec l’EMA et établit des positions de stop-loss en combinaison avec des hauts et des bas de la volatilité, permettant ainsi un suivi dynamique des tendances et une maîtrise des risques.
La logique centrale de la stratégie consiste à déterminer la direction de la tendance en observant la relation croisée du prix avec l’EMA de 33 cycles. Lorsque le prix de clôture franchit une EMA ascendante et se stabilise, un signal multiple est déclenché; lorsque le prix de clôture franchit une EMA descendante et se stabilise, un signal de rupture est déclenché.
Il s’agit d’une stratégie de suivi de tendance structurée et logiquement claire. Elle capture les tendances par l’intersection des EMA, gère les risques avec des hauts et des bas de la volatilité et a une bonne utilité. Bien qu’il existe certaines limitations inhérentes, la stabilité et la rentabilité de la stratégie peuvent être encore améliorées par l’orientation optimisée proposée.
/*backtest
start: 2024-02-22 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © GlenMabasa
//@version=6
strategy("33 EMA Crossover Strategy", overlay=true)
// Input for the EMA length
ema_length = input.int(33, title="EMA Length")
// Calculate the 33-day Exponential Moving Average
ema_33 = ta.ema(close, ema_length)
// Plot the 33 EMA
plot(ema_33, color=color.blue, title="33 EMA", linewidth=2)
// Buy condition: Price crosses and closes above the 33 EMA
buy_condition = ta.crossover(close, ema_33) and close > ema_33
// Sell condition: Price crosses or closes below the 33 EMA
sell_condition = ta.crossunder(close, ema_33) or close < ema_33
// Swing high and swing low calculations
swing_high_length = input.int(14, title="Swing High Lookback")
swing_low_length = input.int(14, title="Swing Low Lookback")
swing_high = ta.highest(high, swing_high_length) // Previous swing high
swing_low = ta.lowest(low, swing_low_length) // Previous swing low
// Profit target and stop loss for buys
buy_profit_target = swing_high
buy_stop_loss = swing_low
// Profit target and stop loss for sells
sell_profit_target = swing_low
sell_stop_loss = swing_high
// Plot buy and sell signals
plotshape(series=buy_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sell_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Strategy logic for backtesting
if (buy_condition)
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Buy", limit=buy_profit_target, stop=buy_stop_loss)
if (sell_condition)
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Sell", limit=sell_profit_target, stop=sell_stop_loss)