Эта стратегия основана на выборе пользователем EMA и определенного процентного канала. Она длинна, когда цена ниже верхней полосы, и коротка, когда цена выше нижней полосы. Если цена начинает трендировать и движется за пределами канала, все позиции закрываются, чтобы предотвратить потерю.
Для трендовых рынков вместо этого следует использовать сестринский
Вычислить 200-периодную EMA как базовую EMA.
Вычислить верхнюю и нижнюю полосы на основе определенного пользователем процента: Верхняя полоса = EMA * (1 + %) Нижняя полоса = EMA * (1 - процент)
Вычислить 20-периодные полосы Боллинджера для отображения диапазона канала.
Пройдите длинный курс, когда цена закрытия пересекает нижнюю полосу Боллинджера снизу. Пройдите короткий курс, когда цена закрытия пересекает верхнюю полосу Боллинджера снизу.
Использовать ATR для расчета стоп-лосса, чтобы избежать чрезмерных потерь.
Если цена выходит за пределы определенного диапазона процентного канала, закрыть все позиции, чтобы избежать дальнейших потерь.
Базовая линия EMA помогает лучше отслеживать моменты переворота тренда.
Процентный канал устанавливает разумный диапазон торговли, чтобы избежать переторговли.
Боллингерские полосы обеспечивают поддержку и уровни сопротивления для облегчения времени входа.
ATR Trailing Stop динамически устанавливает стоп-лосс для эффективного контроля риска по сделке.
Закрытие всех позиций, когда цена проходит через канал, быстро контролирует потери.
Настраиваемые параметры гибки для различных рыночных условий.
Слишком широкий диапазон каналов может пропустить тренды или задержать остановку потерь.
Слишком узкий диапазон каналов может привести к перегрузке и увеличению затрат на транзакции.
Плохие параметры Bollinger Bands могут привести к упущенным торговым возможностям.
Превышение порога стоп-лосса может привести к чрезмерным потерям на одну сделку.
Параметры должны быть оптимизированы, чтобы найти оптимальный диапазон торговли.
Проверьте различные периоды EMA, чтобы найти наиболее подходящую скользящую среднюю.
Оптимизировать процентные параметры канала для определения оптимального диапазона канала.
Корректировать период полос Боллинджера, чтобы лучше отражать волатильность.
Настройка периода ATR и мультипликатора для дальнейшего совершенствования стратегии стоп-лосса.
Проверьте длинный только выше EMA или короткий только ниже условий EMA и посмотрите, улучшает ли он показатель выигрыша.
Включите индикаторы тенденции, чтобы определить, нужен ли досрочный выход.
Эта стратегия сочетает в себе сильные стороны скользящих средних, каналов, волатильности и многого другого, чтобы создать относительно стабильную торговую систему диапазона.
/*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) )