Адаптивная торговая стратегия, основанная на трендовом прорыве объема, определяемом Боллинджером

BB stdev SMA EMA SMMA WMA VWMA ATR
Дата создания: 2024-12-13 11:43:10 Последнее изменение: 2024-12-13 11:43:10
Копировать: 2 Количество просмотров: 420
1
Подписаться
1617
Подписчики

Адаптивная торговая стратегия, основанная на трендовом прорыве объема, определяемом Боллинджером

Обзор

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

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

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

  1. Средняя траектория полосы Полинга рассчитана с использованием настраиваемых подвижных средних (включая SMA, EMA, SMMA, WMA, VWMA).
  2. Динамическое определение посадки и высадки поезда через кратность стандартного отклонения (по умолчанию 2.0)
  3. При повышении цены на рынок, входящий рынок становится более активным, что свидетельствует о формировании сильной порывной тенденции.
  4. Когда цена падает вниз, это указывает на то, что восходящая тенденция может закончиться.
  5. Система учитывает встроенную стоимость сделки (,1%) и скольжение ( балла), что соответствует реальной ситуации.

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

  1. Адаптируемость: благодаря выбору различных типов средней линии, стратегия может адаптироваться к различным рыночным условиям.
  2. Управление рисками совершенствовано: с помощью подвесных рельсов Болинга в качестве точки остановки, обеспечивается четкое управление рисками.
  3. Рациональное управление капиталом: применение метода управления пропорциональностью позиций, избежание риска, связанного с фиксированным количеством рук.
  4. Расчет стоимости сделки: включает в себя комиссионные и сдвижные пункты, результаты обратной проверки ближе к реальности.
  5. Гибкость временных рамок: можно выбрать конкретный временной диапазон с помощью параметров.

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

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

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

  1. Введение показателя интенсивности тренда:
  • Можно добавить ADX или аналогичные показатели, чтобы отфильтровать сигналы ослабления рынка
  • Это позволит снизить ущерб от ложных взломов.
  1. Оптимизация механизма хранения убытков:
  • Возможность динамического остановки, например, отслеживания остановки
  • Это поможет получить больше прибыли, если тенденция сохранится.
  1. Добавить фильтр транзакций:
  • Сигнал подтверждения на основе объема транзакций
  • Не торгуйте в условиях низкой ликвидности
  1. Улучшение механизмов регистрации:
  • Механизмы, позволяющие увеличить количество вызовов
  • Помощь в получении лучшей цены на вход

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

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Demo GPT - Bollinger Bands", overlay=true, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs
length = input.int(20, minval=1, title="Length")
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
offset = input.int(0, "Offset", minval=-500, maxval=500)

// Date range inputs
startYear = input.int(2018, "Start Year", minval=1970, maxval=2100)
startMonth = input.int(1, "Start Month", minval=1, maxval=12)
startDay = input.int(1, "Start Day", minval=1, maxval=31)
endYear = input.int(2069, "End Year", minval=1970, maxval=2100)
endMonth = input.int(12, "End Month", minval=1, maxval=12)
endDay = input.int(31, "End Day", minval=1, maxval=31)

// Time range
startTime = timestamp("GMT+0", startYear, startMonth, startDay, 0, 0)
endTime = timestamp("GMT+0", endYear, endMonth, endDay, 23, 59)

// Moving average function
ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

// Calculate Bollinger Bands
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// Plot
plot(basis, "Basis", color=#2962FF, offset=offset)
p1 = plot(upper, "Upper", color=#F23645, offset=offset)
p2 = plot(lower, "Lower", color=#089981, offset=offset)
fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95))

// Strategy logic: Only go long and flat
inDateRange = time >= startTime and time <= endTime
noPosition = strategy.position_size == 0
longPosition = strategy.position_size > 0

// Buy if close is above upper band
if inDateRange and noPosition and close > upper
    strategy.entry("Long", strategy.long)

// Sell/Exit if close is below lower band
if inDateRange and longPosition and close < lower
    strategy.close("Long")