Стратегия прорыва на Дончианском канале.

Автор:Чао Чжан, Дата: 2023-09-19 21:47:41
Тэги:

Обзор

Данная стратегия использует индикатор Donchian Channel для торговли прорывами верхней и нижней полос, позволяя следовать за трендом операций по акциям/фьючерсам/крипто/форекс и т.д., относящихся к средне- и долгосрочным стратегиям прорыва тренда.

Логика стратегии

  1. Вычислить самый высокий и самый низкий уровень за данный период (например, 20 дней), чтобы получить верхнюю и нижнюю полосы.

  2. Средняя линия - это среднее значение верхней и нижней полос.

  3. Когда цена закрывается выше верхней полосы, определите, что начался восходящий тренд, идите длинным, чтобы войти.

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

  5. Может ссылаться на временные рамки обратного тестирования для генерации фактических торговых сигналов.

  6. По желанию, перерыв нижней полосы также может служить коротким сигналом.

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

Анализ преимуществ

  1. Дончианский канал прост в расчете и внедрении.

  2. Прорыв цены сигнализирует об изменении тренда.

  3. Средний уровень получения прибыли разумно установлен.

  4. Ясные правила сигнализации, легко выполняемые.

  5. Может гибко регулировать параметры канала для различных продуктов и временных рамок.

  6. Может оценивать долгосрочные или краткосрочные результаты торговли.

  7. Большое расширение пространства, может ввести другие технические показатели.

Анализ рисков

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

  2. Не учитывает расхождение до прорыва, может генерировать ложные сигналы.

  3. Фиксированный средний стоп-лосс, чувствительный к волатильности рынка.

  4. Неправильный период обратного тестирования рискует переустановить.

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

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

  1. Тестировать и оптимизировать параметры периода канала.

  2. Оценивать другие типы MA как линии стоп-лосса.

  3. Добавьте фильтры, например, индикаторы громкости.

  4. Добавить механизмы движения или задержки стоп-лосса.

  5. Внедрить машинное обучение для прогнозирования ценовых спадов.

  6. Оптимизировать управление деньгами, установить коэффициент прибыли и т.д.

  7. Подумайте о сочетании долгосрочных/короткосрочных операций или нескольких продуктов.

Резюме

Данная стратегия использует Дончианский канал для определения направления тренда, торгового прорыва, типичного средне- и долгосрочного подхода к тренду.


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



Больше