Процентный канал EMA со стратегией торговли диапазоном полосы Боллинджера

Автор:Чао Чжан, Дата: 2023-11-13 17:38:01
Тэги:

img

Обзор

Эта стратегия основана на выборе пользователем EMA и определенного процентного канала. Она длинна, когда цена ниже верхней полосы, и коротка, когда цена выше нижней полосы. Если цена начинает трендировать и движется за пределами канала, все позиции закрываются, чтобы предотвратить потерю.

Для трендовых рынков вместо этого следует использовать сестринский EMA Percentage Channel with Bollinger Band Trend Trading Strategy.

Принципы

  1. Вычислить 200-периодную EMA как базовую EMA.

  2. Вычислить верхнюю и нижнюю полосы на основе определенного пользователем процента: Верхняя полоса = EMA * (1 + %) Нижняя полоса = EMA * (1 - процент)

  3. Вычислить 20-периодные полосы Боллинджера для отображения диапазона канала.

  4. Пройдите длинный курс, когда цена закрытия пересекает нижнюю полосу Боллинджера снизу. Пройдите короткий курс, когда цена закрытия пересекает верхнюю полосу Боллинджера снизу.

  5. Использовать ATR для расчета стоп-лосса, чтобы избежать чрезмерных потерь.

  6. Если цена выходит за пределы определенного диапазона процентного канала, закрыть все позиции, чтобы избежать дальнейших потерь.

Преимущества

  1. Базовая линия EMA помогает лучше отслеживать моменты переворота тренда.

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

  3. Боллингерские полосы обеспечивают поддержку и уровни сопротивления для облегчения времени входа.

  4. ATR Trailing Stop динамически устанавливает стоп-лосс для эффективного контроля риска по сделке.

  5. Закрытие всех позиций, когда цена проходит через канал, быстро контролирует потери.

  6. Настраиваемые параметры гибки для различных рыночных условий.

Риски

  1. Слишком широкий диапазон каналов может пропустить тренды или задержать остановку потерь.

  2. Слишком узкий диапазон каналов может привести к перегрузке и увеличению затрат на транзакции.

  3. Плохие параметры Bollinger Bands могут привести к упущенным торговым возможностям.

  4. Превышение порога стоп-лосса может привести к чрезмерным потерям на одну сделку.

  5. Параметры должны быть оптимизированы, чтобы найти оптимальный диапазон торговли.

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

  1. Проверьте различные периоды EMA, чтобы найти наиболее подходящую скользящую среднюю.

  2. Оптимизировать процентные параметры канала для определения оптимального диапазона канала.

  3. Корректировать период полос Боллинджера, чтобы лучше отражать волатильность.

  4. Настройка периода ATR и мультипликатора для дальнейшего совершенствования стратегии стоп-лосса.

  5. Проверьте длинный только выше EMA или короткий только ниже условий EMA и посмотрите, улучшает ли он показатель выигрыша.

  6. Включите индикаторы тенденции, чтобы определить, нужен ли досрочный выход.

Заключение

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


/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-12 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="[mdeacey] EMA% Channel + BB Range Strategy", shorttitle="[mdeacey] EMA% Channel + BB Range Strategy", overlay=true)

//EMA 200

len = input(title="EMA Length", type=input.integer, defval=200)
srce = input(title="EMA Source", type=input.source, defval=close)

ema1= ema(srce,len)

percent = input(title="Channel Percentage (%)", type=input.float, defval= 1) 
valuee = (percent*ema1)/100
upperbande = ema1 + valuee
lowerbande = ema1 - valuee


plot(ema1, title='EMA200', color=color.gray, linewidth=1, style=plot.style_line )
plot(upperbande, title='EMA Upper Band', color=color.gray, linewidth=1, style=plot.style_line )
plot(lowerbande, title='EMA Lower Band', color=color.gray, linewidth=1, style=plot.style_line )

length = input(20, minval=2)
src = input(close, title="Close price")
mult = input(2.0, minval=0.001, maxval=50)

MA2 = sma(src, length)
dev = mult * stdev(src, length)
upper = MA2 + dev
lower = MA2 - dev

signalColor = crossunder(close, upper) ? color.red : crossover(close, lower) ? color.green : color.white

barcolor(color=signalColor)


upperBand = plot(upper, color=color.gray, linewidth=1)
lowerBand = plot(lower, color=color.gray, linewidth=1)
fill(upperBand, lowerBand,color=color.gray)
strategy.entry("Long",true,when = crossover(close,lower)  and close <upperbande and close>lowerbande)
strategy.close("Long",when = crossunder(close,lowerbande))
strategy.entry("Short",false,when = crossunder(close,upper)  and close <upperbande and close>lowerbande)
strategy.close("Short",when = crossover(close,upperbande))

//Inputs
atrPeriod = input(defval=14, title="ATR Period",group='ATR Settings', type=input.integer) // Adjust this to change the ATR calculation length
multiplierPeriod = input(defval=1.75, title="ATR Multiplier Period",group='ATR Settings',  type=input.float)// Adjust this to change the distance between your candles and the line

//ATR Calculation
pine_rma(x, y) =>
    alpha = y
    sum = 0.0
    sum := (x + (alpha - 1) * nz(sum[1])) / alpha

true_range() =>
    max(high - low, max(abs(high - close[1]), abs(low - close[1])))

//Long SL
plot(low - pine_rma(true_range() * multiplierPeriod, atrPeriod), "Long Stop", color=color.red, offset = 1)
// Short SL
plot(high +pine_rma(true_range() * multiplierPeriod, atrPeriod), "Short Stop", color=color.red, offset = 1)
strategy.exit("Exit Long","Long",limit=upper ,stop = low - pine_rma(true_range() * multiplierPeriod, atrPeriod)  )
strategy.exit("eExit Short","Short",limit=lower ,stop =high +pine_rma(true_range() * multiplierPeriod, atrPeriod)  )


Больше