Стратегия институционального трейдера, основанная на ценовых действиях

Автор:Чао Чжан, Дата: 2024-02-23 15:04:39
Тэги:

img

Обзор

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

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

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

Справедливая стоимость определяется как "разумная" цена инструмента, основанная на таких показателях, как скользящие средние.

Ликвидность также является ключевым фактором, поскольку институциональные трейдеры, как правило, выполняют сделки в районах с высокой ликвидностью.

Стратегия определяет справедливую стоимость путем расчета простой скользящей средней. Затем она определяет потенциальные блоки ордеров длиной 20 периодов. Если разница между ценой закрытия и справедливой стоимостью ниже 38,2% от общей высоты диапазона блока ордеров, определяется блок ордеров.

Бычьи блоки ордеров считаются сигналами покупки, медвежие - сигналами продажи.

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

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

Другие преимущества включают:

  • Улучшение исполнения с использованием ликвидности
  • Основываясь на понятиях, которые легко визуализировать, например, поток заказов.
  • Легко визуализировать блоки заказов на диаграммах
  • Гибкость регулирования параметров, таких как длина блока

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

Стратегия также имеет некоторые потенциальные риски, такие как:

  • Опираться на суждения о прошлом ценовом поведении
  • Может не функционировать должным образом на рынках без потока заказов
  • Это может вызвать ложные сигналы.
  • Может пропустить краткосрочные тенденции

Для смягчения этих рисков рекомендуется рассмотреть:

  • Сочетание с другими показателями для фильтрации ложных сигналов
  • Настройка параметров, таких как длина блока
  • Фильтрация сигналов, выпущенных для торговли

Руководство по оптимизации

Вот некоторые потенциальные оптимизации для стратегии:

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

Резюме

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


/*backtest
start: 2024-01-23 00:00:00
end: 2024-02-22 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ICT Strategy", overlay=true)

// Input variables
length = input.int(20, minval=1, title="Order Block Length")
fairValuePeriod = input.int(60, minval=1, title="Fair Value Period")

// Calculate fair value
fairValue = ta.sma(close, fairValuePeriod)

// Determine order blocks
isOrderBlock(high, low) =>
    highestHigh = ta.highest(high, length)
    lowestLow = ta.lowest(low, length)
    absHighLowDiff = highestHigh - lowestLow
    absCloseFairValueDiff = (close - fairValue)
    (absCloseFairValueDiff <= 0.382 * absHighLowDiff)

isBuyBlock = isOrderBlock(high, low) and close > fairValue
isSellBlock = isOrderBlock(high, low) and close < fairValue

// Plot fair value and order blocks
plot(fairValue, color=color.blue, title="Fair Value")
plotshape(isBuyBlock, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(isSellBlock, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

// Strategy logic
if (isBuyBlock)
    strategy.entry("Buy", strategy.long)
    
if (isSellBlock)
    strategy.entry("Sell", strategy.short)


Больше