Стратегия прорыва внутри диапазона строк

Автор:Чао Чжан, Дата: 2023-12-11 15:16:53
Тэги:

img

Обзор

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

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

Стратегия использует следующие показатели и переменные:

  • Средний истинный диапазон (ATR): средний истинный диапазон за последние N бар, рассчитанный с использованием функции ATR.
  • Диапазон: разница между высоким и низким уровнем тока.
  • insideBar: Булевая переменная, которая является истинной, если диапазон текущей строки меньше предыдущей строки, указывая на внутреннюю строку.
  • breakoutUp: Булевая переменная, которая является истинной, если близкая выше предыдущей высоты, указывающей на восходящий прорыв.
  • BreakoutDown: Булевая переменная, которая является истинной, если close ниже предыдущего уровня, что указывает на снижение.
  • liquidityUp: Наибольший максимум по сравнению с предыдущими N-барами, представляющий собой потенциальную зону сопротивления.
  • ликвидность вниз: наименьший минимум по сравнению с прошлыми N-барами, представляющий собой потенциальную зону поддержки.

Решение о входе в систему основывается на выходе из диапазона за предыдущие высокие/низкие пороги.

Стоп-лосс использует ATR умноженное на диапазон.

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

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

  1. Захватывает торговые возможности от расширения диапазона после консолидации внутренней панели.
  2. Предотвращает попадание в ловушку, объединяя направление выхода и уровень ликвидности.
  3. Ясные правила стоп-лосса и выигрыша, легко внедряемые.
  4. Сильная направленность, высокая вероятность достижения цели прибыли после прорыва импульса.

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

Риски этой стратегии:

  1. Неудачный прорыв, в результате которого вы попали в ловушку.
  2. Настройка периода ATR, чтобы обеспечить правильное расстояние остановки.
  3. Неточный уровень ликвидности приводит к неправильному вводу.
  4. Неудачное обращение не может достичь цели прибыли.

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

Области оптимизации:

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

Резюме

Внутренняя стратегия прорыва диапазона баров использует расширение диапазона от консолидации путем входа, когда цена выходит из диапазона предыдущих баров. Уровни ликвидности избегают попадания в ловушку. Разумные параметры остановки потери и получения прибыли позволяют использовать импульс после прорыва, чтобы достичь целевой прибыли. Стратегия может давать хорошие результаты в промежуточные временные рамки. Дальнейшее повышение преимуществ и надежности системы может быть достигнуто за счет оптимизации параметров и улучшения фильтров входа.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ilikelyrics560

//@version=5
strategy("Inside Bar Range Breakout Strategy", overlay=true)

// Inputs
lookback = input.int(20, "Lookback Period", minval=1)
atrMult = input.float(1.5, "ATR Multiplier", step=0.1)
atrLen = input.int(14, "ATR Length", minval=1)
slMult = input.float(2, "Stop Loss Multiplier", step=0.1)
tpMult = input.float(3, "Take Profit Multiplier", step=0.1)

// Variables
atr = ta.atr(atrLen)
Range = high - low 
insideBar = Range < Range[1]
breakoutUp = close > high[1]
breakoutDown = close < low[1]
liquidityUp = ta.highest(high, lookback)
liquidityDown = ta.lowest(low, lookback)
longEntry = breakoutUp and low > liquidityDown
shortEntry = breakoutDown and high < liquidityUp
longExit = close < low[1] 
shortExit = close > high[1]

// Plotting
plot(liquidityUp, "Liquidity Up", color.new(color.green, 30), 1)
plot(liquidityDown, "Liquidity Down", color.new(color.red, 30), 1)
bgcolor(longEntry ? color.new(color.green, 30) : na, title="Long Entry")
bgcolor(shortEntry ? color.new(color.maroon, 30) : na, title="Short Entry")

// Trading
if (longEntry)
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", "Long", stop=low - slMult * atr, limit=high + tpMult * atr)

if (shortEntry)
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", "Short", stop=high + slMult * atr, limit=low - tpMult * atr)

Больше