
Эта стратегия основана на известном методе торговли шелковыми песками, используя Donchian channel indicator для определения ценового прорыва и в сочетании с ATR indicator для установления стоп-лосса для отслеживания тенденций. Преимущество стратегии заключается в том, что она обладает мощным контролем отступления, эффективно контролирует одиночные стопы и снижает вероятность последовательных потерь.
Стратегия основана на двух показателях: Дончианский канал и ATR.
Канал Donchian рассчитывается из максимальной и минимальной цены. По умолчанию стратегия устанавливает длительность канала в 20 дней. Канал Donchian рисует максимальную и минимальную цены в течение 20 дней.
ATR-индикатор используется для измерения степени волатильности рынка и установки стоп-ложа. По умолчанию ATR-цикл установлен на 20 дней. Стратегия использует вдвое больше ATR в качестве стоп-ложа.
Конкретная логика сделки заключается в следующем:
Если цена пробивается вверх по каналу, то нужно сделать дополнительный вход.
Стоп-стоп - это минимальная цена при входе за вычетом ATR в два раза.
Когда цена пробивается вниз по каналу, выровняйте позиции.
Когда цена прорывается вниз по каналу, деактивируйте вход.
Стоп-стоп - это максимальная цена при входе, плюс два раза ATR.
Когда цена прорывается вдоль верхней части канала, первая позиция становится пустой.
В целом, стратегия опирается на Donchian channel для определения направления тренда и времени входа, чтобы контролировать риск с помощью ATR-стоп-лосс и отслеживать тренд.
Основные преимущества этой стратегии:
Сильная способность к контролю за отступлением. Используйте показатель ATR для установки стоп-лосса, чтобы эффективно контролировать одиночные потери.
Тренд-трекер. Donchian channel может эффективно определять ценовые прорывы и указывать на переход тренда.
Подходит для высоко волатильных сортов. ATR-индикатор учитывает волатильность рынка, и установка стоп-лосса лучше соответствует характеристикам различных сортов.
Стратегическая концепция проста, ясна и понятна.
Гибкость в программировании и оптимизации на языке Python.
Однако есть и другие риски, о которых следует помнить:
Параметры каналов должны быть оптимизированы. При различных сортах и временных периодах параметры каналов должны быть адаптированы к рыночным особенностям.
Риск последовательного прекращения убытков. При необычных обстоятельствах может быть вызвано несколько остановок в течение короткого периода времени, что приведет к большим убыткам.
ATR параметры требуют тестирования. ATR параметры напрямую влияют на эффект сдерживания убытков, при необходимости корректировки в зависимости от разных сортов и волатильных условий.
Частота торговли может быть слишком высокой. Слишком много перекрестных сигналов может возникнуть на колеблющихся рынках, где тенденция не очевидна.
Прибыль может быть ограниченной. Стратегия, основанная на остановке убытков, не может эффективно зафиксировать полный рост тенденции.
В некоторых экстраординарных ситуациях ценовые скачки могут непосредственно вызвать убытки.
Эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизация параметров каналов, тестирование адаптации различных параметров к различным видам.
Добавление фильтрационных условий, чтобы избежать избыточного сигнала в шокирующей ситуации. Можно рассмотреть фильтрацию прорывной величины или объема торгов.
Оптимизация параметров цикла ATR, тестирование влияния различных параметров на эффекты сдерживания убытков.
Добавление пирамидных входных стратегий, добавление позиций в трендовых ситуациях, расширение пространства для получения прибыли.
В сочетании с другими показателями, повышает эффективность фильтрации. Такие показатели, как MACD, KD, определяют тенденцию, избегая обратной торговли.
Оптимизация стоп-стоп в зависимости от стоимости сделки, например, от скольжения, комиссий и т. д.
Тестирование адаптации различных сортов, корректировка параметров для конкретных сортов.
Эта стратегия представляет собой вводную версию метода торговли шелковицей. В целом, стратегия проста и понятна, и она может эффективно проверять принципы метода торговли шелковицей. Однако эта стратегия слабо адаптируется к торговым видам, и для эффективного использования стратегии требуется оптимизация параметров в зависимости от разных видов.
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//Based on Turtle traders strategy: buy/sell on Donchian breakouts and stop loss on ATR 2x
// initial version considerations :
//// 1. Does not consider filter for avoiding new entries after winning trades (filtering rule from Turtle Strategy on 20 day breakout strategy)
//// 2. Does not consider pyramiding (aditional entries after 1N price movements)
strategy("Turtle trading strategy (Donchian/ATR)", overlay=true)
enter_period = input(20, minval=1, title="Enter Channel")
exit_period = input(10, minval=1, title="Exit Channel")
offset_bar = input(0,minval=0, title ="Offset Bars")
direction = input("Long",options=["Long","Short"],title="Direction")
max_length = max(enter_period,exit_period)
atrmult = input(2,title="ATR multiplier (Stop Loss)")
atrperiod = input(20,title="ATR Period")
closed_pos = false
dir_long = direction == "Long"? true : false
atr = atr(atrperiod)
upper = dir_long ? highest(enter_period): highest(exit_period)
lower = dir_long ? lowest(exit_period): lowest(enter_period)
atrupper = close + atr
atrlower = close - atr
plotted_atr = dir_long ? atrlower : atrupper
//basis = avg(upper, lower)
l = plot(lower, style=line, linewidth=3, color=lime, offset=1)
u = plot(upper, style=line, linewidth=3, color=lime, offset=1)
a = plot(plotted_atr, style=line,linewidth=2,color=red,offset=1)
//plot(basis, color=yellow, style=line, linewidth=1, title="Mid-Line Average")
//break upper Donchian (with 1 candle offset) (buy signal)
break_up = (close >= upper[1])
//break lower Donchian (with 1 candle offset) (sell signal)
break_down = (close <= lower[1])
stop_loss = dir_long ? (close<=plotted_atr[1]) : (close>=plotted_atr[1])
if break_up and dir_long
strategy.entry("buy", strategy.long, 1)
closed_pos :=false
if (break_down or stop_loss) and dir_long
strategy.close("buy")
if break_down and not dir_long
strategy.entry("sell", strategy.short, 1)
closed_pos :=false
if (break_up or stop_loss) and not dir_long
strategy.close("sell")
closed_pos :=true
losing_trade = strategy.equity[0]<strategy.equity[1]
//plotshape(losing_trade,text="Losing!")
plotshape(stop_loss,style=dir_long?shape.labeldown:shape.labelup,text="Stop!")
//plot(strategy.equity)