Расширенная стратегия торговли по прорыву диапазона с несколькими таймфреймами

HTF SMA PIN BAR RSI EMA VOL
Дата создания: 2025-02-18 18:08:09 Последнее изменение: 2025-02-18 18:08:09
Копировать: 0 Количество просмотров: 530
1
Подписаться
1617
Подписчики

Расширенная стратегия торговли по прорыву диапазона с несколькими таймфреймами

Обзор

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

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

В основе стратегии лежит наблюдение за прорывами цены в предыдущие промежутки на более высоких временных периодах (по умолчанию 4 часа). В частности:

  1. Стратегия будет постоянно отслеживать и хранить данные о высоких и низких точках на двух предыдущих высоких временных периодах K-линии
  2. Когда текущая цена закрытия одной из K-линий ниже предыдущей высокой и текущая K-линия является высокой, образуется дефицитный сигнал
  3. Положительный сигнал формируется, когда текущая цена закрытия K-линии выше предыдущей низкой и текущая инновация K-линии ниже
  4. Цена входа устанавливается на высоком и низком точках, вызывающих K-линию
  5. Цель прибыли, установленная на соответствующем высоком и низком уровне в предыдущем периоде
  6. Стоп-дистанция динамически корректируется в зависимости от размера интервала

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2025-01-18 00:00:00
end: 2025-02-17 00:00:00
period: 6h
basePeriod: 6h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Candle Range Theory Strategy", overlay=true)

// Input parameters
var string HTF = input.timeframe("240", "Higher Timeframe (Minutes)")  // 4H default
var float stopLossMultiplier = input.float(1.5, "Stop Loss Multiplier", minval=0.5)
var bool useVolFilter = input.bool(false, "Use Volume Filter")
var float volThreshold = input.float(1.5, "Volume Threshold Multiplier", minval=1.0)

// Function to get higher timeframe data
getHtfData(src) =>
    request.security(syminfo.tickerid, HTF, src)

// Calculate volume condition once per bar
var bool volCondition = true
if useVolFilter
    float vol = getHtfData(volume)
    float avgVol = ta.sma(vol, 20)
    volCondition := vol > avgVol * volThreshold

// Get HTF candle data
htf_open = getHtfData(open)
htf_high = getHtfData(high)
htf_low = getHtfData(low)
htf_close = getHtfData(close)

// Store previous candle data
var float h1 = na  // High of Candle 1
var float l1 = na  // Low of Candle 1
var float h2 = na  // High of Candle 2
var float l2 = na  // Low of Candle 2
var float prevClose = na

// Track setup conditions
var string setupType = na
var float triggerLevel = na
var float targetLevel = na
var float stopLevel = na

// Update candle data - fixed time function usage
var bool isNewBar = false
isNewBar := ta.change(request.security(syminfo.tickerid, HTF, time)) != 0

if isNewBar
    h1 := h2
    l1 := l2
    h2 := htf_high[1]
    l2 := htf_low[1]
    prevClose := htf_close[1]

    // Identify setup conditions
    if not na(h1) and not na(h2) and not na(prevClose)
        if (h2 > h1 and prevClose < h1)  // Short setup
            setupType := "short"
            triggerLevel := l2
            targetLevel := l1
            stopLevel := h2 + (h2 - l1) * stopLossMultiplier
        else if (l2 < l1 and prevClose > l1)  // Long setup
            setupType := "long"
            triggerLevel := h2
            targetLevel := h1
            stopLevel := l2 - (h1 - l2) * stopLossMultiplier
        else
            setupType := na
            triggerLevel := na
            targetLevel := na
            stopLevel := na

// Entry conditions using pre-calculated volume condition - fixed line breaks
bool longCondition = setupType == "long" and high > triggerLevel and not na(triggerLevel) and volCondition
bool shortCondition = setupType == "short" and low < triggerLevel and not na(triggerLevel) and volCondition

// Execute trades
if longCondition
    strategy.entry("Long", strategy.long, comment="Long Entry")
    strategy.exit("Long Exit", "Long", limit=targetLevel, stop=stopLevel)

if shortCondition
    strategy.entry("Short", strategy.short, comment="Short Entry")
    strategy.exit("Short Exit", "Short", limit=targetLevel, stop=stopLevel)

// Plot signals - fixed plotshape parameters
plotshape(series=longCondition, title="Long Signal", location=location.belowbar, color=color.green, style=shape.triangleup)
plotshape(series=shortCondition, title="Short Signal", location=location.abovebar, color=color.red, style=shape.triangledown)

plot(triggerLevel, "Trigger Level", color=color.yellow, style=plot.style_circles)
plot(targetLevel, "Target Level", color=color.blue, style=plot.style_circles)
plot(stopLevel, "Stop Level", color=color.red, style=plot.style_circles)