Данная стратегия использует индикатор Donchian Channel для торговли прорывами верхней и нижней полос, позволяя следовать за трендом операций по акциям/фьючерсам/крипто/форекс и т.д., относящихся к средне- и долгосрочным стратегиям прорыва тренда.
Вычислить самый высокий и самый низкий уровень за данный период (например, 20 дней), чтобы получить верхнюю и нижнюю полосы.
Средняя линия - это среднее значение верхней и нижней полос.
Когда цена закрывается выше верхней полосы, определите, что начался восходящий тренд, идите длинным, чтобы войти.
Когда цена опустится ниже средней линии, возьмите прибыль, чтобы выйти.
Может ссылаться на временные рамки обратного тестирования для генерации фактических торговых сигналов.
По желанию, перерыв нижней полосы также может служить коротким сигналом.
Стратегия определяет начало тренда путем прорыва канала, использует среднюю линию в качестве выхода из прибыли, фиксируя среднесрочные и долгосрочные тенденции.
Дончианский канал прост в расчете и внедрении.
Прорыв цены сигнализирует об изменении тренда.
Средний уровень получения прибыли разумно установлен.
Ясные правила сигнализации, легко выполняемые.
Может гибко регулировать параметры канала для различных продуктов и временных рамок.
Может оценивать долгосрочные или краткосрочные результаты торговли.
Большое расширение пространства, может ввести другие технические показатели.
Прорыв канала может задержаться, рискуя упустить первые возможности.
Не учитывает расхождение до прорыва, может генерировать ложные сигналы.
Фиксированный средний стоп-лосс, чувствительный к волатильности рынка.
Неправильный период обратного тестирования рискует переустановить.
Не хватает стоп-лосса, нужно следить за увеличенными потерями.
Тестировать и оптимизировать параметры периода канала.
Оценивать другие типы MA как линии стоп-лосса.
Добавьте фильтры, например, индикаторы громкости.
Добавить механизмы движения или задержки стоп-лосса.
Внедрить машинное обучение для прогнозирования ценовых спадов.
Оптимизировать управление деньгами, установить коэффициент прибыли и т.д.
Подумайте о сочетании долгосрочных/короткосрочных операций или нескольких продуктов.
Данная стратегия использует Дончианский канал для определения направления тренда, торгового прорыва, типичного средне- и долгосрочного подхода к тренду.
/*backtest start: 2023-09-11 00:00:00 end: 2023-09-15 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //future strategy //strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1, overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2) //stock strategy strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005) //forex strategy //strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true) //crypto strategy //strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=10000) testStartYear = input(2000, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testEndYear = input(2018, "Backtest Start Year") testEndMonth = input(12, "Backtest Start Month") testEndDay = input(1, "Backtest Start Day") testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testPeriod() => true //time >= testPeriodStart ? true : false dcPeriod = 20 dcUpper = highest(close, dcPeriod)[1] dcLower = lowest(close, dcPeriod)[1] dcAverage = (dcUpper + dcLower) / 2 plot(dcLower, style=line, linewidth=3, color=red, offset=1) plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1) plot(dcAverage, color=yellow, style=line, linewidth=1, title="Mid-Line Average") strategy.entry("simpleBuy", strategy.long, when=close >= dcUpper) strategy.close("simpleBuy",when=close < dcAverage) //strategy.entry("simpleSell", strategy.short,when=close <= dcLower) //strategy.close("simpleSell",when=close > dcAverage)