Стратегия пересечения скользящих средних и прорыва полос Боллинджера


Дата создания: 2024-02-19 14:18:00 Последнее изменение: 2024-02-19 14:18:00
Копировать: 0 Количество просмотров: 636
1
Подписаться
1617
Подписчики

Стратегия пересечения скользящих средних и прорыва полос Боллинджера

Обзор

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

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

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

  1. RSI-индикатор: когда RSI-индикатор пересекает установленную линию сверхпокупа или линию сверхпродажи, выполняется соответствующая операция по покупке или продаже.

  2. Брин-банк: при повышении цены в пределах Брин-банка, проводится операция по уменьшению цены; при повышении цены в пределах Брин-банка, проводится операция по увеличению цены.

  3. Средняя линия: рассчитывает наивысшую и наименьшую цены за определенный период (например, 5 циклов), делая прибавку, когда цена выше наивысшей точки за последние 5 циклов; делая пробел, когда цена ниже наименьшей точки за последние 5 циклов.

  4. MACD: рассчитывает скоростную, медленную и золотую линию MACD в качестве вспомогательного индикатора.

Эти показатели объединяются, используя в трендовых ситуациях, время прорыва цены и возвращения к центральной оси, используя решение о прорыве равновесия, чтобы захватить точку перехода тенденции; используя решение о предельной зоне RSI, чтобы осуществить обратную операцию, используя решение о предельной зоне RSI, чтобы осуществить обратную операцию.

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

Эта стратегия имеет следующие преимущества:

  1. Показатели RSI, Брин-Бенд, Евгений-Линия и т. д. взаимно проверяются, что делает торговые сигналы более надежными.

  2. Подходит для различных ситуаций. Тенденционные ситуации используют брин-полосы, скорректированные ситуации используют среднюю линию, сверхпокупаемые и сверхпродаваемые ситуации используют RSI.

  3. Частота операций умеренная. Параметры индикатора устанавливаются с осторожностью, чтобы избежать слишком частых торгов.

  4. Ясная структура программы. Код написания спецификаций, легко читать и вторично разрабатывать.

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

Однако эта стратегия также несет в себе некоторые риски:

  1. Риск настройки параметров. Неправильная настройка параметров индикатора может привести к ошибкам в торговых сигналах. Параметры оптимизации требуют повторного тестирования.

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

  3. Программирование рискованно. В коде могут быть некоторые логические ошибки, которые трудно обнаружить, что приводит к аномальным сделкам. Требуется совершенствование обработки аномалий и ведения журналов.

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

Эта стратегия также может быть оптимизирована в следующих направлениях:

  1. Добавление стратегии “стоп-лосс” для блокирования прибыли и снижения убытков.

  2. В сочетании с показателями объема сделок, чтобы избежать ложных сигналов. Например, проверка объема сделок при прорыве буринской полосы.

  3. Добавление алгоритмов машинного обучения, обучение на основе исторических данных, автоматическая оптимизация параметров.

  4. Добавлено графическое отображение, которое позволяет визуально продемонстрировать эффективность стратегии.

  5. Оптимизируйте обратную связь, чтобы выбрать оптимальное сочетание параметров.

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

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

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

//@version=2
strategy("MD strategy", overlay=true)
lengthrsi = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close
source = close
lengthbb = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
direction = input(0, title = "Strategy Direction",minval=-1, maxval=1)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
consecutiveBarsUp = input(3)
consecutiveBarsDown = input(3)
lengthch = input( minval=1, maxval=1000, defval=5)
upBound = highest(high, lengthch)
downBound = lowest(low, lengthch)



ups = price > price[1] ? nz(ups[1]) + 1 : 0
dns = price < price[1] ? nz(dns[1]) + 1 : 0
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD

strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

basis = sma(source, lengthbb)
dev = mult * stdev(source, lengthbb)

upper = basis + dev
lower = basis - dev

vrsi = rsi(price, lengthrsi)

if (not na(vrsi))
    if (crossover(vrsi, overSold))
        strategy.entry("RsiLE", strategy.long, comment="RsiLE")
    if (crossunder(vrsi, overBought))
        strategy.entry("RsiSE", strategy.short, comment="RsiSE")

if (crossover(source, lower))
    strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="BBandLE")

if (crossunder(source, upper))
    strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands",  comment="BBandSE")
else
    strategy.cancel(id="BBandSE")
    
    
if (not na(close[lengthch]))
    strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE")
    strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE")
    
    
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)