Эта стратегия основана на прорыве канала и использует скользящий средний перекресток в качестве выходного сигнала.
Вычислить самый высокий и самый низкий уровень за определенные периоды, чтобы построить верхний и нижний канал.
Пройти длинный, когда цена прорывается выше верхнего канала; пойти короткий, когда цена прорывается ниже нижнего канала.
Вычислите быструю и медленную линию SMA.
Если длинный, закрыть длинный, когда быстрая SMA пересекает медленную SMA; Если короткий, закрыть короткий, когда быстрая SMA пересекает медленную SMA.
Сочетание системы каналов и скользящих средних может повысить рентабельность.
Канал определяет ротацию, а SMA определяет истощение тренда.
Фильтр SMA позволяет избежать сбоев и уменьшить ненужные сделки.
Регулируемый диапазон каналов подходит для различных периодов и волатильности.
Неправильный диапазон канала может пропустить прорыв или вызвать ложный прорыв.
Неправильные параметры SMA могут выйти раньше или позже.
Нужно разумное размещение позиций, чтобы ограничить однократные потери.
Следите за действительным прорывом, избегайте погони за высоким / продажей низким.
Параметры испытаний для оптимизации диапазона каналов и периодов SMA.
Добавьте трендовый фильтр для улучшения успешности прорыва.
Добавьте размеров позиций, таких как фиксированная доля и Мартингейл.
Добавьте стоп-потеря для контроля одиночных потерь.
Эта стратегия использует канал и SMA для достижения устойчивых прибылей в сильных тенденциях. Но необходимо избегать потерь с помощью випса, и размещение позиций имеет решающее значение. Дальнейшие улучшения настроения параметров, фильтрации сигнала и управления рисками улучшат надежность.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-13 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © anshuanshu333 //@version=4 // strategy("ChBrkOutStrategySMA", overlay=true, initial_capital = 200000) length = input(title="Length", type=input.integer, minval=1, maxval=1000, defval=7) fastSMA = sma(close,9) slowSMA = sma(close,21) upBound = highest(high, length) downBound = lowest(low, length) boundLongEntry = ((close >= upBound) or (high >= upBound)) and fastSMA>slowSMA and (close > open) boundShortEntry =((close <= downBound) or (low <= downBound)) and fastSMA<slowSMA and (close <open) u=plot(upBound, title = "Upper Bound",color=color.blue, linewidth=1) l=plot(downBound, title = "Lower Bound",color=color.red, linewidth=1) plot(fastSMA,title = "Fast SMA", color = color.red, linewidth =2) plot(slowSMA,title = "Slow SMA" ,color = color.green, linewidth =1) fill(u,l, transp=95) plot(avg(upBound,downBound), title = "Avg", color=color.gray,linewidth =1) if (boundLongEntry ) strategy.entry("LE", long = true) if (boundShortEntry) strategy.entry("SE", long = false) SmaLongExit = crossunder(fastSMA,slowSMA) SmaShortExit = crossover(fastSMA,slowSMA) //Close TRades if (strategy.position_size > 0) strategy.close(id="LE",when= SmaLongExit) if (strategy.position_size < 0) strategy.close(id="SE",when= SmaShortExit)