Двойная стратегия быков и медведей на основе скользящей средней


Дата создания: 2023-11-06 16:25:01 Последнее изменение: 2023-11-06 16:25:01
Копировать: 1 Количество просмотров: 646
1
Подписаться
1617
Подписчики

Двойная стратегия быков и медведей на основе скользящей средней

Обзор

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

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

  1. Вычисление движущихся средних колебаний (CBMA): с использованием адаптированных EMA гладких движущихся средних колебаний можно эффективно отслеживать изменения цен.

  2. Настройка параметров Брин-полосы: выбор средней траектории в качестве движущейся средней траектории, настройка на стандартный разрыв на верхнюю и нижнюю траектории, которая может быть скорректирована в зависимости от рынка.

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

  4. Применение модели отмены мгновенных заказов, одна сделка в одностороннем порядке.

  5. Устанавливается фиксированный объем сделки, который может быть скорректирован в зависимости от капитала.

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

  1. Движущаяся средняя криптовалюта обладает высокой плавностью и позволяет эффективно отслеживать цены.

  2. Приспособность к алгоритму EMA оптимизирует реальное время движущихся средних.

  3. Брин, находясь на подъезде, дал четкий сигнал о прорыве.

  4. Применение модели отслеживания тенденций, избегание whipsaw.

  5. Фиксированный объем сделок позволяет контролировать одноразовые убытки.

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

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

  2. Сигнал прорыва может привести к ложному прорыву

  3. Необходимо установить стоп-лосс, чтобы контролировать потери.

  4. Фиксированный объем торгов не может быть скорректирован в зависимости от рынка.

  5. Я думаю, что мы не сможем получить большую прибыль, если будем торговать только в одностороннем порядке.

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

  1. Динамически оптимизировать параметры Брин-пояса, чтобы сделать его более подходящим для рынка.

  2. Добавьте дополнительные индикаторы для фильтрации волн, чтобы избежать ложных прорывов.

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

  4. В этом случае вы получите более высокую прибыль от хеджирования, а также от большего количества дефолтов.

  5. Присоединяйтесь к системе управления позициями.

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

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

Исходный код стратегии
/*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")