Внутренняя система торговли по развороту тренда силы цены

IBS EMA 趋势跟踪 反转交易 价格动量 RSI 风险管理 止损策略 多时间周期分析
Дата создания: 2025-03-05 09:55:24 Последнее изменение: 2025-03-05 09:55:24
Копировать: 0 Количество просмотров: 415
2
Подписаться
319
Подписчики

Внутренняя система торговли по развороту тренда силы цены Внутренняя система торговли по развороту тренда силы цены

Обзор

Внутренняя система торговли с обратным трендом по силе цены - это стратегия торговли на уровне дневной линии, основанная на показателе внутренней силы цены (IBS). В основе этой стратегии лежит выявление потенциальных рыночных поворотных точек и суждение о состоянии перекупа и перепродажи рынка путем мониторинга относительной позиции цены закрытия предыдущей линии в пределах ее высокого и низкого уровня.

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

В основе этой стратегии лежит расчет и применение показателя внутренней ценовой силы (IBS).

IBS = (前一日收盘价 - 前一日最低价) / (前一日最高价 - 前一日最低价)

IBS всегда колеблется от 0 до 1:

  • IBS ниже 0.2 обычно интерпретируется как перепродажа, что означает, что рынок может подняться
  • IBS выше 0,9 указывает на состояние перекупа, что означает, что рынок может быть скорректирован

