DAKELAX-XRPUSDT Стратегия реверсионной оценки Bollinger Band Mean

Автор:Чао Чжан, Дата: 2023-11-02 16:18:34
Тэги:

img

Обзор

DAKELAX-XRPUSDT - это торговый бот-стратегия для XRPUSDT на Binance. Это простая обратная стратегия с использованием полос Боллинджера, и хорошо работает в бэкстестесте на H1 временных рамках с мая по август 2019 года, а также работает в режиме реального времени.

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

Стратегия сначала рассчитывает 20-периодную SMA и верхние/нижние полосы Боллинджера. Верхняя полоса - SMA + 1,5 стандартного отклонения, а нижняя полоса - SMA - 2,2 стандартного отклонения. Затем рассчитывается скорость сокращения полос. Полосы заполнены черным, если сокращение > 1,3, желтым, если < 0,1, иначе красным.

Когда цена закрытия находится ниже нижней полосы, он идет длинный с 20 монет. Когда закрытие находится выше верхней полосы, он закрывает все позиции.

Стратегия также рассчитывает 7-периодическую EMA быстрой линии и 18-периодическую EMA медленной линии.

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

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

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

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

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

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

  • Корректировать сумму покупки на основе ширины полосы, меньше при заключении контракта и больше при расширении

  • Подумайте об аккумулировании позиций, когда сокращение замечено, но сигнал еще не вызван

  • Добавить более длительный индикатор тренда временных рамок для определения общего направления, приостановить стратегию, когда неясно

  • Включить стоп-лосс для контроля риска, может установить вблизи недавних минимумов диапазонов

  • Оптимизируйте кроссоверные параметры, такие как периоды EMA, чтобы избежать задержания

Резюме

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


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

//@version=3
//study(title="Tradebotler DAKELAX Binance:XRPUSDT Study-strategy", overlay=true)
strategy(title="Tradebotler DAKELAX Binance:XRPUSDT Strategy", overlay=true)

buyAmount = input(20, minval=1)

// SMA20
len2 = input(20, minval=1)
src2 = input(close)
out2 = sma(src2, len2)

// BB contraction value (medium tight)
contraction_value = 1.3
// BB contraction value (very tight)
contraction_value2 = 0.1

// 2xSTDEV BB calculation
dev = stdev(src2, len2)
upper_BB = out2  + 1.5*dev
lower_BB = out2  - 2.2*dev
x1 = plot(upper_BB, color=blue, linewidth = 2)
x2 = plot(lower_BB, color=blue, linewidth = 2)

contraction = (upper_BB-lower_BB)/out2

//fills the BBands according to the contraction value (threshold)

// Calculate values
fastMA  = ema(close, 7)
slowMA  = ema(close, 18)

// Determine alert setups
crossUp   = crossover(fastMA, slowMA)
crossDown = crossunder(fastMA, slowMA)

buySignal   = (crossUp or crossUp[1]) and (low > slowMA)
shortSignal = (crossDown or crossDown[1]) and (high < slowMA)

// Highlight alerts on the chart
bgColour =
     (buySignal and barstate.isrealtime) ? green :
     (shortSignal and barstate.isrealtime) ? red :
     na

signalBuy = (buySignal ) ? true : false
signalSell = (shortSignal ) ? true : false

test = true

test := not test[1]

closesBelowLowerBB = close < lower_BB
closesAboveUpperBB = close > upper_BB

tmptext = "blah"

// Plot values
plot(series=fastMA, color=teal)
plot(series=slowMA, color=orange)

plot(out2, color=black, linewidth = 1)
fill(x1, x2, color = contraction > contraction_value ? black : contraction < contraction_value2 ? yellow: red)

isInRed = contraction < contraction_value and contraction >= contraction_value2
isInYellow = contraction < contraction_value and contraction < contraction_value2

if ( closesBelowLowerBB )
    strategy.order('Buy', strategy.long, buyAmount)

if ( closesAboveUpperBB )
    strategy.close_all()



Больше