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

Стратегия Bollinger Multi-Timeframe Momentum Breakout с скользящей средней Hull

Автор:Чао Чжан, Дата: 2024-11-29 17:00:00
Тэги:VWMAHMAББМТСРСИ

img

Обзор

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

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

Основная логика основана на перекрестном подтверждении нескольких технических индикаторов. Стратегия отслеживает ценовые отношения с различными скользящими средними в нескольких временных рамках, включая 5-минутную VWMA, 1-часовую VWMA и 3-часовую HMA. Длинные сигналы генерируются, когда цена превышает верхний порог, оставаясь выше всех временных индикаторов; наоборот, короткие сигналы возникают, когда цена превышает нижний порог, оставаясь ниже всех индикаторов. Стратегия включает расчеты отклонений для установки динамических порогов входа и выхода, повышая гибкость торговли.

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

  1. Анализ многочасовых рамок уменьшает риск ложного выхода и повышает надежность сигнала
  2. Динамические параметры стоп-лосса и прибыли адаптируются к различным рыночным условиям
  3. Размер позиций на основе собственного капитала обеспечивает рациональное использование капитала
  4. Многократные механизмы выхода обеспечивают адаптивность стратегии
  5. Графический интерфейс предлагает четкую визуализацию торговых сигналов для анализа
  6. Интеграция нескольких зрелых технических индикаторов повышает точность решений о торговле

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

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

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

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

Резюме

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


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

//@version=5
strategy("1H- 280, 2.7", overlay=true)


// Fetch the indicator values from different timeframes
vwma5 = request.security(syminfo.tickerid, "5", ta.wma(close, 233), lookahead = barmerge.lookahead_off)
vwma_hourly = request.security(syminfo.tickerid, "60", ta.wma(close, 89), lookahead = barmerge.lookahead_off)
hullma155_3h = request.security(syminfo.tickerid, "180", ta.hma(close, 155), lookahead = barmerge.lookahead_off)


// Calculate the deviation value
deviation = close * 0.032


// Initialize the signal variables
var float signalLine = na
var color lineColor = na


// Long Entry Conditions
longCondition_5min = close > vwma5
longCondition_hourly = close > vwma_hourly
longCondition_3h = close > hullma155_3h


// Short Entry Conditions
shortCondition_5min = close < vwma5
shortCondition_hourly = close < vwma_hourly
shortCondition_3h = close < hullma155_3h


// Long Entry
if longCondition_5min and longCondition_hourly and longCondition_3h
    signalLine := close + deviation
    lineColor := color.rgb(0, 255, 0, 1)


// Short Entry
if shortCondition_5min and shortCondition_hourly and shortCondition_3h
    signalLine := close - deviation
    lineColor := color.rgb(255, 0, 0, 1)


// Plotting the connecting line
plot(signalLine, title="Signal Line", color=lineColor, linewidth=1, style=plot.style_line)


// Colorize the signal line
bgcolor(signalLine > close ? color.rgb(0, 255, 0, 99) : color.rgb(255, 0, 0, 99), transp=90)



// Strategy settings
useTPSL = input(true, "Use TP/SL for closing long positions?")
useDownbreakOutbreak = input(false, "Use Downbreak and Outbreak for closing positions?")
useM7FClosing = input(false, "Use M7F Signal for closing positions?")


length1 = input.int(280, minval=1)
src = input(close, title="Source")
mult = input.float(2.7, minval=0.001, maxval=50, title="StdDev")


basis = ta.vwma(src, length1)
dev = mult * ta.stdev(src, length1)
upper = basis + dev
lower = basis - dev


offset = input.int(0, "Offset", minval = -500, maxval = 500)


length2 = input.int(55, minval=1)
src2 = input(close, title="Source")
hullma = ta.wma(2 * ta.wma(src2, length2 / 2) - ta.wma(src2, length2), math.floor(math.sqrt(length2)))


hullmacrosslower = ta.crossover(hullma, lower)
hullmacrossupper = ta.crossunder(hullma, upper)


breakout = ta.crossover(ohlc4, upper)
breakdown = ta.crossunder(ohlc4, upper)
outbreak = ta.crossover(ohlc4, lower)
downbreak = ta.crossunder(ohlc4, lower)


// Calculate position size and leverage
margin_pct = 1
leverage = 1
position_size = strategy.equity * margin_pct
qty = position_size / close / leverage


// Define take profit and stop loss levels
take_profit = 0.14
stop_loss = 0.06


// Opening a long position
if breakout
    strategy.entry("Long", strategy.long, qty, limit=close*(1+take_profit), stop=close*(1-stop_loss))


// Opening a short position
if downbreak
    strategy.entry("Short", strategy.short, qty, limit=close*(1-take_profit), stop=close*(1+stop_loss))


// Closing positions based on chosen method
if useTPSL
    // Using TP/SL for closing long positions
    if strategy.position_size > 0 and breakdown
        strategy.close("Long", comment="Breakdown")
else if useDownbreakOutbreak
    // Using Downbreak and Outbreak for closing positions
    if strategy.position_size > 0 and (breakdown or downbreak)
        strategy.close("Long", comment="Breakdown")
    if strategy.position_size < 0 and (outbreak or downbreak)
        strategy.close("Short", comment="Outbreak")
else if useM7FClosing
    // Using M7F Signal for closing positions
    if strategy.position_size > 0 and (signalLine < close)
        strategy.close("Long", comment="M7F Signal")
    if strategy.position_size < 0 and (signalLine > close)
        strategy.close("Short", comment="M7F Signal")


// Plotting entry signals
plotshape(hullmacrosslower, title="High Bear Volatility", style=shape.arrowup, text="^^^^^", color=color.rgb(75, 202, 79), location=location.belowbar)
plotshape(hullmacrossupper, title="High Bull Volatility", style=shape.arrowdown, text="-----", color=color.rgb(215, 72, 72), location=location.abovebar)
plotshape(breakout ? 1 : na, title="Breakout", style=shape.arrowup, text="", color=color.rgb(75, 202, 79), location=location.belowbar, size=size.tiny)
plotshape(breakdown ? 1 : na, title="Breakdown", style=shape.arrowdown, text="", color=color.rgb(201, 71, 71), location=location.abovebar, size=size.tiny)
plotshape(outbreak ? 1 : na, title="Outbreak", style=shape.arrowup, text="", color=color.rgb(0, 110, 255), location=location.belowbar, size=size.tiny)
plotshape(downbreak ? 1 : na, title="Downbreak", style=shape.arrowdown, text="", color=color.rgb(255, 111, 0), location=location.abovebar, size=size.tiny)


Связанные

Больше