Xu hướng theo chiến lược dựa trên trung bình động Renko

Tác giả:ChaoZhang, Ngày: 2024-02-21 16:36:00
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch sử dụng trung bình động Renko để xác định và theo dõi xu hướng. Lý thuyết cốt lõi của chiến lược này là đi dài hoặc ngắn khi giá phá vỡ trung bình động HL2 22 giai đoạn trên thanh Renko. Trong khi đó, chiến lược này cũng thiết lập các cơ chế quản lý rủi ro như dừng lỗ, lấy lợi nhuận và dừng theo dõi.

Nguyên tắc chiến lược

Khi giá đóng cửa thanh Renko vượt quá đường trung bình di chuyển HL2 22 giai đoạn, đi dài. Khi giá đóng cửa thanh Renko vượt qua đường trung bình di chuyển HL2 22 giai đoạn, đi ngắn. Bằng cách đánh giá mối quan hệ giữa giá và đường trung bình di chuyển, nó nắm bắt hướng xu hướng.

Đường trung bình động HL2 (Độ cao nhất + Đường thấp nhất) / 2 là một đường trung bình động theo xu hướng, kết hợp thông tin về giá cao nhất và thấp nhất để xác định chính xác hơn hướng xu hướng.

Ngoài ra, chiến lược cũng quy định hạn chế chỉ mở các vị trí trong các phiên giao dịch cụ thể để tránh những biến động thị trường lớn tiềm ẩn.

Phân tích lợi thế

Đây là một chiến lược theo xu hướng tương đối đơn giản và trực quan với những ưu điểm dưới đây:

  1. Sử dụng thanh Renko làm tín hiệu giao dịch có thể lọc hiệu quả tiếng ồn thị trường và nắm bắt xu hướng chính.

  2. Trung bình động HL2 kết hợp thông tin giá cao nhất và thấp nhất để đánh giá xu hướng đáng tin cậy hơn.

  3. Thiết lập điểm dừng lỗ cố định và lấy lợi nhuận có thể kiểm soát rủi ro của các giao dịch đơn.

  4. Trailing stop có thể khóa lợi nhuận dọc theo sự phát triển của xu hướng để thực hiện theo dõi xu hướng.

  5. Hạn chế các phiên giao dịch có thể giảm thiểu tác động của sự biến động lớn đến một mức độ nào đó.

Phân tích rủi ro

Ngoài ra còn có một số rủi ro với chiến lược này:

  1. Chiến lược trung bình động có xu hướng tạo ra nhiều tín hiệu sai hơn.

  2. Nó không thể đối phó hiệu quả với rủi ro khoảng cách do các sự kiện đột ngột.

  3. Các thiết lập Renko không đúng có thể bỏ lỡ những cơ hội giao dịch tốt hơn.

  4. Stop loss cố định và lấy lợi nhuận không thể thích nghi với những thay đổi của thị trường.

Hướng dẫn tối ưu hóa

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Thêm các chỉ số hoặc điều kiện khác để lọc ra các tín hiệu sai, ví dụ: khối lượng, dao động, v.v.

  2. Kiểm tra các đường trung bình động với các thông số khác nhau để tìm ra thời gian phù hợp nhất.

  3. Kích thước hộp của Renko cũng có thể được thử nghiệm và tối ưu hóa cho các thông số tốt nhất.

  4. Thêm cơ chế dừng lỗ thích nghi dựa trên biến động.

  5. Kiểm tra các cài đặt phiên giao dịch khác nhau để tối ưu hóa điều kiện này.

Kết luận

Tóm lại, đây là một chiến lược đơn giản và thực tế để xác định xu hướng và theo dõi bằng cách sử dụng đường trung bình động Renko. Nó có logic giao dịch trực quan và cơ chế kiểm soát rủi ro, phù hợp với các nhà giao dịch tìm kiếm lợi nhuận ổn định. Nhưng vẫn còn chỗ để cải thiện bằng cách tối ưu hóa tham số, thêm điều kiện lọc, dừng lỗ thích nghi v.v. để có được hiệu suất chiến lược tốt hơn.


/*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=3
strategy("HL2 - 22 Cross", overlay=true)

// Stops and Profit inputs
inpTakeProfit   = input(defval = 300, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 200, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 200, title = "Trailing Stop", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Offset", minval = 0)

// Stops and Profit Targets
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

//Specific Time to Trade
myspecifictradingtimes = input('0500-1600',  title="My Defined Hours")

longCondition1 = crossover(close, ema(hl2, 22))
longCondition2 = time(timeframe.period, myspecifictradingtimes) != 0
if longCondition1 and longCondition2
    strategy.entry("Long", strategy.long, comment="LongEntry")

shortCondition1 = crossunder(close, ema(hl2, 22))
shortCondition2 = time(timeframe.period, myspecifictradingtimes) != 0
if shortCondition1 and shortCondition2
    strategy.entry("Short", strategy.short, comment="ShortEntry")

strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)

Thêm nữa