
В качестве основного технического показателя в этой стратегии используется движущаяся средняя скважина в сочетании с двойным поясом бурин, чтобы реализовать стратегию по выявлению рыночных тенденций. Когда цена прорывает пояса бурин, она смотрит вниз, а когда цена прорывает пояса бурин, она смотрит вверх.
Вычисление движущихся средних колебаний (CBMA): с использованием адаптированных EMA гладких движущихся средних колебаний можно эффективно отслеживать изменения цен.
Настройка параметров Брин-полосы: выбор средней траектории в качестве движущейся средней траектории, настройка на стандартный разрыв на верхнюю и нижнюю траектории, которая может быть скорректирована в зависимости от рынка.
Прорывная торговля: цена выше, когда она выходит из строя, и выше, когда она выходит из строя, с использованием стратегии по отслеживанию тренда.
Применение модели отмены мгновенных заказов, одна сделка в одностороннем порядке.
Устанавливается фиксированный объем сделки, который может быть скорректирован в зависимости от капитала.
Движущаяся средняя криптовалюта обладает высокой плавностью и позволяет эффективно отслеживать цены.
Приспособность к алгоритму EMA оптимизирует реальное время движущихся средних.
Брин, находясь на подъезде, дал четкий сигнал о прорыве.
Применение модели отслеживания тенденций, избегание whipsaw.
Фиксированный объем сделок позволяет контролировать одноразовые убытки.
Параметры в Бринской полосе нуждаются в оптимизации, и слишком большие или слишком маленькие параметры могут быть проблемой.
Сигнал прорыва может привести к ложному прорыву
Необходимо установить стоп-лосс, чтобы контролировать потери.
Фиксированный объем торгов не может быть скорректирован в зависимости от рынка.
Я думаю, что мы не сможем получить большую прибыль, если будем торговать только в одностороннем порядке.
Динамически оптимизировать параметры Брин-пояса, чтобы сделать его более подходящим для рынка.
Добавьте дополнительные индикаторы для фильтрации волн, чтобы избежать ложных прорывов.
Присоединяйтесь к блоку, чтобы отслеживать убытки.
В этом случае вы получите более высокую прибыль от хеджирования, а также от большего количества дефолтов.
Присоединяйтесь к системе управления позициями.
Эта стратегия используется в качестве стратегии для отслеживания тенденций в качестве разрывателя, используя адаптивные технические показатели для подвижных средних, в сочетании с двойными путями Брин-пояса, чтобы установить четкий сигнал прорыва. Эта стратегия проста и проста в использовании, фиксированный объем торгов может контролировать риск и имеет определенную реальную стоимость. Однако есть некоторые проблемы, такие как ложные прорывы и оптимизация параметров, которые требуют оптимизации путем добавления большего количества технических показателей, чтобы контролировать риск и в то же время повысить эффективность стратегии.
/*backtest
start: 2023-10-29 00:00:00
end: 2023-11-05 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="CBMA Bollinger Bands Strategy directed [ChuckBanger]", shorttitle="CBMA BB CB",
overlay=true )
length = input(title="Length", type=input.integer, defval=12, minval=1)
regular = input(title="Regular BB Or CBMA?", type=input.bool, defval=false)
src = input(title="Source", type=input.source, defval=close)
mult = input(title="Multipler", type=input.float, defval=2.3, minval=.001, maxval=50, step=.1)
emaLen = input(title="EMA Length", type=input.integer, defval=11, minval=1)
emaGL = input(title="EMA Gain Limit", type=input.integer, defval=50, minval=1)
highlight = input(title="Highlight On/Off", type=input.bool, defval=true)
direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))
//strategy.risk.max_drawdown(50, strategy.percent_of_equity)
calc_hma(src, length) =>
hullma = wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
hullma
calc_cbma(price, length, emaLength, emaGainLimit) =>
alpha = 2 / (emaLength + 1)
ema = ema(price, emaLength)
int leastError = 1000000
float ec = 0
float bestGain = 0
for i = emaGainLimit to emaGainLimit
gain = i / 10
ec := alpha * ( ema + gain * (price - nz(ec[1])) ) + (1 - alpha) * nz(ec[1])
error = price - ec
if (abs(error) < leastError)
leastError = abs(error)
bestGain = gain
ec := alpha * ( ema + bestGain * (price - nz(ec[1])) ) + (1 - alpha) * nz(ec[1])
hull = calc_hma(price, length)
cbma = (ec + hull) / 2
cbma
cbma = calc_cbma(src, length, emaLen, emaGL)
basis = regular ? sma(src, length) : cbma
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
cbmaColor = fixnan(highlight and not regular ? cbma > high ? color.purple : cbma < low ? color.aqua : na : color.red)
plot(basis, color=cbmaColor)
p1 = plot(upper, color=color.blue)
p2 = plot(lower, color=color.blue)
fill(p1, p2)
if (crossover(src, lower))
strategy.entry("CBMA_BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="CBMA_BBandLE")
else
strategy.cancel(id="CBMA_BBandLE")
if (crossunder(src, upper))
strategy.entry("CBMA_BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="CBMA_BBandSE")
else
strategy.cancel(id="CBMA_BBandSE")