
Chiến lược này là một hệ thống giao dịch đa đầu một chiều dựa trên biểu đồ khối Renko, kết hợp với cơ chế lọc thời gian, được thiết kế riêng cho thời gian giao dịch cụ thể. Chiến lược này sử dụng ATR (trung bình độ dao động thực tế) để điều chỉnh kích thước khối một cách động, xác định xu hướng tăng bằng cách theo dõi chuyển động giá của khối hình thành và thực hiện giao dịch đa đầu chỉ trong thời gian giao dịch được chỉ định.
Chiến lược này hoạt động dựa trên những nguyên tắc cốt lõi sau:
Cơ chế xây dựng bản đồ khối: Hệ thống xác định kích thước khối bằng hai cách - giá trị cố định hoặc điều chỉnh động dựa trên ATR. Trong chế độ ATR, kích thước khối bằng giá trị ATR của một chu kỳ cụ thể ((bằng mặc định 5) nhân với số nhân ((bằng mặc định 1.0), cho phép kích thước khối được điều chỉnh theo biến động của thị trường.
Hướng định logicChiến lược: theo dõi biến động giá, khi giá so với khối cuối cùng của khối trước đó tăng cao hơn khối lượng khối tạo thành khối tăng; giảm hơn khối lượng khối tạo thành khối lượng giảm; biến động giá xảy ra khi khối lượng khối lớn hơn gấp đôi.
Tạo tín hiệu giao dịch: Tín hiệu mua được tạo ra khi hướng khối chưa bao giờ được xác định hoặc giảm chuyển sang tăng; Tín hiệu bán được tạo ra khi hướng khối chưa bao giờ được xác định hoặc tăng chuyển sang giảm.
Bộ lọc thời gianChiến lược: Chỉ thực hiện giao dịch trong khoảng thời gian giao dịch được chỉ định (từ 04:35 đến 14:30) theo mặc định, khoảng thời gian này thường tương ứng với thời gian hoạt động của thị trường chính. Khi rời khỏi khoảng thời gian giao dịch, hệ thống sẽ tự động thanh toán vị trí để tránh rủi ro qua đêm.
Mô hình giao dịch một chiềuChiến lược: Chỉ thực hiện giao dịch đa đầu, không thực hiện giao dịch nhị phân, phù hợp với môi trường thị trường có xu hướng lạc quan rõ ràng hoặc cấm nhị phân.
Dựa trên phân tích mã, chiến lược này có những ưu điểm đáng chú ý sau:
Bộ lọc tiếng ồnBiểu đồ khối tự nhiên có khả năng lọc tiếng ồn thị trường, chỉ khi biến động giá vượt quá ngưỡng nhất định mới hình thành khối mới, có hiệu quả trong việc tránh phản ứng quá mức với biến động giá nhỏ.
Tự điều chỉnhĐổi kích thước khối động thông qua ATR, chiến lược có thể thích ứng với môi trường thị trường khác nhau và điều kiện biến động, tăng kích thước khối trong thời gian biến động cao và giảm kích thước khối trong thời gian biến động thấp.
Quản lý rủi ro thời gianBộ lọc thời gian đảm bảo giao dịch chỉ được thực hiện vào những thời điểm thị trường hoạt động nhất và có tính thanh khoản tốt nhất, tránh những thời điểm có thể thiếu thanh khoản hoặc biến động bất thường như ban đêm và ban đầu.
Định hướng rõ ràngChiến lược này tập trung vào việc nắm bắt xu hướng tăng, logic ngắn gọn và rõ ràng, tránh các giao dịch thường xuyên và phí tổn do chuyển đổi không gian quá nhiều.
Hỗ trợ hình ảnhChiến lược cung cấp các thẻ tín hiệu mua và bán và các tùy chọn hiển thị điểm cao và thấp của khối để giúp các nhà giao dịch hiểu trực quan về động lực thị trường và hoạt động của chiến lược.
Quản lý tài chínhChiến lược này sử dụng mô hình giao dịch định lượng vốn, có thể tự động tính toán kích thước vị trí dựa trên vốn ban đầu, giảm sự phức tạp của quản lý vốn.
Mặc dù chiến lược này được thiết kế hợp lý, nhưng vẫn có những rủi ro tiềm ẩn:
Phản ứng chậm trễ: Biểu đồ khối là một chỉ số tụt hậu, hình thành khối mới đòi hỏi giá phải đạt được một mức độ di chuyển nhất định, có thể dẫn đến sự chậm trễ tương đối trong thời gian nhập và xuất, có thể bỏ lỡ điểm giao dịch tốt nhất trong thị trường biến động nhanh.
Thiếu tính linh hoạt của đường dây ngắnChiến lược chỉ phát ra tín hiệu khi khối mới được hình thành và có thể bỏ lỡ cơ hội kiếm tiền trong thời gian ngắn, đặc biệt là khi thị trường bị biến động.
Hạn chế một chiềuChỉ cần thực hiện nhiều chiến lược sẽ không có lợi nhuận trong thị trường giảm, thậm chí có thể mất mát liên tục, hiệu quả của chiến lược sẽ giảm đáng kể khi thị trường có xu hướng giảm lâu dài.
Rủi ro của thời gian lọcThiết lập thời gian giao dịch cố định có thể bỏ lỡ cơ hội quan trọng trong thời gian không giao dịch, đồng thời có thể xảy ra các hoạt động mở cửa và nhập lại không cần thiết tại các giao dịch giao dịch.
Độ nhạy tham sốHành động của chiến lược phụ thuộc rất nhiều vào cài đặt tham số kích thước khối, lựa chọn tham số không đúng cách có thể dẫn đến giao dịch quá mức hoặc bỏ lỡ cơ hội.
Giải pháp:
Theo phân tích mã, chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Tích hợp đa chỉ sốKết hợp với các chỉ số kỹ thuật khác như RSI, MACD hoặc đường trung bình di chuyển như tín hiệu xác nhận, cải thiện chất lượng nhập. Điều này có thể tránh các tín hiệu sai lệch do đơn thuần phụ thuộc vào hình dạng giá, đặc biệt là trong thị trường biến động.
Cơ chế dừng lỗ độngTiêu đề: giới thiệu tính năng theo dõi dừng lỗ, chẳng hạn như dừng động dựa trên ATR, bảo vệ lợi nhuận đã thu được trong khi vẫn giữ lại không gian trên. Điều này đặc biệt quan trọng để nắm bắt xu hướng lớn.
Mở rộng giao dịch song phươngThêm tính năng giao dịch không đầu để chiến lược có thể kiếm được lợi nhuận tương tự trong thị trường giảm và cải thiện khả năng thích ứng với mọi thời tiết của chiến lược.
Bộ lọc thời gian thông minh: nâng cấp bộ lọc thời gian cố định thành bộ lọc thời gian động dựa trên hoạt động của thị trường, chẳng hạn như tích hợp phân tích khối lượng giao dịch, giao dịch tích cực trong thời gian lưu động cao và hoạt động thận trọng trong thời gian lưu động thấp.
Phân tích đa chu kỳ: Tiến hành phân tích nhiều khung thời gian, ví dụ sử dụng hướng xu hướng của khung thời gian cấp cao hơn làm điều kiện lọc giao dịch, chỉ giao dịch khi xu hướng lớn nhất quán.
Các tham số tối ưu hóa tự điều chỉnh: Phát triển các tham số cơ chế thích ứng, điều chỉnh ATR chu kỳ và nhân theo động lực của tình trạng thị trường, làm cho chiến lược thích ứng tốt hơn với các môi trường thị trường khác nhau.
Kiểm soát tiếp xúc rủi roTăng thuật toán quản lý vị trí, điều chỉnh quy mô giao dịch theo biến động thị trường và cường độ tín hiệu, kiểm soát rủi ro.
Những hướng tối ưu hóa này nhằm tăng cường tính ổn định và khả năng thích ứng của chiến lược, giảm tổn thất trong điều kiện thị trường bất lợi, đồng thời tối đa hóa khả năng sinh lợi trong điều kiện thị trường thuận lợi.
Bộ lọc theo thời gian của biểu đồ khối chiến lược giao dịch đơn hướng đa chiều là một hệ thống theo dõi xu hướng kết hợp động lực giá và bộ lọc theo thời gian. Thông qua cơ chế xây dựng của biểu đồ khối, chiến lược có thể lọc hiệu quả tiếng ồn thị trường, tập trung vào việc nắm bắt biến động giá liên tục; thông qua bộ lọc theo thời gian, chiến lược tránh thời gian thị trường không hoạt động, giảm rủi ro giữ vị trí qua đêm.
Ưu điểm chính của chiến lược này là logic giao dịch đơn giản và rõ ràng, thiết kế kích thước khối thích ứng và quản lý thời gian nghiêm ngặt, đặc biệt phù hợp với thị trường có biến động lớn nhưng có xu hướng tăng. Tuy nhiên, tính năng giao dịch một chiều và phản ứng chậm trễ của nó cũng là những hạn chế cần lưu ý.
Chiến lược này có khả năng nâng cao hơn nữa hiệu suất của nó trong các môi trường thị trường khác nhau bằng cách đưa ra các biện pháp tối ưu hóa như xác nhận đa chỉ số, cơ chế dừng lỗ động, khả năng giao dịch hai chiều và lọc thời gian thông minh. Đây là một khung chiến lược đáng xem xét cho các nhà đầu tư theo đuổi giao dịch ổn định và sẵn sàng hy sinh một số tính linh hoạt để đổi lấy tín hiệu giao dịch rõ ràng hơn.
/*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)//在交易时间内显示浅蓝色背景