Правила торговли в этой стратегии следующие:

  1. Условия для участия:

    • Условие 1: IBS ниже пользовательско-определенного входного порога ((по умолчанию 0.09)
    • Условие 2: текущая цена находится над N-циклической скользящей средней индекса (EMA) (дифолтный цикл 220)
    • Примечание: Пользователь может отключить условия EMA, установив цикл EMA на 0.
  2. Условия участия:

    • Прямая позиция, когда IBS повышается выше пользовательского определения выходной отметки (по умолчанию 0.985)
    • Или при достижении максимального цикла торговли (по умолчанию 14 дней)

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

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

  1. Рыночная точность: использование показателя IBS позволяет точно зафиксировать состояние перекупа и перепродажи на рынке, обеспечивая объективную математическую основу для входа и выхода, уменьшая отклонения, вызванные субъективным суждением.

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

  3. Гибкое управление позициями: стратегия поддерживает пирамидальное наращивание позиций (до 2 раз) и вводит параметр “минимальный процент от расстояния до нового входа”, реализует более интеллектуальный механизм создания запасов, который может эффективно снизить среднюю стоимость хранения позиций при возврате цены.

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

  5. Оптимизация параметров: параметры по умолчанию оптимизированы для основных рыночных индексов, таких как SPY и QQQ/NDQ, и пользователь может напрямую применить рекомендуемые настройки:

    • Рекомендуемая настройка QQQ: входный порог 0.09, выходный порог 0.985, цикл EMA 220, минимальная дистанция входа 0%, максимальное количество дней держания позиций 14 дней
    • Рекомендуемая настройка SPY: входный порог 0.11, выходный порог 0.995, цикл EMA 200, минимальная дистанция входа 0%, максимальное количество дней, на которые можно держать позицию 12 дней
  6. Всеобъемлющие торговые модели: поддержка режимов торговли только плюсом, только минусом или двусторонней торговли, адаптированные к различным рыночным условиям и стилям торговли.

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

  1. Чувствительность параметров: входные и выходные пороги IBS оказывают большое влияние на эффективность стратегии, неправильная настройка параметров может привести к чрезмерной торговле или упущению важных торговых возможностей. Рекомендуется проведение полной проверки исторических данных и оптимизации параметров для конкретных торговых сортов перед применением на рынке.

  2. Риск шокирующего рынка: в шокирующем рынке, где нет явных тенденций, сигналы IBS могут часто появляться, что приводит к чрезмерной торговле и ненужному увеличению стоимости торгов. Решение заключается в добавлении фильтрующих условий, таких как требование подтверждения нескольких последовательных сигналов IBS или в сочетании с другими показателями (например, ATR) для оценки волатильности рынка.

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

  4. Управление рисками: по умолчанию используйте 50% средств счета для торговли, что может привести к чрезмерному риску при многократном пополнении. Пользователям рекомендуется корректировать размер позиции и параметры пополнения в соответствии с их способностью нести риск.

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

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

  1. Динамические отклонения от отклонений: текущая стратегия использует фиксированные IBS входные и выходные отклонения, и можно рассмотреть возможность изменения этих отклонений в зависимости от динамики волатильности рынка. Например, в периоды высокой волатильности следует повысить входные отклонения и снизить выходные отклонения, чтобы уменьшить ложные сигналы; в периоды низкой волатильности можно использовать более радикальные настройки. Конкретное достижение может быть достигнуто путем привязки отклонений от IBS к ATR (средняя реальная волатильность) или исторической волатильности.

  2. Удостоверение многочасового цикла: введение многочасовой аналитической структуры, требующей одновременного подтверждения краткосрочных и среднесрочных IBS сигналов для совершения сделки. Например, помимо IBS-сигнала на дневной линии, можно также рассчитать IBS-значения на круговой или 4-часовой линии, которые вводятся только в том случае, если несколько временных периодов показывают состояние перекупа или перепродажи, что значительно повышает качество сигнала.

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

  4. Самостоятельная адаптация к состоянию рынка: внедрение механизма идентификации состояния рынка, использование различных параметров параметров в различных рыночных условиях (традиционные и волатильные рынки). Можно идентифицировать состояние рынка с помощью ADX (индекс среднего направления) или других показателей интенсивности тренда, смягчение условий IBS в условиях сильной тенденции, применение более строгих IBS-терминалов в волатильных рынках.

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

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

Внутренняя торговая система с обратным движением по цене является стратегией торговли на уровне дневного фона, которая сочетает в себе внутренний индикатор ценовой силы (IBS) и индексную подвижную среднюю (EMA). Эта стратегия оптимизирует торговые решения, идентифицируя потенциальные рыночные поворотные точки и следуя долгосрочным тенденциям, особенно подходит для торговли акциями и индексами США.

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

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

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

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

//Implementation by AlgoTradeKit
//v.0.5
//The IBS Trading Strategy is a daily bars long-only trading system, based on the concept of Internal Bar Strength (IBS). 
//The strategy aims to identify potential reversals by monitoring how the previous bar’s close positions itself within its high-low range. 
//It is suitable for stock and US indices. The default parameters are optimized for SPY/SPX and NDQ/QQQ
//Setting for QQQ: 0.09, 0.985, 220, 0, 14
//Setting for SPY: 0.11, 0.995, 200, 0, 12

//@version=6
strategy("IBS (Internal Bar Strength) Trading Strategy for SPY and NDQ", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=50, pyramiding = 2, currency = currency.USD, process_orders_on_close=false)

// ***** INPUTS *****
// IBS thresholds
ibsEntryThreshold = input.float(0.09, title="IBS Entry Threshold", step=0.01, tooltip="IBS = (Previous Close - Previous Low) / (Previous High - Previous Low), and IBS value below 0.2 is typically interpreted as an oversold condition, while a value above 0.9 suggests an overbought state.")
ibsExitThreshold  = input.float(0.985, title="IBS Exit Threshold", step=0.01, tooltip="IBS = (Previous Close - Previous Low) / (Previous High - Previous Low), and IBS value below 0.2 is typically interpreted as an oversold condition, while a value above 0.9 suggests an overbought state.")
// EMA period (set to 0 to disable the EMA condition)
emaPeriod = input.int(220, title="EMA Period (0 to disable)", minval=0, maxval=5000, step=1, tooltip="Exponential Moving Average Filter Period (0 to disable)")
// Minimum percentage drop required for a new entry (for dollar-cost averaging)
minEntryPct = input.float(0, title="Minimum Distance for New Entry (%)", step=0.05, minval=0.0, maxval=100, tooltip = "Distance in Price from Last Opened Position, in Percentage Terms (%)")
maxTradeDuration = input.int(title="Maximum Trade Duration (days)", defval=14, minval=1, step=1, maxval=1000, tooltip = "Exit at close if maximum trade duration is reached.")


// Persistent variable to record the bar index when the trade is entered.
var int entryBarIndex = na

// ***** EMA CALCULATION *****
// Calculate the EMA globally if the period is greater than 0, otherwise leave as na.
emaValue = emaPeriod > 0 ? ta.ema(close, emaPeriod) : na

// ***** IBS CALCULATION *****
// Calculate IBS using the previous bar’s values.
// Guard against division by zero: if previous high equals previous low, default IBS to 0.5.
prevHigh  = high[1]
prevLow   = low[1]
prevClose = close[1]
ibs = (prevHigh != prevLow) ? (prevClose - prevLow) / (prevHigh - prevLow) : 0.5

// ***** ENTRY AND EXIT CONDITIONS *****
// Define the EMA condition: if emaPeriod is 0, bypass the EMA check.
emaConditionLong = emaPeriod == 0 or (close > emaValue)
emaConditionShort = emaPeriod == 0 or (close < emaValue)

// Entry: IBS is below the entry threshold and the EMA condition holds.
enterLong = (ibs < ibsEntryThreshold) and emaConditionLong 
enterShort = (ibs > ibsExitThreshold) and emaConditionShort 

// Exit: IBS is above the exit threshold.
exitLong = ibs > ibsExitThreshold
exitShort = ibs < ibsEntryThreshold

// ***** DOLLAR-COST AVERAGING CONDITION IN PERCENTAGE *****
// Track the last entry price. Reset when there is no open position.
var float lastEntryPrice = na
if strategy.position_size == 0
    lastEntryPrice := na

// If there is no previous entry, the condition is met.
// Otherwise, allow a new entry only if the current price is lower than the last entry price
// by at least the predefined percentage (converted to a fraction).
dcaCondition = na(lastEntryPrice) or ((close < lastEntryPrice) and (((lastEntryPrice - close) / lastEntryPrice) >= (minEntryPct / 100)))
dcaConditionShort = na(lastEntryPrice) or ((close > lastEntryPrice) and (((close - lastEntryPrice) / lastEntryPrice) >= (minEntryPct / 100)))


// ***** STRATEGY ORDERS *****
// Enter a long position only if both the entry condition and the DCA condition are met.
if enterLong and dcaCondition 
    strategy.entry("Long", strategy.long)
    lastEntryPrice := close  // update the last entry price
    entryBarIndex := bar_index

if enterShort and dcaConditionShort 
    strategy.entry("Short", strategy.short)
    lastEntryPrice := close  // update the last entry price
    entryBarIndex := bar_index

// Compute trade duration in days using the absolute difference
tradeDuration = not na(entryBarIndex) ? math.abs(bar_index - entryBarIndex) : 0

// Exit the long position when the exit condition is met or if the trade duration reaches maxTradeDuration days.
if exitLong or (tradeDuration >= maxTradeDuration)
    strategy.close("Long")

// Exit the long position when the exit condition is met or if the trade duration reaches maxTradeDuration days.
if exitShort or (tradeDuration >= maxTradeDuration)
    strategy.close("Short")

// ***** PLOTTING *****
// Plot IBS for reference, along with horizontal lines for the entry and exit thresholds.
//plot(ibs, title="IBS", color=color.blue, linewidth=2)
//hline(ibsEntryThreshold, title="IBS Entry Threshold", color=color.green)
//hline(ibsExitThreshold, title="IBS Exit Threshold", color=color.red)