
Это стратегия следования за трендом, основанная на множественных пересечениях экспоненциальных скользящих средних (EMA). Эта стратегия использует перекрестную взаимосвязь 10-периодной краткосрочной EMA, 50-периодной среднесрочной EMA и 200-периодной долгосрочной EMA для отслеживания рыночных тенденций и входа в длинные и короткие сделки при выполнении условий. Основная идея стратегии заключается в фильтрации рыночного шума с помощью скользящих средних нескольких таймфреймов, определении основного направления тренда и получении прибыли при продолжении тренда.
Стратегия использует систему пересечения тройных EMA в качестве механизма генерации торговых сигналов. Конкретно:
Эта стратегия представляет собой классическую систему отслеживания тренда. Благодаря скоординированному использованию нескольких EMA она не только обеспечивает понимание основного тренда, но и позволяет своевременно получать прибыль и убытки stop-loss. Несмотря на определенное отставание, при разумной настройке параметров и управлении рисками на трендовом рынке все еще можно получать стабильную прибыль. Существует много возможностей для оптимизации стратегии, а эффективность можно повысить за счет внедрения других технических индикаторов и улучшения правил торговли.
/*backtest
start: 2024-12-10 00:00:00
end: 2025-01-09 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=5
strategy("EMA Crossover Strategy (Enhanced Debug)", overlay=true)
// Inputs for EMA periods
shortEMA = input.int(10, title="Short EMA Period")
mediumEMA = input.int(50, title="Medium EMA Period")
longEMA = input.int(200, title="Long EMA Period")
// Calculating EMAs
emaShort = ta.ema(close, shortEMA)
emaMedium = ta.ema(close, mediumEMA)
emaLong = ta.ema(close, longEMA)
// Plot EMAs
plot(emaShort, color=color.green, title="Short EMA")
plot(emaMedium, color=color.blue, title="Medium EMA")
plot(emaLong, color=color.red, title="Long EMA")
// Conditions for entry and exit
longCondition = close > emaLong and ta.crossover(emaShort, emaMedium) and emaMedium > emaLong
shortCondition = close < emaLong and ta.crossunder(emaShort, emaMedium) and emaMedium < emaLong
closeLongCondition = ta.crossunder(emaShort, emaMedium)
closeShortCondition = ta.crossover(emaShort, emaMedium)
// Debugging labels for unexpected behavior
if (ta.crossover(emaShort, emaLong) and not ta.crossover(emaShort, emaMedium))
label.new(bar_index, high, "Short > Long", style=label.style_circle, color=color.red, textcolor=color.white)
// Debugging EMA relationships
if (emaMedium <= emaLong)
label.new(bar_index, high, "Medium < Long", style=label.style_cross, color=color.orange, textcolor=color.white)
// Entry logic
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Exit logic
if (closeLongCondition)
strategy.close("Long")
if (closeShortCondition)
strategy.close("Short")
// Display labels for signals
plotshape(series=longCondition, style=shape.labelup, color=color.green, location=location.belowbar, title="Buy Signal")
plotshape(series=shortCondition, style=shape.labeldown, color=color.red, location=location.abovebar, title="Sell Signal")