Стратегия торговли с подтверждением двойного тренда, основанная на скользящей средней и внешнем паттерне бара

EMA
Дата создания: 2025-01-17 14:39:19 Последнее изменение: 2025-01-17 14:39:19
Копировать: 0 Количество просмотров: 302
1
Подписаться
1617
Подписчики

Стратегия торговли с подтверждением двойного тренда, основанная на скользящей средней и внешнем паттерне бара

Обзор

Стратегия представляет собой систему следования за трендом, которая сочетает скользящие средние с паттерном «Внешний бар». В качестве основных индикаторов тренда используются 5- и 9-периодные экспоненциальные скользящие средние (EMA) в сочетании с паттерном «Внешний бар» в качестве подтверждения сигнала. Стратегия также включает в себя динамические настройки стоп-лосса и тейк-профита на основе высоты внешнего бара, а также механизм разворота позиции после срабатывания стоп-лосса.

Стратегический принцип

Основная логика стратегии основана на следующих ключевых элементах:

  1. Используйте пересечение 5-периодной и 9-периодной EMA для определения основного направления тренда.
  2. Подтвердите волатильность рынка с помощью паттерна «Внешний бар» (самая высокая цена текущей линии К выше самой высокой цены предыдущей линии К, а самая низкая цена ниже самой низкой цены предыдущей линии К)
  3. Входите в сделку, когда одновременно появляются сигнал пересечения EMA и паттерн «Внешний бар».
  4. Используйте высоту внешнего бара для динамической установки уровней стоп-лосса и тейк-профита. Тейк-профит устанавливается на 50% от высоты внешнего бара, а стоп-лосс устанавливается на 100%
  5. При срабатывании стоп-лосса автоматически устанавливается обратная позиция для фиксации возможных разворотов тренда.

Стратегические преимущества

  1. Механизм двойного подтверждения повышает точность транзакций и позволяет избежать ложных сигналов, которые могут быть вызваны одним индикатором.
  2. Динамические настройки стоп-лосса и тейк-профита лучше адаптируются к волатильности рынка и поддерживают разумное управление рисками в различных рыночных условиях.
  3. Механизм разворота позиции позволяет быстро адаптироваться к изменениям рыночных тенденций и повысить эффективность использования капитала.
  4. Стратегия имеет четкие правила входа и выхода, ее легко реализовать и протестировать на исторических данных.

Стратегический риск

  1. Модели внешнего бара могут появляться реже на рынках с меньшей волатильностью, что влияет на частоту торговли.
  2. На быстро меняющемся рынке позиция стоп-лосса может быть слишком широкой, что увеличивает риск единичной сделки.
  3. Механизм разворота позиции может привести к постоянному стоп-лоссу на нестабильных рынках
  4. Фиксированные параметры EMA могут работать непоследовательно в различных рыночных условиях.

Направление оптимизации стратегии

  1. Индекс волатильности может быть введен для динамической корректировки коэффициентов стоп-лосс и тейк-профит, что позволит сделать управление рисками более гибким.
  2. Рассмотрите возможность добавления фильтра силы тренда, чтобы избежать торговли в условиях слабого тренда.
  3. Оптимизируйте условия срабатывания для разворота позиции и объедините индикаторы волатильности рынка, чтобы решить, следует ли выполнять разворот
  4. Изучите схему оптимизации параметров EMA для разных периодов времени, чтобы улучшить адаптивность системы.

Подвести итог

Это стратегическая система, сочетающая классическую теорию технического анализа с современными концепциями количественной торговли. Скоординированное использование скользящей средней и внешнего бара не только обеспечивает своевременность отслеживания тренда, но и повышает надежность сигналов. Конструкция динамического стоп-лосса, тейк-профита и механизма разворота позиции отражает акцент на управлении рисками и делает стратегию практичной. Хотя еще есть возможности для оптимизации, общая структура уже имеет основные условия для работы в режиме реального времени.

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy(title="Outside Bar EMA Crossover Strategy with EMA Shift", shorttitle="Outside Bar EMA Cross", overlay=true)

// Input for EMA lengths
lenEMA1 = input.int(5, title="EMA 5 Length")
lenEMA2 = input.int(9, title="EMA 9 Length")

// Input for EMA 9 shift
emaShift = input.int(1, title="EMA 9 Shift", minval=0)

// Calculate EMAs
ema1 = ta.ema(close, lenEMA1)
ema2 = ta.ema(close, lenEMA2)

// Apply shift to EMA 9
ema2Shifted = na(ema2[emaShift]) ? na : ema2[emaShift]  // Dịch chuyển EMA 9 bằng cách sử dụng offset

// Plot EMAs
plot(ema1, title="EMA 5", color=color.blue, linewidth=2)
plot(ema2Shifted, title="EMA 9 Shifted", color=color.red, linewidth=2)

// Outside Bar condition
outsideBar() => high > high[1] and low < low[1]

// Cross above EMA 5 and EMA 9 (shifted)
crossAboveEMA = close > ema1 and close > ema2Shifted

// Cross below EMA 5 and EMA 9 (shifted)
crossBelowEMA = close < ema1 and close < ema2Shifted

// Outside Bar cross above EMA 5 and EMA 9 (shifted)
outsideBarCrossAbove = outsideBar() and crossAboveEMA

// Outside Bar cross below EMA 5 and EMA 9 (shifted)
outsideBarCrossBelow = outsideBar() and crossBelowEMA

// Plot shapes for visual signals
plotshape(series=outsideBarCrossAbove, title="Outside Bar Cross Above", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy", textcolor=color.white)
plotshape(series=outsideBarCrossBelow, title="Outside Bar Cross Below", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", textcolor=color.white)

// Calculate Outside Bar height
outsideBarHeight = high - low  // Chiều cao của nến Outside Bar

// Calculate TP and SL levels
tpRatio = 0.5  // TP = 50% chiều cao nến Outside Bar
slRatio = 1.0  // SL = 100% chiều cao nến Outside Bar

tpLevelLong = close + outsideBarHeight * tpRatio  // TP cho lệnh mua
slLevelLong = close - outsideBarHeight * slRatio  // SL cho lệnh mua

tpLevelShort = close - outsideBarHeight * tpRatio  // TP cho lệnh bán
slLevelShort = close + outsideBarHeight * slRatio  // SL cho lệnh bán

// Strategy logic
if (outsideBarCrossAbove)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Buy", stop=slLevelLong, limit=tpLevelLong)  // Thêm TP và SL

if (outsideBarCrossBelow)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Sell", stop=slLevelShort, limit=tpLevelShort)  // Thêm TP và SL

// Logic: Nếu lệnh Buy bị Stop Loss => Vào lệnh Sell
if (strategy.position_size > 0 and close <= slLevelLong)
    strategy.close("Buy")
    strategy.entry("Sell After Buy SL", strategy.short)

// Logic: Nếu lệnh Sell bị Stop Loss => Vào lệnh Buy
if (strategy.position_size < 0 and close >= slLevelShort)
    strategy.close("Sell")
    strategy.entry("Buy After Sell SL", strategy.long)

// Cảnh báo khi label Buy xuất hiện
alertcondition(condition=outsideBarCrossAbove, title="Label Buy Xuất Hiện", message="Label Buy xuất hiện tại giá: {{close}}")

// Cảnh báo khi label Sell xuất hiện
alertcondition(condition=outsideBarCrossBelow, title="Label Sell Xuất Hiện", message="Label Sell xuất hiện tại giá: {{close}}")