
Стратегия является системой отслеживания трендов, основанной на перекрестных двузначных скользящих средних (EMA), в сочетании с механизмом поэтапного выхода для оптимизации торговой прибыли. Стратегия использует 9-циклические и 21-циклические ЭМА в качестве быстрых и медленных линий, чтобы идентифицировать изменения в рыночных тенденциях через их перекрестные, а также использует двухэтапную схему выхода из позиции для балансирования риска и прибыли.
Центральная логика стратегии основана на перекрестных сигналах с быстрой ЭМА ((9 циклов) и медленной ЭМА ((21 циклов)). При прохождении медленной линии на быстрой линии система открывает многоголовую позицию в 0.02; при прохождении медленной линии под быстрой линией система открывает пустую позицию в 0.02; во время удержания позиции стратегия использует двухэтапный механизм выхода: первый этап - устранение половины позиции при достижении 200 пунктов прибыли ((0.01)); второй этап - устранение оставшейся позиции при появлении обратного перекрестного сигнала.
Это полная торговая система, объединяющая классическую стратегию равнолинейного пересечения с современным управлением позициями. Стратегия повышает прибыльность традиционной стратегии равнолинейного пересечения с помощью пошагового механизма выхода, но по-прежнему требует от трейдера соответствующей корректировки в соответствии с конкретной рыночной обстановкой и собственной способностью к риску.
/*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")