Стратегия торговли на основе процентного канала EMA и полос Боллинджера


Дата создания: 2023-11-13 17:38:01 Последнее изменение: 2023-11-13 17:38:01
Копировать: 0 Количество просмотров: 854
1
Подписаться
1617
Подписчики

Стратегия торговли на основе процентного канала EMA и полос Боллинджера

Обзор

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

Для трендовых рынков рекомендуется использовать сопутствующий криптовалютный EMA-процентный канал и стратегию трендового трейдинга по ленте Брин.

Принципы

  1. Исчисление EMA 200 циклов в качестве базовой EMA.

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

  3. Вычислить 20 циклов по пулинской полосе и изобразить диапазон каналов.

  4. Сделайте больше, когда цена закрытия спускается вверх, чтобы прорваться вниз по линии Бринга; сделайте больше, когда цена закрытия спускается вверх, чтобы прорваться вниз по линии Бринга.

  5. Используйте ATR для расчета стоп-лосса и избегайте слишком больших потерь.

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

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

  1. Используя EMA в качестве ориентира, можно лучше улавливать точки перехода тренда.

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

  3. Брин-пояса обеспечивают опору и сопротивление, помогают определить время входа в игру.

  4. Используйте ATR trailing stopdynamically, чтобы установить стоп-лосс и эффективно контролировать риски в каждой сделке.

  5. Если цена выходит за пределы канала, все позиции ликвидируются, и можно быстро контролировать потери.

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

Риск

  1. Если процентный канал слишком широк, то можно пропустить тренд или не допустить несвоевременного потери.

  2. Если процентные каналы слишком узкие, это может привести к слишком частому обращению и увеличению стоимости транзакций.

  3. Неправильная настройка параметров Брин-полосы также может привести к пропущенным торговым возможностям.

  4. Слишком мягкая установка точки остановки может привести к слишком большим потерям.

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

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

  1. Испытание различных параметров цикла EMA, чтобы найти наиболее подходящий среднелинейный цикл.

  2. Оптимизируйте параметры процента канала, чтобы найти оптимальный диапазон канала.

  3. Регулирование параметров циклов пояса Бурин, оптимизация эффекта захвата колебаний.

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

  5. Проверьте, сможете ли вы выполнить более высокие или более низкие условия.

  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)  )