Стратегия адаптивной тенденции на Дончианском канале

Автор:Чао Чжан, Дата: 2023-10-26 15:58:52
Тэги:

img

Обзор

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

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

  1. Вычислить самый высокий и самый низкий уровень за определенный период, чтобы сформировать Дончианский канал.

  2. Открыть длинную позицию, когда цена переходит верхнюю полосу канала. Открыть короткую позицию, когда цена переходит ниже нижней полосы.

  3. После открытия позиций, стоп-лосс отслеживает среднюю линию канала.

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

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

  1. Стратегия использует Дончянский канал для определения направления тренда и быстрого обнаружения прорывов.

  2. Использование средней линии канала для отслеживания стоп-лосса защищает прибыль.

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

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

  5. Простая и понятная логика торговли, легко понятная и освоенная.

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

  1. Стратегия торгует только прорывами и не может эффективно управлять консолидацией.

  2. Существует риск ложных сигналов прорыва, другие показатели необходимы для проверки.

  3. Неправильные параметры стоп-лосса и прибыли могут привести к досрочному выходу или недостаточной прибыли.

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

  5. Чрезмерное размещение позиций увеличивает риски колебаний рынка.

  6. Существуют риски неожиданного отключения робота, обеспечивают надежность системы.

Руководство по улучшению

  1. Добавьте индикаторы громкости, чтобы избежать ложных прорывов.

  2. Увеличить фильтры индикаторов тренда для улучшения точности входного сигнала.

  3. Оптимизируйте динамические алгоритмы стоп-лосса и прибыли.

  4. Корректировать стратегию размещения позиций на основе рыночных условий в реальном времени.

  5. Исследование данных за ночь и до выхода на рынок для лучшего планирования входа.

  6. Испытывайте различные периоды параметров, чтобы найти оптимальные комбинации.

  7. Добавить проверку модели, чтобы избежать переподготовки.

Заключение

В целом, это простая и практичная адаптивная стратегия следования тренду. Она имеет такие преимущества, как быстрое захват прорывов тренда и защита прибыли. Она также имеет такие недостатки, как неэффективность во время консолидации и потери от ложных прорывов. Будущие улучшения заключаются в включении большего фильтрации сигналов, динамической стоп-лосс / прибыли, чтобы адаптироваться к большему количеству рыночных условий.


/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy(title = "Noro's Donchian Strategy", shorttitle = "Donchian str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
tp = input(defval = 10, minval = 1, title = "Take profit")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
pclen = input(50, minval = 1, title = "Price Channel Length")
showll = input(true, defval = true, title = "Show lines")
showbg = input(false, defval = false, title = "Show Background")
showof = input(true, defval = true, title = "Show Offset")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Price Channel
h = highest(high, pclen)
l = lowest(low, pclen)
center = (h + l) / 2
tpl = h * (100 + tp) / 100
tps = l * (100 - tp) / 100

//Lines
tpcol = showll ? color.lime : na
pccol = showll ? color.blue : na
slcol = showll ? color.red : na
offset = showof ? 1 : 0
plot(tpl, offset = offset, color = tpcol, title = "TP Long")
plot(h, offset = offset, color = pccol, title = "Channel High")
plot(center, offset = offset, color = slcol, title = "Cannel Center")
plot(l, offset = offset, color = pccol, title = "Channel Low")
plot(tps, offset = offset, color = tpcol, title = "TP Short")

//Background
size = strategy.position_size
bgcol = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(bgcol, transp = 70)

//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
mo = 0
mo := strategy.position_size != 0 ? 0 : high >= center and low <= center ? 1 : mo[1]
if h > 0
    strategy.entry("Long", strategy.long, lot, stop = h, when = strategy.position_size <= 0 and needlong and truetime and mo)
    strategy.exit("TP Long", "Long", limit = tpl, stop = center)
    strategy.entry("Short", strategy.short, lot, stop = l, when = strategy.position_size >= 0 and needshort and truetime and mo)
    strategy.exit("TP Short", "Short", limit = tps, stop = center)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")

Больше