
Chiến lược đảo ngược xu hướng dựa trên bước sóng trung bình thực tế của Renko (Renko ATR Trend Reversal Strategy) là một chiến lược giao dịch độc đáo nhằm sử dụng biểu đồ Renko kết hợp với chỉ số ATR để xác định điểm đảo ngược xu hướng của thị trường tài chính. Chiến lược này loại bỏ các vấn đề về việc vẽ đồ thị của Renko, có thể nắm bắt chính xác các điểm biến đổi và cung cấp tín hiệu rõ ràng cho các quyết định giao dịch.
Chiến lược này đầu tiên tính toán giá trị ATR trong một chu kỳ nhất định và lấy ATR này làm chuẩn để thiết lập kích thước khối của biểu đồ Renko. Một khối Renko mới được vẽ khi giá thay đổi vượt quá một ATR. Bằng cách này, biểu đồ Renko có thể tự động thích ứng với mức độ biến động của thị trường, thiết lập kích thước khối lớn hơn khi biến động cao và kích thước khối nhỏ hơn khi biến động thấp.
Khi Renko mở giá dưới giá đóng cửa, tạo ra tín hiệu mua; khi Renko mở giá trên giá đóng cửa, tạo ra tín hiệu bán. Những tín hiệu này đánh dấu điểm đảo ngược xu hướng tiềm ẩn.
Chiến lược này sẽ thiết lập giá dừng lỗ và giá dừng cho mỗi giao dịch dựa trên tỷ lệ phần trăm dừng lỗ và tỷ lệ phần trăm dừng lỗ mà người dùng đã xác định, sử dụng giá mở cửa của Renko làm giá trị cơ bản, kiểm soát rủi ro và lợi nhuận cho mỗi giao dịch.
Chiến lược này đã loại bỏ các vấn đề về lập bản đồ chậm trễ bằng cách tính toán thủ công giá mở và giá đóng của Renko, làm cho tín hiệu được tạo ra chính xác và kịp thời hơn.
Thiết lập kích thước khối Renko dựa trên chỉ số ATR cho phép chiến lược tự động thích ứng với biến động giá trong các điều kiện thị trường khác nhau.
Chiến lược này thiết lập các cơ chế dừng và dừng động cho mỗi giao dịch, có thể kiểm soát rủi ro theo mức độ biến động của thị trường.
Bản thân biểu đồ Renko có thể loại bỏ tiếng ồn của thị trường và cung cấp hiệu ứng trực quan rõ ràng và ngắn gọn khi nhận ra xu hướng đảo ngược.
Người dùng cần tối ưu hóa các tham số như chu kỳ ATR, tỷ lệ phần trăm dừng và tỷ lệ phần trăm dừng để phù hợp với môi trường thị trường khác nhau. Nếu các tham số được thiết lập không đúng cách, sẽ dẫn đến hiệu quả chiến lược kém.
Các sự kiện kinh tế quan trọng hoặc chính sách có thể dẫn đến tăng giá nhanh, do đó, mức dừng lỗ hoặc dừng chân bị phá vỡ, gây ra thiệt hại lớn hơn.
Trong một số trường hợp, tín hiệu giao dịch được xác định có thể thất bại, không thể thúc đẩy giá đi theo hướng đảo ngược, do đó dẫn đến tổn thất.
Có thể đánh giá xu hướng lớn trên chu kỳ thời gian cao hơn, tránh giao dịch ngược. Cũng có thể lọc các tín hiệu giả ở chu kỳ thời gian thấp hơn.
Sử dụng kết hợp với chỉ số động lượng, chỉ số dao động, v.v., có thể cải thiện chất lượng tín hiệu, tránh tín hiệu sai.
Tỷ lệ dừng có thể được điều chỉnh động theo mức độ biến động của thị trường và khoảng cách giữa giá mới nhất và điểm nhập cảnh.
Chiến lược đảo ngược xu hướng dựa trên sóng trung bình thực tế của Renko đã sử dụng thành công biểu đồ Renko kết hợp với chỉ số ATR để tự động xác định các điểm biến đổi trong thị trường tài chính. Chiến lược này có những lợi thế như loại bỏ đồ họa chậm trễ, tự động thích ứng với biến động thị trường và dừng lỗ động. Đồng thời, người dùng cũng cần thiết đặt và tối ưu hóa các tham số cảnh báo về rủi ro, và rủi ro thất bại trong sự kiện bất ngờ và đảo ngược.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='[tradinghook] - Renko Trend Reversal Strategy', shorttitle='[tradinghook] - Renko TRS', overlay=true ,initial_capital = 100, commission_value = 0.05, default_qty_value = 5)
// INPUTS
renkoATRLength = input.int(10, minval=1, title='ATR Length')
stopLossPct = input.float(3, title='Stop Loss Percentage', step=0.1)
takeProfitPct = input.float(20, title='Take Profit Percentage', step=0.1)
startDate = input(timestamp("01 July 2023 00:00"), title="Start Date")
endDate = input(timestamp("31 Dec 2025 23:59"), title="End Date")
enableShorts = input.bool(true, title="Enable Shorts")
var float stopLossPrice = na
var float takeProfitPrice = na
atr = ta.atr(renkoATRLength)
// thanks to https://www.tradingview.com/script/2vKhpfVH-Renko-XZ/ for manually calculating renkoClose and renkoOpen in order to remove repaint
getRenkoClose() =>
p1 = 0.0
p1 := close > nz(p1[1]) + atr ? nz(p1[1]) + atr : close < nz(p1[1]) - atr ? nz(p1[1]) - atr : nz(p1[1])
p1
Renko3() =>
p3 = 0.0
p3 := open > nz(p3[1]) + atr ? nz(p3[1]) + atr : open < nz(p3[1]) - atr ? nz(p3[1]) - atr : nz(p3[1])
p3
getRenkoOpen() =>
open_v = 0.0
Br_2 = Renko3()
open_v := Renko3() != Renko3()[1] ? Br_2[1] : nz(open_v[1])
open_v
renkoOpen = getRenkoOpen()
renkoClose = getRenkoClose()
// COLORS
colorGreen = #089981
colorRed = #F23645
bgTransparency = 95
bgColorRed = color.new(colorRed, bgTransparency)
bgColorGreen = color.new(colorGreen, bgTransparency)
lineColor = renkoClose < renkoOpen ? colorRed : colorGreen
bgColor = renkoClose < renkoOpen ? bgColorRed : bgColorGreen
// PLOTS
plot(renkoOpen, title="Renko Open", style=plot.style_line, linewidth=2, color=lineColor)
bgcolor(bgColor)
// SIGNALS
isWithinTimeRange = true
buySignal = ta.crossunder(renkoOpen, renkoClose) and isWithinTimeRange
sellSignal = ta.crossover(renkoOpen, renkoClose) and isWithinTimeRange and enableShorts
if (buySignal)
stopLossPrice := renkoOpen * (1 - stopLossPct / 100)
takeProfitPrice := renkoOpen * (1 + takeProfitPct / 100)
strategy.entry("Long", strategy.long)
strategy.exit("ExitLong", "Long", stop = stopLossPrice, limit = takeProfitPrice, comment="SL: " + str.tostring(stopLossPrice) + ", TP: " + str.tostring(takeProfitPrice))
if (sellSignal)
stopLossPrice := renkoOpen * (1 + stopLossPct / 100)
takeProfitPrice := renkoOpen * (1 - takeProfitPct / 100)
strategy.entry("Short", strategy.short)
strategy.exit("ExitShort", "Short", stop = stopLossPrice, limit = takeProfitPrice, comment="SL: " + str.tostring(stopLossPrice) + ", TP: " + str.tostring(takeProfitPrice))