Стратегия торговли на основе рыночной структуры

CHoCH BOS IDM ATR RSI SL TP
Дата создания: 2025-03-28 17:38:30 Последнее изменение: 2025-03-28 17:38:45
Копировать: 7 Количество просмотров: 387
2
Подписаться
319
Подписчики

Стратегия торговли на основе рыночной структуры Стратегия торговли на основе рыночной структуры

Обзор

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

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

Основные принципы стратегии основаны на четырех ключевых показателях:

  1. Изменение характера (Change of Character, CHoCH): определение потенциальных изменений в направлении рынка путем идентификации поворотных точек ценовых тенденций.
  2. Брейк структуры (Break of Structure, BOS): подтверждение динамики тренда и направленного прорыва.
  3. Inducements, IDM: ловушка ликвидности и движение капитала на рынке.
  4. Сканирование (Sweeps): выявление фальшивых прорывов и использование возможностей для ликвидности.

Стратегия комплексно применяет технические аналитические показатели, включая средний реальный диапазон колебаний (ATR), относительно сильный индекс (RSI) и объем сделок, чтобы создать многомерную систему принятия решений о сделках.

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

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

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

  1. Риск ложного прорыва: структурные индикаторы рынка могут давать вводящие в заблуждение сигналы
  2. Чувствительность параметров: параметры политики имеют существенное влияние на производительность.
  3. Количество сделок и ликвидность риска: может быть плохо на рынке с низкой ликвидностью.
  4. Контроль за отступлением: в условиях продолжающегося тренда рынок может столкнуться с большим отступлением.

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

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

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

Стратегия торговли с рыночной структурой является передовым количественным методом торговли, который предоставляет трейдерам мощную рамку для принятия решений о торговле посредством систематизированного анализа структуры рынка. Благодаря постоянной оптимизации и управлению рисками эта стратегия имеет потенциал для стабильной торговли в различных рыночных условиях.

Исходный код стратегии
/*backtest
start: 2024-03-28 00:00:00
end: 2025-03-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Market Structure Swing Trading", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=5)

// === Input Parameters ===
len = input(50, "CHoCH Detection Period")
shortLen = input(3, "IDM Detection Period")
atrMultiplierSL = input(2.0, "ATR Multiplier for Stop Loss")
atrMultiplierTP = input(3.0, "ATR Multiplier for Take Profit")
rsiPeriod = input(14, "RSI Period")
rsiOverbought = input(70, "RSI Overbought Level")
rsiOversold = input(30, "RSI Oversold Level")
volThreshold = input(1.2, "Volume Multiplier Threshold") 

// === ATR Calculation for SL & TP ===
atr = ta.atr(14)
stopLossLong = close - (atr * atrMultiplierSL)
takeProfitLong = close + (atr * atrMultiplierTP)
stopLossShort = close + (atr * atrMultiplierSL)
takeProfitShort = close - (atr * atrMultiplierTP)

// === RSI Filter ===
rsi = ta.rsi(close, rsiPeriod)
longConditionRSI = rsi < rsiOversold
shortConditionRSI = rsi > rsiOverbought

// === Volume Filter ===
volThresholdValue = ta.sma(volume, 20) * volThreshold
highVolume = volume > volThresholdValue

// === Market Structure Functions ===
swings(len) =>
    var int topx = na
    var int btmx = na
    upper = ta.highest(len)
    lower = ta.lowest(len)
    top = high[len] > upper ? high[len] : na
    btm = low[len] < lower ? low[len] : na
    topx := top ? bar_index[len] : topx
    btmx := btm ? bar_index[len] : btmx
    [top, topx, btm, btmx]

[top, topx, btm, btmx] = swings(len)

// === CHoCH Detection ===
var float topy = na
var float btmy = na
var os = 0
var top_crossed = false
var btm_crossed = false

if top
    topy := top
    top_crossed := false
if btm
    btmy := btm
    btm_crossed := false

if close > topy and not top_crossed
    os := 1
    top_crossed := true
if close < btmy and not btm_crossed
    os := 0
    btm_crossed := true

// === Break of Structure (BOS) ===
var float max = na
var float min = na
var int max_x1 = na
var int min_x1 = na

if os != os[1]
    max := high
    min := low
    max_x1 := bar_index
    min_x1 := bar_index

bullishBOS = close > max and os == 1
bearishBOS = close < min and os == 0

// === Trade Conditions with Filters ===
longEntry = bullishBOS and longConditionRSI and highVolume
shortEntry = bearishBOS and shortConditionRSI and highVolume

// === Execute Trades ===
if longEntry
    strategy.entry("Long", strategy.long)
    strategy.exit("Long TP/SL", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)

if shortEntry
    strategy.entry("Short", strategy.short)
    strategy.exit("Short TP/SL", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)

// === Plotting Market Structure ===
plotshape(series=longEntry, location=location.belowbar, color=color.green, style=shape.labelup, title="BUY")
plotshape(series=shortEntry, location=location.abovebar, color=color.red, style=shape.labeldown, title="SELL")
plot(topy, color=color.blue, title="CHoCH High")
plot(btmy, color=color.orange, title="CHoCH Low")