
Эта стратегия является односторонней многосторонней торговой системой, основанной на блокчейне Renko, с механизмом временной фильтрации, разработанной специально для конкретных торговых периодов. Эта стратегия использует ATR (средняя величина реальной колебательности) для динамической корректировки размера блока, чтобы идентифицировать восходящие тенденции путем отслеживания ценового движения блока, который образуется, и выполнять многосторонние сделки только в течение указанного периода торговли.
Эта стратегия основана на следующих ключевых принципах:
Строительные механизмы блок-карты: Система определяет размер блока двумя способами - фиксированным или динамическим корректировкой на основе ATR. В режиме ATR размер блока равен значению ATR для определенного периода ((по умолчанию 5) умноженному на кратное число ((по умолчанию 1.0)), что позволяет размер блока адаптироваться к волатильности рынка.
Логика определения направления: стратегия отслеживает изменения цены, когда цена по отношению к предыдущему блоку закрывается, когда цены растут больше, чем размер блока, образуют подъемные блоки; падение больше, чем размер блока, образует понижательные блоки; изменение цены более чем в два раза больше, чем размер блока, образует обратный тренд.
Создание торгового сигнала: Сигнал покупается, когда направление блока никогда не определяется или снижение превращается в повышение; сигнал продается, когда направление блока никогда не определяется или повышение превращается в снижение.
Фильтр времениСтратегия: совершать сделки только в установленные торговые часы (по умолчанию с 04:35 до 14:30) - это время, которое обычно соответствует активным часам основного рынка. Покидая торговые часы, система автоматически устраняет позиции, чтобы избежать риска на ночь.
Односторонние сделкиСтратегия: выполнение только многообещающих сделок, без операций по открытому курсу, подходящая для рыночных условий, в которых наблюдается явная тенденция к повышению или запрещается открытый курс.
Основываясь на анализе кода, эта стратегия имеет следующие значительные преимущества:
Фильтрация шумаБлокированный график обладает естественной способностью фильтровать рыночный шум, формируя новые блоки только при изменении цены выше определенного порога, эффективно избегая чрезмерной реакции на небольшие колебания цен.
СаморегулированиеДвижущаяся коррекция размеров блоков с помощью ATR позволяет стратегии адаптироваться к различным рыночным условиям и волатильности, увеличивая размер блока в период высокой волатильности и уменьшая его в период низкой волатильности.
Управление рискамиВременный фильтр обеспечивает, чтобы сделки проводились только в самые активные и наиболее ликвидные часы рынка, избегая возможных периодов недостаточной ликвидности или аномальных колебаний, таких как ночные и утренние часы.
Направление ясно.Стратегия ориентирована на то, чтобы уловить тенденцию к росту, логика была четкой и понятной, избегая частого обращения и потерь комиссионных, вызванных перемещением.
Визуальная помощьСтратегия предлагает возможность визуализировать этикетки сигналов покупки и продажи и высокие и низкие точки блока, что позволяет трейдерам непосредственно понимать динамику рынка и эффективность стратегии.
Управление деньгамиПрименение количественной модели торговли капиталом, позволяющей автоматически рассчитывать размер позиции в зависимости от первоначального капитала, снижает сложность управления капиталом.
Несмотря на разумную конструкцию, существуют следующие потенциальные риски:
Задержка реакцииБлокированный график по сути является отстающим индикатором, формирование новых блоков требует, чтобы цена достигла определенного уровня движения, что может привести к относительной задержке времени входа и выхода, что может привести к упущению лучших точек торговли в быстро меняющемся рынке.
Отсутствие гибкости в коротких линияхПри этом, как отмечается в статье, “поскольку стратегия дает сигналы только при формировании новых блоков, она может упустить возможность получения прибыли в краткосрочной перспективе, особенно в условиях нестабильных рынков”.
Односторонние ограниченияВ течение длительного периода времени, когда рынок находится в нисходящем тренде, эффективность стратегии значительно снижается.
Риски фильтрации времени: Фиксированная установка торговых часов может пропустить важные возможности в неторговые часы, а на границе торговых часов могут возникнуть ненужные позиции и операции по повторному вхождению.
Параметр Чувствительность: эффективность стратегии сильно зависит от параметров размеров блоков, неправильный выбор параметров может привести к переторгу или упущенным возможностям.
Решение:
По данным анализа кода, эта стратегия может быть оптимизирована в следующих аспектах:
Слияние нескольких показателей: в сочетании с другими техническими показателями, такими как RSI, MACD или пересечение движущихся средних, в качестве подтверждающего сигнала, повышает качество входа. Таким образом, можно избежать ложных сигналов, вызванных простой зависимостью от ценовой формы, особенно в волатильных рынках.
Динамический механизм остановки убытковВнедрение функций, отслеживающих остановки, такие как динамические остановки на основе ATR, для защиты уже полученной прибыли при сохранении пространства для набора. Это особенно важно для захвата больших тенденций.
Расширение двусторонней торговлиДобавление возможности для торговли на пустом рынке, позволяющей стратегии получать прибыль в условиях падения рынка, повышение адаптивности стратегии в любую погоду.
Интеллектуальный фильтр времени: переход от фиксированных временных фильтров к динамическим временным фильтрам, основанным на активности рынка, например, с использованием комбинированного анализа объемов сделок, активной торговли в периоды высокой ликвидности и консервативных действий в периоды низкой ликвидности.
Многоциклический анализ: внедрение анализа в нескольких временных рамках, например, использование направления тенденции в более высоких временных рамках в качестве условий фильтрации торговли и торговля только в том случае, если направление тенденции совпадает с основным.
Параметры оптимизации адаптируютсяРазработка механизма самоадаптации параметров, при котором ATR-циклы и кратность корректируются в зависимости от динамики рыночных условий, чтобы стратегия лучше адаптировалась к различным рыночным условиям.
Управление рискомДобавление алгоритмов управления позициями, изменение динамики размеров сделок в зависимости от волатильности рынка и силы сигналов, контроль риска.
Эти направления оптимизации направлены на повышение устойчивости и адаптивности стратегии, сокращение потерь в неблагоприятных рыночных условиях и максимизацию прибыльности в благоприятных рыночных условиях.
Блокированный график фильтра времени однонаправленная многосторонняя торговая стратегия - это система отслеживания тенденций, которая сочетает в себе динамику цены и временную фильтрацию. С помощью механизма построения блоковой диаграммы стратегия может эффективно фильтровать рыночный шум, сосредоточившись на захвате длительных ценовых изменений.
Основные преимущества стратегии заключаются в ее простой и четкой логике торговли, адаптивной конструкции блочного размера и строгом управлении временем, что делает ее особенно подходящей для рынков с большой волатильностью, но в целом с восходящей тенденцией. Однако ее односторонние торговые характеристики и запаздывающая реакция также являются ограничениями, на которые следует обратить внимание.
Эта стратегия, благодаря внедрению оптимизированных мер, таких как подтверждение многопоказателей, динамический стоп-ложаж, двусторонние торговые возможности и интеллектуальная фильтрация времени, может еще больше повысить ее эффективность в различных рыночных условиях. Это полезная стратегическая структура для инвесторов, которые стремятся к стабильной торговле и готовы пожертвовать некоторой гибкостью в обмен на более четкие торговые сигналы.
/*backtest
start: 2025-06-22 00:00:00
end: 2025-07-22 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":200000}]
args: [["RunMode",1,358374]]
*/
//@version=5
strategy("Renko Long-Only Strategy with Time Filter", overlay=true, default_qty_value = 10)
// --- 输入参数 ---
atrLength = input.int(5, "ATR Period", minval=1)//ATR周期
atrMult = input.float(1.0, "ATR Multiplier", minval=0.1, step=0.1)//ATR乘数
showWicks = input(false, "Show Wick Lines")//是否显示上下影线
showLabels = input(true, "Show Buy/Sell Labels")//是否显示买卖标签
// --- 交易时间设置(24小时制,从4:30 AM到2:30 PM)---
startHour = input.int(4, "Start Hour (24h)", minval=0, maxval=23)//开始交易小时
startMinute = input.int(30, "Start Minute", minval=0, maxval=59)//开始交易分钟
endHour = input.int(14, "End Hour (24h)", minval=0, maxval=23)//结束交易小时
endMinute = input.int(25, "End Minute", minval=0, maxval=59)//结束交易分钟
// --- 时间计算 ---
//检查当前是否在交易时间范围内
isTradingTime() =>
timeHour = hour(time("1"))//获取当前小时
timeMinute = minute(time("1"))//获取当前分钟
// 将时间转换为自午夜起的分钟数进行比较
currentTime = timeHour * 60 + timeMinute//当前时间(分钟)
sessionStart = startHour * 60 + startMinute//交易开始时间(分钟)
sessionEnd = endHour * 60 + endMinute//交易结束时间(分钟)
currentTime >= sessionStart and currentTime <= sessionEnd//判断是否在交易时间范围内
inTradingHours = isTradingTime()//当前是否在交易时间内
timeToClose = not inTradingHours and inTradingHours[1]//刚刚退出交易时间,需要平仓
// --- 砖块计算 ---
var float boxSize = na//砖块大小
var float lastClose = na//最后一个砖块的收盘价
var int direction = 0//方向:0=未定义,1=上涨,-1=下跌
var float wickHigh = na//上影线最高点
var float wickLow = na//下影线最低点
var bool newBrick = false//是否形成新砖块
var int prevDir = 0//前一个方向
// --- 全局信号变量 ---
var bool buySignal = false//买入信号
var bool sellSignal = false//卖出信号
// 更新基于ATR的砖块大小
boxSize :=ta.atr(atrLength) * atrMult//计算砖块大小
// 检测砖块形成条件
upMove = not na(lastClose) and (close - lastClose >= boxSize)//上涨移动
downMove = not na(lastClose) and (lastClose - close >= boxSize)//下跌移动
//反转条件:当前为上升趋势但下跌超过2倍砖块大小,或当前为下降趋势但上涨超过2倍砖块大小
reversal = (direction == 1 and downMove and (lastClose - close >= boxSize * 2)) or
(direction == -1 and upMove and (close - lastClose >= boxSize * 2))
// 生成新砖块
if na(lastClose)//初始化
lastClose := close//设置初始收盘价
wickHigh := high//设置初始最高价
wickLow := low//设置初始最低价
else if upMove and direction >= 0//继续上升趋势
lastClose := lastClose + boxSize//更新收盘价
prevDir := direction//保存前一个方向
direction := 1//设置当前方向为上升
wickHigh := high//更新上影线
wickLow := low//更新下影线
newBrick := true//标记形成新砖块
else if downMove and direction <= 0//继续下降趋势
lastClose := lastClose - boxSize//更新收盘价
prevDir := direction//保存前一个方向
direction := -1//设置当前方向为下降
wickHigh := high//更新上影线
wickLow := low//更新下影线
newBrick := true//标记形成新砖块
else if reversal//趋势反转
lastClose := direction == 1 ? lastClose - boxSize : lastClose + boxSize//根据当前方向反向更新收盘价
prevDir := direction//保存前一个方向
direction := direction * -1//反转方向
wickHigh := high//更新上影线
wickLow := low//更新下影线
newBrick := true//标记形成新砖块
else//没有新砖块形成
wickHigh := math.max(wickHigh, high)//更新上影线最高点
wickLow := math.min(wickLow, low)//更新下影线最低点
newBrick := false//标记没有形成新砖块
// 更新信号(必须在全局范围内)
buySignal := direction == 1 and prevDir != 1//方向从非上升变为上升时产生买入信号
sellSignal := direction == -1 and prevDir != -1//方向从非下降变为下降时产生卖出信号
// --- 策略逻辑 ---
// 只在形成新砖块、K线确认且在交易时间内进入
enterLong = buySignal and newBrick and barstate.isconfirmed and inTradingHours//买入条件
exitLong = (sellSignal and newBrick and barstate.isconfirmed) or timeToClose//卖出条件
// 执行交易
if (enterLong)
strategy.entry("Long", strategy.long)//开仓做多
if (exitLong)
strategy.close("Long")//平仓
// --- 绘图 ---
color brickColor = direction == 1 ? color.green : direction == -1 ? color.red : color.gray//根据方向设置砖块颜色
plot(lastClose, "Renko Close", brickColor, 2, plot.style_linebr)//绘制Renko收盘价
// 如果启用,绘制影线
plot(showWicks ? wickHigh : na, "High", color.new(brickColor, 70), 1, plot.style_circles)//绘制上影线
plot(showWicks ? wickLow : na, "Low", color.new(brickColor, 70), 1, plot.style_circles)//绘制下影线
// 绘制交易时间背景
bgcolor(inTradingHours ? color.new(color.blue, 90) : na)//在交易时间内显示浅蓝色背景