Торговая стратегия, основанная на зонах спроса и предложения и скользящем стопе EMA


Дата создания: 2024-01-18 16:41:16 Последнее изменение: 2024-01-18 16:41:16
Копировать: 0 Количество просмотров: 787
1
Подписаться
1617
Подписчики

Торговая стратегия, основанная на зонах спроса и предложения и скользящем стопе EMA

Обзор

Стратегия использует зоны спроса и предложения, скользящие средние показатели (EMA) и средний реальный диапазон колебаний (ATR) для определения торговых сигналов. Пользователь может настроить параметры EMA и визуализировать сигналы покупки и продажи. Стратегия маркирует зоны спроса, такие как более высокие более высокие (HH), более низкие более низкие (LL), более низкие более высокие (LH) и более высокие более низкие (HL).

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

Расчет показателя

EMA - это скользящая средняя:

  • EMA рассчитывается исходя из закрытия цены за определенный период (запасной 200).
  • Формула EMA:(EMA=(Pricet \times \alpha)+(EMA{t-1}×(1−\alpha)))Из них:(\alpha=\frac{2}{length+1})。

Средняя реальная волатильность ATR:

  • ATR - показатель, измеряющий степень волатильности рынка, рассчитанный на основе реального диапазона колебаний цен.
  • Реальный диапазон колебаний должен быть наибольшим из следующих трех:
    • Текущая максимальная цена минус текущая минимальная цена
    • Нынешняя максимальная цена минус абсолютная стоимость последней закрытой цены
    • Текущая минимальная цена минус абсолютная стоимость предыдущей закрывающей цены
  • Типичный цикл вычислений ATR составляет 14.

Эти расчеты используются для определения EMA-тенденций и установки ATR-мобильных стоп-лостов на основе рыночных колебаний. Эта стратегия предназначена для предоставления сигналов покупки и продажи на основе взаимосвязи цены закрытия, EMA и ATR.

Региональные суждения о спросе и предложении

В стратегии используются такие термины, как HH (выше - выше), LL (ниже - ниже), HL (выше - ниже) и LH (ниже - выше) для выявления различных моделей поведения цен, которые часто используются для анализа тенденций:

  1. Выше, выше…В то же время, по мнению экспертов, существуют и другие причины, по которым цены на нефть в настоящее время выше предыдущих максимумов.

  2. Ниже, ниже (LL)Наконец, мы видим, что цена на нефть в настоящее время находится на более низком уровне, чем предыдущие минимумы, что указывает на потенциальную тенденцию к снижению.

  3. Выше, ниже (HL)Наконец, на фоне того, что цены на бензин в Китае выросли в течение нескольких недель, цены на бензин в Китае выросли в течение нескольких недель.

  4. Ниже, вышеНаконец-то, цены начали снижаться, и это говорит о том, что потенциальная тенденция к снижению продолжается.

Использование этих моделей в сочетании с другими техническими показателями позволяет определить потенциальное изменение или продолжение тренда. Стратегия использует эти модели для определения времени входа или выхода.

Вход и остановка exit

Сигнал входаТретья K-линия - сигнал покупки/продажи при закрытии цены выше/ниже предыдущего максимума/минимума.

Стойкость: с определенным кратным числом ATR (по умолчанию 2x) в качестве отступающей остановки.

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

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

Риск и оптимизация

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

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

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

Исходный код стратегии
/*backtest
start: 2023-12-18 00:00:00
end: 2024-01-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supply and Demand Zones with EMA and Trailing Stop", shorttitle="SD Zones", overlay=true)

showBuySignals = input(true, title="Show Buy Signals", group="Signals")
showSellSignals = input(true, title="Show Sell Signals", group="Signals")
showHLZone = input(true, title="Show HL Zone", group="Zones")
showLHZone = input(true, title="Show LH Zone", group="Zones")
showHHZone = input(true, title="Show HH Zone", group="Zones")
showLLZone = input(true, title="Show LL Zone", group="Zones")

emaLength = input(200, title="EMA Length", group="EMA Settings")
atrLength = input(14, title="ATR Length", group="Trailing Stop")
atrMultiplier = input(2, title="ATR Multiplier", group="Trailing Stop")

// Function to identify supply and demand zones
getZones(src, len, mult) =>
    base = request.security(syminfo.tickerid, "D", close)
    upper = request.security(syminfo.tickerid, "D", high)
    lower = request.security(syminfo.tickerid, "D", low)
    multiplier = request.security(syminfo.tickerid, "D", mult)
    zonetype = base + multiplier * len
    zone = src >= zonetype
    [zone, upper, lower]

// Identify supply and demand zones
[supplyZone, _, _] = getZones(close, high[1] - low[1], 1)
[demandZone, _, _] = getZones(close, high[1] - low[1], -1)

// Plot supply and demand zones
bgcolor(supplyZone ? color.new(color.red, 80) : na)
bgcolor(demandZone ? color.new(color.green, 80) : na)

// EMA with Linear Weighted method
ema = ta.ema(close, emaLength)

// Color code EMA based on its relation to candles
emaColor = close > ema ? color.new(color.green, 0) : close < ema ? color.new(color.red, 0) : color.new(color.yellow, 0)

// Plot EMA
plot(ema, color=emaColor, title="EMA")

// Entry Signal Conditions after the third candle
longCondition = ta.crossover(close, high[1]) and bar_index >= 2
shortCondition = ta.crossunder(close, low[1]) and bar_index >= 2

// Trailing Stop using ATR
atrValue = ta.atr(atrLength)
trailStop = close - atrMultiplier * atrValue

// Strategy Entry and Exit
if (longCondition)
    strategy.entry("Buy", strategy.long)
    strategy.exit("TrailStop", from_entry="Buy", loss=trailStop)

if (shortCondition)
    strategy.entry("Sell", strategy.short)
    strategy.exit("TrailStop", from_entry="Sell", loss=trailStop)

// Plot Entry Signals
plotshape(series=showBuySignals ? longCondition : na, title="Buy Signal", color=color.new(color.green, 0), style=shape.triangleup, location=location.belowbar)
plotshape(series=showSellSignals ? shortCondition : na, title="Sell Signal", color=color.new(color.red, 0), style=shape.triangledown, location=location.abovebar)

// Plot Trailing Stop
plot(trailStop, color=color.new(color.red, 0), title="Trailing Stop")

// Plot HH, LL, LH, and HL zones
plotshape(series=showHHZone and ta.highest(high, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HH Zone", color=color.new(color.blue, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showLLZone and ta.lowest(low, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LL Zone", color=color.new(color.blue, 80), style=shape.triangledown, location=location.belowbar)
plotshape(series=showLHZone and ta.highest(high, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LH Zone", color=color.new(color.orange, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showHLZone and ta.lowest(low, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HL Zone", color=color.new(color.orange, 80), style=shape.triangledown, location=location.belowbar)