Стратегия торговли с изменением импульса спроса и предложения

Автор:Чао Чжан, Дата: 2024-01-22 17:34:05
Тэги:

img

Обзор

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

Логика стратегии

1. Определение спроса и предложения

Различить соотношение спроса и предложения на основе высокого и низкого диапазона Клайна. Красные зоны указывают на то, что предложение превышает зоны спроса. Зеленые зоны указывают на то, что спрос превышает зоны спроса.

2. Оценка тенденции EMA

Нарисуйте диаграмму 200-й период EMA и определите восходящий и нисходящий тренд, сравнив цену с EMA. Цена выше EMA считается восходящим трендом, а цена ниже EMA - нисходящим.

3. Означение длинной и короткой зоны

Определить зоны перехода на основе последних двух высоких и низких точек свечи:

  • HH Zone (Higher High Zone) - 2 последовательных максимума свечи делают более высокий максимум
  • LL Zone (Lower Low Zone) - 2 последовательных минимума свечи делают минимум минимума
  • LH Zone (Lower High Zone) - недавнее изменение более высокого уровня в более низкий уровень
  • HL Zone (Higher Low Zone) - недавнее изменение нижнего низкого уровня в более высокий низкий уровень

4. ATR Trailing Stop Loss

Вычислить значение ATR за 14 периодов, которое будет умножено на коэффициент 2, чтобы получить уровень стоп-лосса.

5. Вход и выход стоп-лосса

Мониторинг ценовых отношений с предыдущими высокими/низкими точками свечей. Длинный сигнал запускается, когда цена превышает предыдущий максимум. Короткий сигнал запускается, когда цена превышает предыдущий минимум. Задержка подтверждения входного сигнала до 3-й свечи, чтобы избежать ложных сигналов. Выход со стоп-лосом, когда цена выходит за пределы уровня стоп-лоса ATR.

Анализ преимуществ

  1. Использование нескольких индикаторов для выявления тенденций и ключевых областей реверсии для улучшения уровня прибыльности.
  2. ATR может эффективно ограничивать риск потери по сделке.
  3. Задержка подтверждения сигнала входа минимизирует ложную торговлю.

Анализ рисков

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

Решения рисков:

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

Возможности для расширения

  1. Дополнительные технические показатели, такие как MACD, RSI и т. д., чтобы улучшить сроки.
  2. Проверьте различные комбинации параметров периода и мультипликатора для оптимизации.
  3. Подумайте о добавлении фильтра для повторного прорыва, чтобы избежать сбоев в сигнале.
  4. Использовать машинное обучение и т.д. для динамической оптимизации параметров.

Заключение

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-20 23:59:59
period: 1h
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)


Больше