
La stratégie est un système de suivi des tendances basé sur des croisements de moyennes mobiles bi-indicateurs (EMA) combinés à des sorties par étapes pour optimiser les gains de négociation. La stratégie utilise des EMA de 9 cycles et de 21 cycles comme ligne rapide et lente, pour identifier les changements de tendances du marché à travers leurs croisements, tout en utilisant un programme de sortie de position en deux phases pour équilibrer les risques et les gains.
La logique centrale de la stratégie est basée sur les signaux de croisement des EMA rapides ((9 cycles) et des EMA lents ((21 cycles)). Lorsqu’une ligne rapide traverse une ligne lente, le système ouvre une position à plusieurs têtes à 0.02; lorsqu’une ligne rapide traverse une ligne lente, le système ouvre une position à vide à 0.02. Pendant la tenue de position, la stratégie utilise un mécanisme d’exit en deux phases: la première phase consiste à niveler la moitié de la position lorsque le profit atteint 200 points ((0.01)); la deuxième phase consiste à niveler la position restante lorsque le signal de croisement inverse se produit.
Il s’agit d’un système de négociation complet qui combine la stratégie classique de croisement linéaire avec la gestion de position moderne. La stratégie améliore la rentabilité de la stratégie de croisement linéaire traditionnelle grâce à un mécanisme d’exode par étapes, mais nécessite toujours des ajustements appropriés par le trader en fonction de l’environnement du marché et de sa propre tolérance au risque.
/*backtest
start: 2024-02-25 00:00:00
end: 2025-02-22 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("EMA Crossover with Partial Exit", overlay=true, default_qty_type=strategy.cash, default_qty_value=50)
// Define lot sizes
lotSize = 0.02 // Initial trade size
partialLot = 0.01 // Half quantity to close at 20 pips profit
profitTarget = 200 // 20 pips = 200 points (for Forex, adjust accordingly)
// Define EMA lengths
fastLength = 9
slowLength = 21
// Compute EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
// Define crossover conditions
longEntry = ta.crossover(fastEMA, slowEMA) // Buy when 9 EMA crosses above 21 EMA
shortEntry = ta.crossunder(fastEMA, slowEMA) // Sell when 9 EMA crosses below 21 EMA
// Track trade state
var float entryPrice = na
var bool inTrade = false
var bool isLong = false
// Entry Logic (Enter with 0.02 lot size)
if (longEntry and not inTrade)
strategy.entry("Long", strategy.long, qty=lotSize)
entryPrice := close
inTrade := true
isLong := true
if (shortEntry and not inTrade)
strategy.entry("Short", strategy.short, qty=lotSize)
entryPrice := close
inTrade := true
isLong := false
// Partial Exit Logic (Close 0.01 lot after 20 pips profit)
if (isLong and inTrade and close >= entryPrice + profitTarget * syminfo.mintick)
strategy.close("Long", qty=partialLot)
if (not isLong and inTrade and close <= entryPrice - profitTarget * syminfo.mintick)
strategy.close("Short", qty=partialLot)
// Full Exit (Close remaining 0.01 lot at the next major crossover)
if (isLong and shortEntry)
strategy.close("Long") // Close remaining position
inTrade := false
if (not isLong and longEntry)
strategy.close("Short") // Close remaining position
inTrade := false
// Plot EMAs
plot(fastEMA, color=color.blue, title="9 EMA")
plot(slowEMA, color=color.red, title="21 EMA")
// Mark Buy/Sell Signals
plotshape(series=longEntry, location=location.belowbar, color=color.green, style=shape.labelup, title="BUY Signal")
plotshape(series=shortEntry, location=location.abovebar, color=color.red, style=shape.labeldown, title="SELL Signal")