Это стратегия, основанная на многочисленных перекрестных экспоненциальных скользящих средних (EMA). Стратегия использует перекрестные отношения между 10-периодным краткосрочным EMA, 50-периодным среднесрочным EMA и 200-периодным долгосрочным EMA для улавливания рыночных тенденций и выполнения длинных / коротких сделок при выполнении условий. Основная идея заключается в фильтрации рыночного шума через несколько временных рамок скользящих средних, определении основного направления тренда и получения прибыли во время продолжения тренда.
В качестве механизма генерации сигнала стратегия использует тройную кроссоверную систему EMA. 1. использует 200-периодный EMA в качестве основного индикатора тренда, занимая только длинные позиции выше и короткие позиции ниже 2. Открывает длинные позиции, когда краткосрочная EMA (10 периодов) пересекает среднесрочную EMA (50 периодов) и цена выше долгосрочной EMA Открывает короткие позиции, когда краткосрочная EMA пересекается ниже среднесрочной EMA, а цена ниже долгосрочной EMA. 4. Закрывает длинные позиции, когда краткосрочная EMA пересекает среднесрочную EMA 5. Закрывает короткие позиции, когда краткосрочная EMA пересекает среднесрочную EMA Стратегия включает в себя функции отладки для мониторинга аномальных перекресток и отношений EMA.
Эта стратегия является классической системой, обеспечивающей улавливание основных трендов при сохранении своевременной прибыли и стоп-лосса с использованием нескольких EMA. Хотя она имеет некоторое внутреннее отставание, разумные параметры настройки и управление рисками все еще могут генерировать стабильную отдачу на трендовых рынках. Стратегия имеет значительный потенциал оптимизации за счет внедрения дополнительных технических индикаторов и уточненных правил торговли.
/*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")