
Chiến lược này sử dụng HA để tính toán đường K mở, cao, thấp, giá giảm, và phán đoán màu K cuối cùng dựa trên mối quan hệ của giá. Khi giá tăng, nó được thể hiện bằng đường cột màu xanh lá cây, và khi giá giảm, nó được thể hiện bằng đường cột màu đỏ. Chiến lược HA sử dụng màu sắc của đường cột màu thay đổi như là một tín hiệu giao dịch, không khi chuyển sang màu xanh lá cây, và nhiều khi chuyển sang màu xanh lá cây, là một chiến lược đảo ngược điển hình.
Lý luận cốt lõi của chiến lược là tính toán sự thay đổi màu sắc của đường HA để xác định giá đảo ngược.
Đầu tiên, tính giá trị của dòng K dựa trên tùy chọn nhập liệu có sử dụng HA hay không. Nếu chọn sử dụng, lấy giá mở, cao, thấp và đóng từ dữ liệu HA; Nếu không sử dụng, lấy trực tiếp từ dữ liệu gốc của dòng K.
haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low
Sau đó, tính theo công thức tính toán HA để có được giá mở, giá đóng của HA trong chu kỳ này.
haclose = (haOpen + haHigh + haLow + haClose) / 4
haopen := na(haopen[1]) ? (haOpen + haClose) / 2 : (haopen[1] + haclose[1]) / 2
Sau đó, tính giá cao nhất và giá thấp nhất của HA dựa trên giá mở và giá mở của HA.
hahigh = max(haHigh, max(haopen, haclose))
halow = min(haLow, min(haopen, haclose))
Màu sắc của đường cột HA trong chu kỳ này được đánh giá dựa trên mối quan hệ giá mở và giá thu của HA.
hacolor = haclose > haopen ? color.green : color.red
Đánh giá tín hiệu đảo ngược giá dựa trên sự thay đổi màu HA trong hai chu kỳ liên tiếp.
turnGreen = haclose > haopen and haclose[1] <= haopen[1]
turnRed = haclose <= haopen and haclose[1] > haopen[1]
Các vị trí mua và bán được mở riêng biệt khi có tín hiệu mua và bán.
strategy.entry("long", 1, when=turnGreen)
strategy.entry("short", 0, when=turnRed)
Khi có tín hiệu ngược lại, các nhà đầu tư có thể sẽ dừng lại.
strategy.close("long", when=turnRed)
Điều này có thể được thực hiện bằng cách đánh giá sự thay đổi màu sắc của đường HA để nắm bắt các điểm đảo ngược giá và thực hiện chiến lược giao dịch đảo ngược.
Chiến lược này có những lợi thế chính như sau:
Sử dụng cải tiến HA tính toán dữ liệu K-line, có thể lọc ra một phần của tiếng ồn, nhận diện xu hướng đảo chiều rõ ràng hơn.
Chỉ dựa trên sự thay đổi màu sắc của đường HA đơn giản để đánh giá điểm đảo ngược, logic chiến lược đơn giản, rõ ràng và dễ hiểu.
Sử dụng phương thức giao dịch đảo ngược, bạn có thể bắt kịp sự thay đổi xu hướng và kiếm được lợi nhuận quay ngược nhanh hơn.
Có thể cấu hình liệu có sử dụng HA để tính toán dữ liệu đường K hay không, có thể điều chỉnh để sử dụng theo thị trường khác nhau.
Hình vẽ hình dạng chỉ định candle để dễ dàng nhận biết trực quan điểm biến đổi giá.
Có thể điều chỉnh thông qua các tham số tối ưu hóa như chu kỳ giao dịch, áp dụng cho các giống khác nhau.
Chiến lược này cũng có một số rủi ro cần lưu ý:
Giao dịch đảo ngược dễ bị giả mạo, cần đảm bảo tín hiệu đảo ngược có đủ độ tin cậy.
Trong một thị trường bất ổn, các tín hiệu đảo ngược có thể xảy ra thường xuyên, dẫn đến giao dịch quá mức.
Không thể đánh giá được xu hướng kéo dài bao lâu và có thể tiếp tục xu hướng cũ sau khi đảo ngược gây thiệt hại.
Chỉ số đơn lẻ dễ bị phá vỡ giả và nên được sử dụng với các chỉ số khác.
Cần xác minh xem tham số đã được tối ưu hóa đầy đủ để tránh quá phù hợp.
Giải pháp tương ứng:
Tối ưu hóa các tham số để đảm bảo tín hiệu giao dịch ổn định và đáng tin cậy.
Trong khi đó, các nhà đầu tư khác cũng đang tìm kiếm các giải pháp khác để giảm bớt rủi ro.
Thiết lập cơ chế dừng lỗ và kiểm soát tổn thất đơn lẻ
Kết hợp các chỉ số khác để xác nhận và tránh tín hiệu giả.
Đánh giá đầy đủ các tham số tối ưu hóa để tránh quá phù hợp.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Tối ưu hóa các tham số chu kỳ giao dịch để thích ứng với các đặc tính của các giống khác nhau.
Kiểm tra xem có sử dụng giá trị HA hay không, tùy thuộc vào đặc điểm của giống giao dịch.
Thêm điều kiện lọc xu hướng để tránh biến động thị trường.
Thiết lập dừng động, điều chỉnh điểm dừng tùy theo biến động của thị trường.
Kết hợp với các chỉ số khác xác nhận tín hiệu giao dịch.
Thêm chiến lược quản lý tài chính, điều chỉnh vị trí.
Mở rộng thương mại đấu giá đa dạng.
Điều chỉnh tham số theo kết quả phản hồi để tránh quá phù hợp.
Chiến lược này sử dụng lợi thế của việc cải thiện đường trung bình HA để phát hiện ra điểm đảo ngược giá có thể bằng cách đánh giá sự thay đổi màu sắc của đường trụ HA. So với việc sử dụng đường K trực tiếp, đường trung bình HA có thể lọc một phần tiếng ồn, tín hiệu đảo ngược rõ ràng hơn. Chiến lược thực hiện tư duy giao dịch đảo ngược một cách đơn giản, logic đơn giản, rõ ràng và dễ dàng hoạt động trên thực tế.
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Heikin-Ashi Change Strategy", overlay=true)
UseHAcandles = input(true, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===
// === BASE FUNCTIONS ===
haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low
// Calculation HA Values
haopen = 0.0
haclose = (haOpen + haHigh + haLow + haClose) / 4
haopen := na(haopen[1]) ? (haOpen + haClose) / 2 : (haopen[1] + haclose[1]) / 2
hahigh = max(haHigh, max(haopen, haclose))
halow = min(haLow, min(haopen, haclose))
// HA colors
hacolor = haclose > haopen ? color.green : color.red
// Signals
turnGreen = haclose > haopen and haclose[1] <= haopen[1]
turnRed = haclose <= haopen and haclose[1] > haopen[1]
// Plotting
bgcolor(hacolor)
plotshape(turnGreen, style=shape.arrowup, location=location.belowbar, color=color.green)
plotshape(turnRed, style=shape.arrowdown, location=location.abovebar, color=color.red)
// Alerts
alertcondition(turnGreen, "ha_green", "ha_green")
alertcondition(turnRed, "ha_red", "ha_red")
strategy.entry("long", 1, when=turnGreen)
//strategy.entry("short", 0, when=turnRed)
strategy.close("long", when=turnRed)