Двунаправленная торговая количественная стратегия, основанная на модели поглощения свечей K-line

OHLC VOL ATR
Дата создания: 2024-12-12 11:27:27 Последнее изменение: 2024-12-12 11:27:27
Копировать: 0 Количество просмотров: 364
1
Подписаться
1617
Подписчики

Двунаправленная торговая количественная стратегия, основанная на модели поглощения свечей K-line

Обзор

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

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

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

  1. Направление соседних K-линий противоположное: для определения направления K-линий, сравнивая цены открытия и закрытия, требуется, чтобы две соседних K-линии демонстрировали противоположный тренд.
  2. Анализ относительности колебаний: вычисляется и сравнивается колебание цены двух K-линий (абсолютное значение разницы между ценой закрытия и ценой открытия), требуя, чтобы последняя линия K колебалась больше, чем предыдущая.
  3. Характеристика объема транзакций: требуется, чтобы объем транзакций на первой линии K был больше, чем на второй линии K, а объем транзакций на второй линии K был меньше, чем на предыдущую.

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

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

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

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

  1. Риск ложного прорыва: в условиях волатильности рынка могут возникнуть ложные формы поглощения, приводящие к ошибочным сигналам.
  2. Влияние скольжения: при резких колебаниях на рынке может возникнуть большое скольжение, которое может повлиять на эффективность реальной торговли.
  3. Управление рисками: торговля на полную позицию может привести к увеличению риска.
  4. Задержка сигнала: сигнал подтверждается только после закрытия K-линии, возможно, будет пропущен оптимальный момент входа.

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

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

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

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

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

//@version=5
strategy("Candle Absorption Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Условия индикатора
// 1. Две соседних свечи должны быть разнонаправленными
condition1 = (close[1] > open[1] and close < open) or (close[1] < open[1] and close > open)

// 2. Дельта по цене открытия/закрытия у первой свечи меньше, чем у следующей
delta1 = math.abs(close[1] - open[1])
delta2 = math.abs(close - open)
condition2 = delta1 < delta2

// 3. Объем первой свечи должен быть больше, а последней меньше
condition3 = volume[1] > volume and volume < volume[2]

// Проверяем выполнение всех условий
all_conditions = condition1 and condition2 and condition3

// Определяем направление для входа
is_bullish = close > open  // Зеленая свеча больше (бычье поглощение)
is_bearish = close < open  // Красная свеча больше (медвежье поглощение)

// Переменные для отслеживания состояния позиции
var float entryPrice = na
var bool isLong = false
var bool isShort = false

// Логика генерации сигналов
buySignal = all_conditions and is_bullish and not isLong
sellSignal = all_conditions and is_bearish and not isShort

// Обработка лонгового входа
if (buySignal)
    isLong := true
    isShort := false
    entryPrice := close
    strategy.entry("Long", strategy.long)

// Обработка шортового входа
if (sellSignal)
    isLong := false
    isShort := true
    entryPrice := close
    strategy.entry("Short", strategy.short)

// Визуализация точек поглощения
// if all_conditions
//     label.new(bar_index, high, "✔", color=is_bullish ? color.green : color.red, textcolor=color.white, style=label.style_circle, size=size.small)

// Логика сброса состояния при закрытии позиции
if (strategy.position_size == 0)
    isLong := false
    isShort := false
    entryPrice := na

// Дополнительно: можно добавить стоп-лосс и тейк-профит (пример ниже)
// strategy.exit("Exit Long", from_entry="Long", stop=low - atr(14), limit=high + atr(14))
// strategy.exit("Exit Short", from_entry="Short", stop=high + atr(14), limit=low - atr(14))