Эта стратегия реализует динамическую торговую стратегию Bollinger Band с выбираемыми историческими диапазонами дат на основе индикатора Bollinger Band. Она позволяет пользователям выбирать время начала и окончания для обратного тестирования, тем самым позволяя обратное тестирование и сравнение динамической стратегии Bollinger Band в разные периоды времени.
Стратегия называется
Основной принцип этой стратегии заключается в генерировании торговых сигналов на основе динамических верхних и нижних рельсов индикатора полосы Боллинджера. Средняя рельса полосы Боллинджера - это n-дневная простая скользящая средняя, в то время как верхние и нижние рельсы - это средняя рельса плюс и минус м раз стандартного отклонения n-днев соответственно.
Другая основная особенность этой стратегии - это возможность пользователей выбирать временной диапазон обратного тестирования. Стратегия предоставляет входные параметры для выбора времени начала и окончания обратного тестирования в нескольких измерениях, таких как месяц, день, год, час, минута и т. Д. Это позволяет пользователям выбирать различные исторические периоды времени для обратного тестирования и проверки стратегии, достигая более полного и динамичного анализа стратегии.
В частности, эта стратегия преобразует выбранное время начала и окончания в формат временной метки с помощью функции временной метки ((), а затем устанавливает действительный временной окно обратного тестирования стратегии с помощью условий время>=начало и время<=конец. Это достигает динамической функции выбора временного интервала.
Наибольшее преимущество этой стратегии заключается в том, что она идеально сочетает в себе динамическую стратегию Болинджеровских полос с произвольным выбором временного диапазона. Это позволяет пользователям более гибко и всесторонне проверять стратегии.
Внедрять динамические стратегии полосы Боллинджера, которые могут улавливать сигналы об изменениях тренда во время подъёмов и падений рынка для торговли трендом.
Поддержка выбора произвольных исторических временных интервалов для обратного тестирования для анализа эффективности стратегии в различных рыночных условиях, достижение динамической оптимизации стратегий.
В сочетании с адаптивностью показателей полосы Боллинджера эта стратегия может автоматически корректировать параметры для адаптации к более широким изменениям рыночных условий.
Предоставлять регулируемые параметры для долгосрочного и краткосрочного использования, чтобы пользователи могли оптимизировать параметры в соответствии со своими собственными потребностями, чтобы сделать стратегии более практичными.
Позволяет выбирать конкретные часы и минуты для обратного тестирования с более высокой точностью для более детального анализа стратегии.
Поддержка китайского и английского языков для хорошего пользовательского опыта.
Основные риски этой стратегии заключаются в неопределенности индикатора полос Боллинджера при определении переворотов тренда.
Сам индикатор полос Боллинджера не может точно определить колебания рынка, и могут быть ложные сигналы.
Неправильный выбор параметров полос Боллинджера может привести к плохой стратегии или даже к потерям.
Возможность сбоя показателя в особых рыночных условиях.
Неправильный выбор диапазона дат обратного тестирования может пропустить некоторые важные рыночные условия.
Для контроля и улучшения этих рисков могут использоваться следующие методы:
Оптимизировать параметры полосы Боллинджера и регулировать цикл средней рельсы для адаптации к различным продуктам и временным периодам.
Используйте другие показатели, такие как скользящая средняя для подтверждения, чтобы уменьшить ложные сигналы.
Проверьте больше периодов рынка, чтобы оценить надежность стратегии.
Установите точки остановки потери для контроля одиночных потерь.
Для оптимизации этой стратегии существует несколько основных направлений:
Комбинировать алгоритмы машинного обучения для достижения динамической оптимизации параметров полосы Боллинджера.
Увеличить функциональность, такую как проверка на отказ, чтобы полностью оценить стабильность параметров.
Добавьте такие функции, как перемещение стоп-лосса и отслеживание стоп-лосса, чтобы зафиксировать прибыль и снизить риски.
Оптимизировать логику входа и установить больше подтверждающих условий, таких как всплески объемов торговли.
Комбинировать стратегии, такие как арбитраж фьючерсов на фондовые индексы, чтобы расширить сферу применения стратегии.
Добавить функции автоматического выполнения торговли для перехода от бэкстестинга к живой торговле.
Эти оптимизации могут значительно улучшить практическую эффективность и устойчивую прибыльность стратегии.
Эта стратегия успешно интегрировала стратегию Боллинджерской полосы с произвольным выбором исторического временного интервала. Такой высоко гибкий и динамичный анализ бэкстестинга позволяет пользователям точно корректировать и оптимизировать параметры стратегии в различных рыночных средах. Предоставленная визуализация также значительно улучшает пользовательский опыт.
/*backtest start: 2024-01-05 00:00:00 end: 2024-02-04 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("BB Range", shorttitle = "BB Range", overlay=true, max_bars_back=200) // Revision: 1 // Author: @allanster // === INPUT BACKTEST RANGE === FromMonth = input(defval = 7, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 20, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2019, title = "From Year", minval = 2017) FromHour = input(defval = 17, title = "From Hour", minval = 00) FromMinute = input(defval = 00, title = "From Minute", minval = 00) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) ToHour = input(defval = 23, title = "To Hour", minval = 00) ToMinute = input(defval = 59, title = "To Minute", minval = 00) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, FromHour, FromMinute) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, ToHour, ToMinute) // backtest finish window window() => true source = close length = input(20, minval=1) mult = input(2.0, minval=0.001, maxval=50) basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev upper_stop = upper * 1.05 lower_stop = lower * 0.95 buyEntry = crossover(source, lower) sellEntry = crossunder(source, upper) if (crossover(source, lower)) strategy.entry("BBandLE", strategy.long, stop=lower_stop, when = window(), oca_name="BollingerBands", comment="BBandLE") else strategy.cancel(id="BBandLE") if (crossunder(source, upper)) strategy.entry("BBandSE", strategy.short, stop=upper_stop, when=window(), oca_name="BollingerBands",comment="BBandSE") else strategy.cancel(id="BBandSE")