Стратегия тройного EMA Crossover Breakout использует индикаторы тройной экспоненциальной скользящей средней (EMA) для определения направления тренда рынка и входа в точки прорыва тренда.
Стратегия основывается главным образом на следующих принципах:
Для определения основных, среднесрочных и краткосрочных рыночных тенденций используйте три EMA с различными периодами (200-дневный, 50-дневный, 20-дневный).
Когда краткосрочная EMA (20-дневная) пересекает среднесрочную EMA (50-дневную), генерируется сигнал покупки.
Только тогда, когда цена закрытия второй свечи выше (ниже) цены предыдущей свечи, прорыв считается надежным.
Установите уровень стоп-лосса и принимайте уровень прибыли, чтобы ограничить риски за пределами разумных колебаний цен.
Использование нескольких EMA улучшает точность оценки тренда.
Фильтрация ложных сигналов с помощью моделей свечей позволяет избежать ненужных торговых рисков.
Стоп-потеря и прибыль контролируют потерю одной сделки эффективно.
На различных рынках EMA могут генерировать чрезмерные ложные сигналы и не определять направление рынка.
Система единого показателя имеет ограниченные возможности в сложных рыночных ситуациях.
Он не учитывает затраты на торговлю, которые могут привести к нерентабельности на рынках с высокими комиссионными.
Внедрить другие индикаторы, такие как MACD и KDJ, чтобы сформировать комбинированную систему и улучшить точность суждений.
Оптимизировать параметры путем обратного тестирования для конкретных символов и временных рамок, чтобы сделать стратегию лучше.
Добавьте объем торговли, чтобы избежать фейковых сигналов с низким объемом.
Стратегия трехкратного перехода EMA имеет четкую, понятную логику для определения рыночных тенденций и нахождения времени входа с использованием переходов EMA. Но она также имеет некоторые ограничения при работе со сложными рыночными ситуациями. Рекомендуется комбинировать с другими индикаторами и оптимизировать параметры для адаптации к более разнообразным торговым средам.
/*backtest start: 2022-12-21 00:00:00 end: 2023-12-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("GHG RETRACEMENT MODE 1", overlay=true) entryLevel1 = input(0.5, "ENTRY LEVEL 1") entryLevel2 = input(0.25, "ENTRY LEVEL 2") entryLevel3 = input(0.0, "ENTRY LEVEL 3") stopLevel = input(-0.35, "STOP LEVEL") tpLevel = input(0.88, "TP LEVEL") dontUseEma = input(false, "Don't Use EMA") get_level(level, level100, level0) => level * (level100 - level0) + level0 buySignal = close[2] < open[2] and close[1] > open[1] and close[0] > open[0] and high[0] > open[2] and high[1] < high[2] sellSignal = close[2] > open[2] and close[1] < open[1] and close[0] < open[0] and low[0] < open[2] and low[1] > low[2] if buySignal and (close[0] > ta.ema(close, 200) or dontUseEma) l = label.new(bar_index, na) entryPrice1 = get_level(entryLevel1, high[0], low[2]) entryPrice2 = get_level(entryLevel2, high[0], low[2]) entryPrice3 = get_level(entryLevel3, high[0], low[2]) exitPrice = get_level(tpLevel, high[0], low[2]) stopPrice = get_level(stopLevel, high[0], low[2]) strategy.order("BUY 1", strategy.long, comment="BUY 1", limit=entryPrice1) strategy.exit("exit", "BUY 1", limit=high[0], stop=stopPrice) strategy.order("BUY 2", strategy.long, comment="BUY 2", limit=entryPrice2) strategy.exit("exit", "BUY 2", limit=high[0], stop=stopPrice) label.set_text(l, "Buy => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) ) label.set_color(l, color.green) label.set_yloc(l, yloc.belowbar) label.set_style(l, label.style_label_up) if sellSignal and (close[0] < ta.ema(close, 200) or dontUseEma) a = label.new(bar_index, na) entryPrice1 = get_level(entryLevel1, low[0], high[2]) entryPrice2 = get_level(entryLevel2, low[0], high[2]) entryPrice3 = get_level(entryLevel3, low[0], high[2]) exitPrice = get_level(tpLevel, low[0], high[2]) stopPrice = get_level(stopLevel,low[0], high[2]) strategy.order("SELL 1", strategy.short, comment="SELL 1", limit=entryPrice1) strategy.exit("exit", "SELL 1", limit=low[0], stop=stopPrice) strategy.order("SELL 2", strategy.short, comment="SELL 2", limit=entryPrice2) strategy.exit("exit", "SELL 2", limit=low[0], stop=stopPrice) label.set_text(a,"Sell => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) ) label.set_color(a, color.red) label.set_yloc(a, yloc.abovebar) label.set_style(a, label.style_label_down)