Chiến lược đảo ngược xu hướng Renko ATR là một phương pháp giao dịch độc đáo sử dụng biểu đồ Renko kết hợp với chỉ số Average True Range (ATR) để xác định các điểm đảo ngược xu hướng trên thị trường tài chính.
Chiến lược đầu tiên tính toán giá trị ATR trong một khoảng thời gian xác định và sử dụng ATR này làm kích thước gạch cho biểu đồ Renko. Các gạch Renko mới được rút ra khi biến động giá vượt quá một ATR. Bằng cách này, biểu đồ Renko có thể tự động thích nghi với sự biến động của thị trường, với kích thước gạch lớn hơn cho độ biến động cao hơn và kích thước gạch nhỏ hơn cho các giai đoạn biến động thấp hơn.
Một tín hiệu mua được tạo ra khi giá mở của biểu đồ Renko vượt dưới giá đóng. Ngược lại, một tín hiệu bán được tạo ra khi giá mở vượt trên giá đóng. Những tín hiệu này đánh dấu các điểm đảo ngược xu hướng tiềm năng.
Chiến lược này động lập mức dừng lỗ và lấy lợi nhuận cho mỗi giao dịch dưới dạng tỷ lệ phần trăm của giá mở Renko, dựa trên các thông số đầu vào được xác định bởi người dùng. Điều này kiểm soát rủi ro và lợi nhuận cho mỗi giao dịch.
Bằng cách tính toán bằng tay giá mở và đóng, việc sơn lại được loại bỏ, làm cho các tín hiệu chính xác và kịp thời hơn.
Kích thước gạch dựa trên ATR cho phép chiến lược tự động thích nghi với các điều kiện biến động thị trường khác nhau.
Cơ chế năng động để thiết lập mức dừng lỗ và lấy lợi nhuận cho phép kiểm soát rủi ro tốt hơn dựa trên biến động thị trường.
Biểu đồ Renko lọc ra tiếng ồn thị trường và cung cấp một hình ảnh rõ ràng để phát hiện sự đảo ngược xu hướng.
Người dùng cần tối ưu hóa các tham số như thời gian ATR, % dừng lỗ và % lợi nhuận cho các môi trường thị trường khác nhau.
Các sự kiện tin tức lớn hoặc thông báo chính sách có thể gây ra sự trượt nhanh vượt quá mức dừng lỗ hoặc tăng mức lợi nhuận, dẫn đến tổn thất lớn.
Trong một số trường hợp, mô hình đảo ngược được báo hiệu có thể không thực hiện, dẫn đến việc thua lỗ.
Các khung thời gian dài hơn có thể được sử dụng để đánh giá hướng của xu hướng tổng thể. Các khung thời gian ngắn hơn có thể lọc các tín hiệu sai.
Sử dụng động lực, biến động hoặc các chỉ số khác kết hợp có thể cải thiện chất lượng tín hiệu và tránh tín hiệu sai.
Tỷ lệ lợi nhuận có thể được điều chỉnh năng động dựa trên sự biến động của thị trường và khoảng cách giữa giá nhập cảnh và giá hiện tại.
Chiến lược đảo ngược xu hướng Renko ATR sử dụng thành công biểu đồ Renko với chỉ số ATR để tự động phát hiện các điểm đảo ngược xu hướng trên thị trường tài chính. Những lợi thế chính bao gồm loại bỏ việc sơn lại, tự động thích nghi với sự biến động thay đổi và dừng lỗ / lấy lợi nhuận năng động. Tuy nhiên, người dùng cần thận trọng với rủi ro tối ưu hóa tham số, rủi ro sự kiện và rủi ro đảo ngược thất bại.
/*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))