
Обзор стратегии
Стратегия представляет собой систему торговли, которая отслеживает тенденции, основанные на Дончианском канале и средней реальной волновой amplitude (ATR). Стратегия использует среднюю орбиту Дончианского канала в 4-часовом цикле K-линии в зависимости от отклонения от текущей цены, в сочетании с ATR в качестве индикатора динамического колебания, чтобы искать возможности для входа и выхода в рыночных колебаниях.
Стратегический принцип
Основная логика стратегии основана на следующих ключевых элементах:
- Многоциклическая аналитическая структураСтратегия: выполнение сделки на 1 минуте K-линии, но с использованием 4 часов K-линии ((240 минут) для вычисления технических показателей данных, чтобы реализовать преимущества многоциклического анализа.
- Расчет тончжанского коридора: на основе 4-часовой K-линейной информации за 20 циклов, рассчитывается простое скользящее среднее цены на верхней (высочайшей), нижней (низшей) и средней (закрывающей) колебаниях.
- Динамический интервал установлен: использование в два раза больше ATR в качестве динамического интервала торгов, что позволяет стратегии адаптироваться к изменению волатильности рынка.
- Логика исполнения сделки:
- Первоначальное состояние ((без позиции): первая покупка выполняется, когда средняя полоса в канале Дончжан минус текущая цена больше установленного интервала.
- Позиционный режим: операция по повышению или снижению позиции проводится, когда разница между базовой ценой и текущей ценой превышает интервал.
- Управление позициями: фиксированная сумма за одну сделку ((5,1 USDT), количество сделок рассчитывается по текущей цене.
- Механизм выравнивания позиций: продажа осуществляется при превышении цены над интервалом, а при недостаточности позиций - продажа всех доступных позиций.
Стратегические преимущества
- Преимущества многоциклического анализа: путем совершения сделок в более короткие временные периоды (К-линия 1 минуты), но принятия решений на основе технических показателей с более длительными временными периодами (К-линия 4 часов), уменьшает помехи от шума на краткосрочном рынке, сохраняя при этом способность отслеживать среднесрочные и долгосрочные тенденции.
- Динамика адаптации к рыночным колебаниямИспользуя ATR в качестве индикатора волатильности, стратегия может автоматически корректировать интервалы торгов в зависимости от изменений волатильности рынка, устанавливая большие интервалы в высоко волатильных рынках и меньшие интервалы в низко волатильных рынках.
- Механизм строительства складской лестницыВ то время как цена продолжает падать, стратегия будет наращивать позиции в каждом промежуточном пункте, чтобы сократить риск для одной сделки.
- Фиксированная сумма сделки: использование фиксированной суммы, а не фиксированного количества, в соответствии с принципами управления рисками, чтобы избежать проблем с чрезмерным вложением в высоких ценах или недостаточным вложением в низких ценах.
- Полный дневникСтратегия реализует подробный учет дневника сделок и визуализацию ярлыков, включая информацию о типах сделок, ценах, интервалах, количестве и общем объеме позиций, что позволяет проводить анализ и оптимизацию стратегии.
Стратегический риск
- Риск изменения трендаВ случае сильного обратного тренда, стратегия может не успеть вовремя идентифицировать рыночный поворот, что приводит к значительным потерям после последовательных пополнений. Решение: введение индикатора подтверждения тренда или установление максимального количества пополнений.
- Опасность истощения средствВ условиях постоянного одностороннего движения, неоднократное нажимание фиксированной суммы может привести к слишком быстрому использованию или чрезмерной концентрации средств. Решение: установление ограничения на долю использования общего объема средств или динамическая корректировка суммы сделки.
- Параметр ЧувствительностьВыбор ATR-множества ((2x) и цикла Туньцзяньского канала ((20) имеет существенное влияние на эффективность стратегии, неправильная настройка параметров может привести к слишком большому или слишком малому количеству сигналов. Решение: поиск оптимальной комбинации параметров с помощью исторического отслеживания или реализация механизма самоадаптации параметров.
- Риск ликвидности: В низколиквидном рынке, рыночные цены могут привести к большому скольжению, влияя на эффективность фактической реализации стратегии. Решение: рассмотреть возможность использования лимитных цен или добавления условий фильтрации ликвидности.
- Накопление комиссионныхСтратегия: может быть частой торговлей, приводит к значительным расходам на торговлю (установить на 0,1%), может в долгосрочной перспективе разрушать прибыль. Решение: оптимизировать частоту торгов или рассмотреть возможность использования бирж с более низкими комиссиями.
Направление оптимизации стратегии
- Увеличение рыночных фильтров: в сочетании с волатильностью показателей (например, пропускная способность Бринна или ATR) оценить текущую рыночную обстановку, привести в соответствие с различными рыночными условиями, чтобы изменить параметры стратегии или приостановить торговлю. Таким образом, можно избежать потерь в стоимости, связанных с частотой торговли в низкой волатильности или волатильности рынка.
- Динамическая коррекция ATRATR-множитель может быть скорректирован в зависимости от динамики исторической волатильности или интенсивности рыночной тенденции, используйте меньший множитель в рынке с сильной тенденцией, чтобы более внимательно следить за ценой, и используйте больший множитель в рынке со колебаниями, чтобы уменьшить ошибочные сигналы.
- Внедрение механизма стоп-лоссаУстановка максимального предела потери или отслеживание стоп-лосса, чтобы предотвратить потерю одной сделки. Особенно после многократного набора позиций следует рассмотреть возможность установки комплексного уровня стоп-лосса для защиты средств.
- Оптимизация управления позициями: можно рассмотреть возможность использования убывающей или увеличивающейся суммы сделки, а не фиксированной суммы, в зависимости от размера созданной позиции или динамики волатильности рынка, для корректировки доли капитала в каждой сделке.
- Добавить фильтр времени транзакцииАнализируйте эффективность различных торговых периодов, избегайте неэффективных или рискованных периодов, таких как пересечение торговых периодов в Азии, Европе и Америке или до и после публикации важных экономических данных.
- Интеграция с другими показателямиВ качестве вспомогательного подтверждения можно использовать такие индикаторы, как RSI, MACD, чтобы повысить качество торгового сигнала и уменьшить вероятность ошибочного входа в рынок.
- Приспосабливание к циклическому процессу в Доньчжане: Периодичность расчета тончаньского канала в зависимости от динамики рынка, используйте более короткие циклы для повышения скорости реакции на высоко-волатильных рынках и более длинные циклы для снижения шума на низко-волатильных рынках.
Подвести итог
Многоциклическая торговая стратегия с динамическим интервалом ATR является количественной торговой системой, которая сочетает в себе технический анализ и управление рисками. Используя 4-часовые циклические данные для принятия решений на 1-минутной K-линии, стратегия позволяет эффективно отслеживать среднесрочные тенденции, а также использовать ATR для динамической корректировки торговых интервалов в соответствии с различными рыночными условиями.
Эта стратегия особенно подходит для рыночных условий с высокой волатильностью, но следует обратить внимание на риск обратного тренда и вопросы управления капиталом. С помощью дополнительных оптимизационных мер, таких как фильтрация рыночной среды, динамическая корректировка параметров и механизм остановки убытков, можно еще больше повысить устойчивость стратегии и ее долгосрочную прибыльность. В практическом применении рекомендуется проводить полное отслеживание, оптимизировать параметры для конкретных торговых видов и применять строгие меры контроля риска для обеспечения безопасности средств.
Исходный код стратегии
/*backtest
start: 2024-04-02 00:00:00
end: 2025-04-01 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/
//@version=5
strategy("Donchian Channel and ATR Strategy", overlay=true, currency="USDT", commission_type=strategy.commission.percent, commission_value=0.1)
// 用pine编写策略,实时执行。
// 获得suiusdt合约的4小时K线,用4小时k线20周期,计算唐奇安通道 和ATR。
// 最新的 ATR * 2 为间隔。每次买卖金额都是5.1usdt,根据金额计算交易数量。
// 策略基于1分钟k线执行。
// 开始时,baseprice为空。
// 如果 唐奇安通道中轨 - 当前价格 > 间隔, 则市价买入5.1usdt,记录成交价格为 baseprice。
// 重新计算计算唐奇安通道 和ATR, 还是使用4小时K线的20个周期。
// baseprice不为空,
// 如果 baseprice - 当前价格 > 间隔, 则市价买入5.1usdt,记录成交价格为 baseprice;
// 如果 当前价格 - baseprice > 间隔, 则市价卖出5.1usdt,记录成交价格为 baseprice。
// 卖出时,判断仓位是否足够卖出,不够则卖出剩余的仓位。卖出后,如果没有仓位了,设置baseprice为空。
// 标签和日志记录:买还是卖(buy/sell),初次买入标记为initBuy,价格,间隔,买入的数量,买入后仓位的总数量。
// 用不同颜色区分买卖。
// 获取4小时K线数据
resolution_4h = "240" // 4小时K线
high_4h = request.security(syminfo.tickerid, resolution_4h, high)
low_4h = request.security(syminfo.tickerid, resolution_4h, low)
close_4h = request.security(syminfo.tickerid, resolution_4h, close)
// 计算唐奇安通道和ATR(基于4小时K线)
length = 20
donchian_upper = ta.highest(high_4h, length)
donchian_lower = ta.lowest(low_4h, length)
donchian_middle = ta.sma(close_4h, length)
atr_value = ta.atr(length) // 使用4小时K线计算ATR
// 设置交易参数
trade_amount = 5.1 // 每次交易金额(USDT)
var float baseprice = na // 当前基准价格
var float total_position_qty = 0 // 总仓位数量
// 日志记录函数
log_trade(action, price, interval, qty, total_qty, color) =>
log_text = str.format("{0} @ {1} | Interval: {2} | Qty: {3} | Total Qty: {4}",
action, str.tostring(price), str.tostring(interval),
str.tostring(qty), str.tostring(total_qty))
// 策略逻辑
interval = atr_value * 2 // 间隔 = ATR * 2
if (na(baseprice))
if (donchian_middle - close > interval) // 使用1分钟K线的close价格判断
qty = trade_amount / close // 计算交易数量
strategy.entry("Buy", strategy.long, qty=qty)
baseprice := close // 更新基准价格
total_position_qty += qty // 更新总仓位数量
log_trade("initBuy", baseprice, interval, qty, total_position_qty, color.green) // 记录日志和标签
else
if (baseprice - close > interval) // 使用1分钟K线的close价格判断
qty = trade_amount / close
strategy.entry("Buy", strategy.long, qty=qty)
baseprice := close
total_position_qty += qty
log_trade("Buy", baseprice, interval, qty, total_position_qty, color.blue)
else if (close - baseprice > interval)
if (total_position_qty > 0)
qty = trade_amount / close
if (total_position_qty >= qty)
strategy.close("Buy", qty=qty)
total_position_qty -= qty
log_trade("Sell", baseprice, interval, qty, total_position_qty, color.red)
else
strategy.close("Buy")
total_position_qty := 0
log_trade("Sell (Full Position)", baseprice, interval, total_position_qty, 0, color.red)
baseprice := na // 清空基准价格
// 绘制唐奇安通道和ATR(基于4小时K线)
plot(donchian_upper, title="Donchian Upper", color=color.blue, linewidth=2)
plot(donchian_middle, title="Donchian Middle", color=color.orange, linewidth=2)
plot(donchian_lower, title="Donchian Lower", color=color.blue, linewidth=2)
plot(atr_value, title="ATR", color=color.red, linewidth=2)