
Эта стратегия является торговой системой, основанной на перекрестных сигналах многоиндексальных скользящих средних (EMA), в сочетании с динамическими стоп-механизмами EMA различных циклов и ATR. Стратегия использует 10 циклов, 39 циклов, 73 циклов EMA в качестве основных сигнальных индикаторов, а также вводит 143 циклов высоких временных циклов EMA в качестве трендовых фильтров, и использует динамические показатели ATR для установки стоп-убытков и целей получения прибыли.
Центральная логика стратегии основана на перекрестных сигналах и подтверждении тренда множественных ЭМА. Система генерирует многосигналы, когда краткосрочные ЭМА (10 циклов) пересекают средние ЭМА (39 циклов) вверх, а цена находится выше долгосрочных ЭМА (73 циклов) и более высоких временных циклов ЭМА (143 циклов). Наоборот, когда краткосрочные ЭМА пересекают средние ЭМА вниз, а цена находится ниже долгосрочных ЭМА и более высоких временных ЭМА, система генерирует пустые сигналы.
Эта стратегия использует многократное перекрестное пересечение ЭМА в сочетании с динамическим остановкой ATR, чтобы создать торговую систему, включающую отслеживание тенденций и управление рисками. Основные преимущества стратегии заключаются в механизме подтверждения и динамическом управлении позициями в течение нескольких временных периодов, но также необходимо обращать внимание на риски, связанные с горизонтальными рынками и отсталостью.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Enhanced EMA Crossover Strategy", overlay=true)
// Define the EMA lengths
ema_short_length = 10
ema_long_length = 39
ema_filter_length = 73
ema_higher_tf_length = 143
// Calculate the EMAs
ema_short = ta.ema(close, ema_short_length)
ema_long = ta.ema(close, ema_long_length)
ema_filter = ta.ema(close, ema_filter_length)
ema_higher_tf = request.security(syminfo.tickerid, "D", ta.ema(close, ema_higher_tf_length))
// Calculate ATR for volatility-based stop loss and take profit
atr_length = 14
atr = ta.atr(atr_length)
// Plot the EMAs
plot(ema_short, title="EMA 10", color=color.blue)
plot(ema_long, title="EMA 35", color=color.red)
plot(ema_filter, title="EMA 75", color=color.orange)
plot(ema_higher_tf, title="EMA Higher TF", color=color.purple)
// EMA crossover conditions with EMA 75 and higher timeframe EMA filter
longCondition = ta.crossover(ema_short, ema_long) and close > ema_filter and close > ema_higher_tf
shortCondition = ta.crossunder(ema_short, ema_long) and close < ema_filter and close < ema_higher_tf
// Execute long trade with dynamic stop loss and take profit
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Long", limit=close + 2 * atr, stop=close - 1 * atr)
// Execute short trade with dynamic stop loss and take profit
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Short", limit=close - 2 * atr, stop=close + 1 * atr)
// Plot signals on the chart
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")