Renko ATR Chiến lược đảo ngược xu hướng

Tác giả:ChaoZhang, Ngày: 2024-02-01 14:30:24
Tags:

img

Tổng quan

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 logic

Thế hệ Renko Brick

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.

Sản xuất tín hiệu mua và bá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.

Dừng lỗ và lấy lợi nhuận

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.

Phân tích lợi thế

Loại bỏ việc sơn lại

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.

Tự thích nghi với sự biến động

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.

Động thái dừng lỗ và lấy lợi nhuận

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.

Xem biểu đồ sạch

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.

Phân tích rủi ro

Rủi ro tối ưu hóa tham số

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.

Rủi ro sự kiện

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.

Rủi ro đảo ngược thất bại

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ơ hội gia tăng

Sử dụng nhiều khung thời gian

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.

Kết hợp các chỉ số khác

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.

Điều chỉnh lợi nhuận động

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.

Kết luận

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))


Thêm nữa