Стратегия черепахи двойного канала

Автор:Чао Чжан, Дата: 2024-01-05 16:16:44
Тэги:

img

Обзор

Стратегия Double Channel Breakthrough Turtle - это стратегия прорыва, которая генерирует торговые сигналы с использованием индикатора Дончианского канала. Стратегия устанавливает одновременно как быстрые, так и медленные каналы. Быстрый канал используется для установки цен на стоп-лосс, в то время как медленный канал используется для генерации сигналов открытия и закрытия.

Принципы

Основная логика стратегии Double Channel Breakthrough Turtle основана на индикаторе Дончианского канала. Дончианский канал состоит из верхней рельсы, нижней рельсы и средней рельсы, рассчитанной на основе самых высоких и самых низких низких цен. Эта стратегия создает одновременно как быстрые, так и медленные каналы, с параметрами, установленными пользователем, и периодами по умолчанию 50 бар для медленного канала и 20 бар для быстрого канала.

Верхние и нижние рельсы (голубые линии) медленного канала используются для генерации торговых сигналов. Когда цена проходит через верхнюю рельсу, перейдите в длинную; когда цена проходит ниже нижней рельсы, перейдите в короткую. Средняя рельса (красная линия) быстрого канала используется для остановки потери. Стоп-лосс для длинных позиций - это средняя рельса быстрого канала; цена остановки потери для коротких позиций - это также средняя рельса быстрого канала.

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

Кроме того, стратегия также устанавливает процент риска и размер позиции. Процент риска не выполняется до 2%, а размеры позиций рассчитываются на основе процента риска и волатильности канала. Это эффективно контролирует риск по торговле и постепенное увеличение позиции.

Преимущества

Стратегия "двухканального прорыва" имеет следующие преимущества:

  1. Сильная способность отслеживания трендов. Использование Donchian Channel для определения тенденций может эффективно улавливать средне- и долгосрочные тенденции. Дизайн двойного канала гарантирует, что стратегия отслеживает только сильные трендовые рынки.

  2. Хороший снижение и контроль рисков. Средняя рельса быстрого канала действует как стоп-потеря, поэтому от верхней до средней рельсы и нижней до средней рельсы являются зонами риска. Это обеспечивает контролируемую потерю на торговую сделку. Стратегия также устанавливает процент риска, чтобы напрямую ограничить максимальную потерю счета.

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

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

  5. Интуитивное визуализирование. Двойные каналы, линии остановки потерь, фоновый план позиций все четко намечены для легкого понимания логики стратегии. Между тем также отображаются максимальное снижение, максимальная потеря и другие ключевые показатели.

Риски

Стратегия двухканального прорыва черепахи также сопряжена с некоторыми рисками:

  1. Не в состоянии эффективно использовать внутридневные цены. Черепаха открывает позиции только на прорывах канала, не в состоянии использовать более точную ситуацию для увеличения позиций. Это может быть улучшено путем оптимизации.

  2. Точки остановки убытков склонны к охоте. Фиксированная потеря остановки среднего рельса черепахи может быть легко достигнута на активных рынках. Это требует динамической регулировки параметров среднего рельса.

  3. Параметры двойного канала нуждаются в тонкой настройке. Правильное настройка параметров имеет решающее значение для разумного стабильного сигнала. Нынешние фиксированные параметры не могут адаптироваться к изменениям рынка, необходимо внедрить адаптивные функции.

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

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

Основными направлениями оптимизации для стратегии Double Channel Breakthrough Turtle являются:

  1. Использование внутридневных цен для корректировки позиций. Позиции могут быть скорректированы на основе расстояния цены от канала, а не просто длинного / короткого.

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

  3. Адаптивная оптимизация параметров канала. Позволяет автоматически регулировать параметры канала на основе рыночных условий вместо ручных фиксированных значений.

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

  5. Применить стратегию к нескольким акциям, с возможностями арбитража между акциями и индексами для улучшения альфы.

Заключение

В заключение, стратегия Double Channel Breakthrough Turtle - это общая стабильная, эффективная стратегия с встроенным контролем рисков. Двойное использование быстрых и медленных каналов обеспечивает как стабильность сигнала, так и управление рисками. Кроме того, фон позиции, максимальное снижение и размещение позиции также делают эту стратегию легко управляемой и оптимизируемой.


/*backtest
start: 2023-12-05 00:00:00
end: 2024-01-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy("Noro's RiskTurtle Strategy", shorttitle = "RiskTurtle 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")
risk      = input(2, minval = 0.1, maxval = 99, title = "Risk size, %")
fast      = input(20, minval = 1, title = "Fast channel (for stop-loss)")
slow      = input(50, minval = 1, title = "Slow channel (for entries)")
showof    = input(true, defval = true, title = "Show offset")
showll    = input(true, defval = true, title = "Show lines")
showdd    = input(true, defval = true, title = "Show label (drawdown)")
showbg    = input(true, defval = true, title = "Show background")
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")

//Donchian price channel fast
hf = highest(high, fast)
lf = lowest(low, fast)
center = (hf + lf) / 2

//Donchian price chennal slow
hs = highest(high, slow)
ls = lowest(low, slow)

//Lines
colorpc = showll ? color.blue : na
colorsl = showll ? color.red : na
offset = showof ? 1 : 0
plot(hs, offset = offset, color = colorpc, title = "Slow channel high")
plot(ls, offset = offset, color = colorpc, title = "Slow channel low")
plot(center, offset = offset, color = colorsl, title = "Fast channel stop-loss")

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

//Var
loss = 0.0
maxloss = 0.0
equity = 0.0
truetime = true

//Lot size
risksize = -1 * risk
risklong = ((center / hs) - 1) * 100
coeflong = abs(risksize / risklong)
lotlong = (strategy.equity / close) * coeflong
riskshort = ((center / ls) - 1) * 100
coefshort = abs(risksize / riskshort)
lotshort = (strategy.equity / close) * coefshort

//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and hs > 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and ls > 0 and truetime)
strategy.exit("LongExit", "Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")
    
if showdd

    //Drawdown
    max = 0.0
    max := max(strategy.equity, nz(max[1]))
    dd = (strategy.equity / max - 1) * 100
    min = 100.0
    min := min(dd, nz(min[1]))
    
    //Max loss size
    equity := strategy.position_size == 0 ? strategy.equity : equity[1]
    loss := equity < equity[1] ? ((equity / equity[1]) - 1) * 100 : 0
    maxloss := min(nz(maxloss[1]), loss)
    
    //Label
    min := round(min * 100) / 100
    maxloss := round(maxloss * 100) / 100
    labeltext = "Drawdown: " + tostring(min) + "%" + "\nMax.loss " + tostring(maxloss) + "%"
    var label la = na
    label.delete(la)
    tc = min > -100 ? color.white : color.red
    osx = timenow + round(change(time)*10)
    osy = highest(100)
    // la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)

Больше