В процессе загрузки ресурсов... загрузка...

Разрыв структуры с подтверждением объема многоусловной стратегии интеллектуальной торговли

Автор:Чао Чжан, Дата: 2024-12-20 16:15:43
Тэги:БОСSMAATRТПSL

img

Обзор

Это интеллектуальная торговая стратегия, основанная на нарушении структуры (BOS) и подтверждении объема. Стратегия генерирует торговые сигналы путем обнаружения прорывов цен предыдущих максимумов или минимумов в сочетании с подтверждением расширения объема.

Принципы стратегии

Основная логика включает следующие ключевые элементы:

  1. Определяет структурные максимумы и минимумы путем расчета наивысших и наименьших цен в течение определенного периода
  2. Использует скользящие средние для вычисления базового объема и определения значительного увеличения объема
  3. Аккумулирует рост подтверждения количества, когда цена превышает предыдущий максимум с увеличением объема
  4. Аккумулирует количество подтверждений медвежьей тенденции, когда цена прорывается ниже предыдущего минимума с увеличением объема
  5. Торговые сигналы запускаются только после достижения указанного количества подтверждений
  6. Определяет процентные уровни прибыли и стоп-лосса после входа в позицию

Преимущества стратегии

  1. Механизм проверки нескольких условий улучшает надежность сигнала
  2. Интеграция индикатора объема помогает избежать ложных сигналов прорыва
  3. Механизм последовательного подтверждения уменьшает частоту торговли и увеличивает процент выигрыша
  4. Динамические настройки take-profit/stop-loss автоматически корректируют выходные позиции на основе входной цены
  5. Ясная логика стратегии с регулируемыми параметрами обеспечивает хорошую адаптивность

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

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

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

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

Резюме

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


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BOS and Volume Strategy with Confirmation", overlay=true)

// Parameters
swingLength = input.int(20, title="Swing Length", minval=1)
volumeMultiplier = input.float(1.1, title="Volume Multiplier", step=0.1)
volumeSMA_length = input.int(10, title="Volume SMA Length", minval=1)
takeProfitPercentage = input.float(0.02, title="Take Profit Percentage", step=0.01)
stopLossPercentage = input.float(0.15, title="Stop Loss Percentage", step=0.01)  // New parameter for stop loss
atrLength = input.int(14, title="ATR Length")
confirmationBars = input.int(2, title="Confirmation Bars", minval=1)

// Calculate Swing Highs and Lows
swingHigh = ta.highest(high, swingLength)[1]
swingLow = ta.lowest(low, swingLength)[1]

// Calculate Volume Moving Average
volumeSMA = ta.sma(volume, volumeSMA_length)
highVolume = volume > (volumeSMA * volumeMultiplier)

// Break of Structure Detection with Confirmation
var int bullishCount = 0
var int bearishCount = 0

if (close > swingHigh and highVolume)
    bullishCount := bullishCount + 1
    bearishCount := 0
else if (close < swingLow and highVolume)
    bearishCount := bearishCount + 1
    bullishCount := 0
else
    bullishCount := 0
    bearishCount := 0

bullishBOSConfirmed = (bullishCount >= confirmationBars)
bearishBOSConfirmed = (bearishCount >= confirmationBars)

// Entry and Exit Conditions
var float entryPrice = na  // Declare entryPrice as a variable

if (bullishBOSConfirmed and strategy.position_size <= 0)
    entryPrice := close  // Use ':=' for assignment
    strategy.entry("Long", strategy.long)

if (strategy.position_size > 0)
    // Calculate stop loss price
    stopLossPrice = entryPrice * (1 - stopLossPercentage)
    strategy.exit("Take Profit Long", from_entry="Long", limit=entryPrice * (1 + takeProfitPercentage), stop=stopLossPrice)

if (bearishBOSConfirmed and strategy.position_size >= 0)
    entryPrice := close  // Use ':=' for assignment
    strategy.entry("Short", strategy.short)

if (strategy.position_size < 0)
    // Calculate stop loss price
    stopLossPrice = entryPrice * (1 + stopLossPercentage)
    strategy.exit("Take Profit Short", from_entry="Short", limit=entryPrice * (1 - takeProfitPercentage), stop=stopLossPrice)

// Plot Swing Highs and Lows for Visualization
plot(swingHigh, title="Swing High", color=color.green, linewidth=1)
plot(swingLow, title="Swing Low", color=color.red, linewidth=1)

Связанные

Больше