Двухканальная стратегия Turtle - это стратегия, которая использует Donchian channel для создания торговых сигналов. Эта стратегия одновременно создает быстрый и медленный каналы. Быстрый канал используется для установки цены стоп-лосса, а медленный канал для создания сигналов открытия и прекращения позиции.
Основная логика стратегии “Turtle” основана на показателях Donchian channel. Donchian channel рассчитывается из максимальной и минимальной цены, включает в себя верхнюю, нижнюю и среднюю колеи. Стратегия одновременно создает быстрые и медленные каналы, параметры которых устанавливаются пользователем, и по умолчанию медленный канал имеет цикл 50 K-линий, а быстрый - 20 K-линий.
Верхняя и нижняя полосы медленного канала (синяя линия) используются для создания торговых сигналов. Когда цена прорывает верхнюю полосу, делать больше; когда цена падает ниже нижней полосы, делать пустое. Средняя полоса быстрого канала (красная линия) используется для остановки.
Таким образом, медленный канал отвечает за генерирование сигнала, быстрый канал отвечает за остановку убытков, использование двух каналов в сочетании обеспечивает стабильность торговых сигналов и контролирует риск. Цвет фона указывает на направление текущей позиции, зеленый - многоголовый, красный - пустой.
Кроме того, стратегия также устанавливает степень риска и управление позициями. Степень риска считается по умолчанию 2%, позиции рассчитываются по степени риска и канальной волатильности. Таким образом, можно эффективно контролировать каждый риск и постепенно наращивать позиции.
Двухканальная стратегия прорыва Turtle имеет следующие преимущества:
Умение отслеживать тренды. Используя Donchian channel для определения трендов, можно эффективно улавливать средние и длинные тренды. Двухканальная конструкция позволяет стратегии отслеживать только ситуации с более сильными тенденциями.
Отступление и контроль риска. Средняя полоса быстрого прохождения делает остановку, от верхней до средней полосы и от нижней до средней полосы - это зона риска, что гарантирует, что каждый убыток контролируется.
Торговый сигнал стабилен. У медленного канала есть большие параметры, формирование канала требует большего времени, что позволяет избежать частых торгов. В то время как быстрый канал может быть использован в качестве стоп-лосса, чтобы уловить краткосрочную корректировку.
Совершенствование управления позициями и рисками. Стратегия использования волатильности Дончианского канала для расчета размера позиций и контроля над рисковыми отверстиями. Постепенное наращивание позиций также позволяет более сбалансированным позициям в открытых позициях.
Интуитивное визуализация индикаторов. Двойные каналы, стоп-линии и фоны позиций четко изображены, логика торговли очевидна. В то же время показываются ключевые показатели, такие как максимальный отвод, максимальная потеря.
В то же время, существуют определенные риски, связанные с двусторонним прорывом в Turtle:
Невозможно эффективно использовать цены в диапазоне. Стратегия Turtle открывает позиции только при прорыве канала и не может использовать более точные ситуации для увеличения позиции. Это может быть улучшено путем оптимизации.
Стоп-стоп легко отслеживается. Стоп-стоп стратегии Turtle - это фиксированная средняя полоса быстрого прохода. В активных рынках это может быть прикрыто стоп-стопом.
Двухканальные параметры требуют тонкой настройки. Параметры каналов должны быть настроены правильно, чтобы создавать разумно стабильный сигнал. Текущие фиксированные параметры не могут адаптироваться к изменениям рынка, поэтому необходимо ввести функцию самоадаптации.
Невозможно использовать информацию о ночных дисках и преддисках. Текущая стратегия основана только на определении тенденций в реальных дисках. Невозможно использовать преддиска и последиска для руководства торговыми решениями.
Двухканальный прорыв в стратегии Turtle включает в себя следующие направления оптимизации:
Позиции на диске можно корректировать в зависимости от расстояния между ценой и каналом, вместо того, чтобы просто делать дополнительные пробелы.
Интеллектуализация стратегии увеличения стоп-убытков. Переход от фиксированных стоп-убытков к динамическим, чтобы избежать отслеживания стоп-убытков.
Самовольная оптимизация параметров каналов. Параметры каналов могут автоматически корректироваться в зависимости от рыночных условий, а не устанавливаться вручную.
Добавление до и после закрытия рыночных оценок. В стратегических оценках следует обращать внимание не только на реальные цены, но и на цены до и после закрытия, чтобы получить более полную информацию о рыночной ситуации.
В сочетании с несколькими акциями или индексами. Применение стратегии к нескольким акциям, арбитраж может быть настроен между различными акциями и индексами, чтобы получить альфа.
Двухканальная стратегия для прорыва в 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)