Chiến lược giao dịch dựa trên chỉ báo KST và chỉ báo EMA
Tổng quan
Ý tưởng cốt lõi của chiến lược này là kết hợp chỉ báo KST và đường trung bình động EMA để đánh giá và bám theo xu hướng. Mua khi chỉ báo KST xuất hiện giao cắt vàng (golden cross) và dưới 0, bán khi xuất hiện giao cắt tử thần (death cross) và trên 0. Đồng thời kết hợp đường EMA làm hỗ trợ/kháng cự, chỉ khi giá đóng cửa vượt qua đường EMA mới phát tín hiệu giao dịch. Chiến lược đơn giản, thực tế, có thể tự động bám theo xu hướng, phù hợp với giao dịch trung và dài hạn.
Nguyên lý chiến lược
-
Tính chỉ báo KST: Tính chỉ báo ROC cho các chu kỳ 10, 15, 20, 30 ngày, sau đó tính tổng trọng số của chúng và cuối cùng làm trơn bằng SMA 9 ngày để thu được chỉ báo KST.
-
Tính đường EMA: Tính đường EMA có độ dài 50.
-
Phát tín hiệu mua: Khi đường nhanh của KST vượt lên trên đường chậm (giao cắt vàng) và dưới 0, đồng thời giá đóng cửa cao hơn đường EMA, phát tín hiệu mua.
-
Phát tín hiệu bán: Khi đường nhanh của KST vượt xuống dưới đường chậm (giao cắt tử thần) và trên 0, đồng thời giá đóng cửa thấp hơn đường EMA, phát tín hiệu bán.
-
Thiết lập trailing stop: Đặt trailing stop bằng 1% giá trị tài khoản để tự động cắt lỗ.
Ưu điểm của chiến lược
-
Chỉ báo KST có thể nhận biết sự thay đổi xu hướng, đường EMA có thể xác nhận hướng xu hướng, sự kết hợp này giúp xác định chính xác thời điểm vào lệnh.
-
Sử dụng giao cắt nhanh chậm kết hợp với đường 0 để xác định hướng của KST, tránh các giao dịch vô nghĩa.
-
Đường EMA đóng vai trò hỗ trợ/kháng cự, lọc thêm các tín hiệu nhiễu, chỉ vào lệnh khi giá vượt qua EMA.
-
Tự động theo dõi trailing stop để kiểm soát rủi ro, cho phép lợi nhuận chạy.
-
Chiến lược có ít tham số, dễ triển khai và tối ưu hóa.
Rủi ro của chiến lược
-
Chỉ báo KST có độ trễ trong việc nhận biết thay đổi xu hướng, có thể bỏ lỡ một số cơ hội. Có thể rút ngắn chu kỳ tính toán hoặc tối ưu hóa phương pháp gán trọng số.
-
Đường EMA có độ trễ, có thể mất hiệu quả tại các điểm đảo chiều xu hướng. Có thể thử nghiệm các chỉ báo khác hoặc kết hợp nhiều đường trung bình động.
-
Cài đặt trailing stop quá rộng sẽ làm tổn thất lớn hơn; quá chặt sẽ bị dừng lỗ do biến động lớn qua đêm. Cần kiểm tra cẩn thận để tìm điểm cân bằng.
-
Tín hiệu chiến lược khá thường xuyên, chi phí giao dịch có thể cao. Có thể nới lỏng điều kiện vào lệnh để giảm số lần giao dịch.
Hướng tối ưu hóa chiến lược
-
Tối ưu hóa các tham số chu kỳ tính toán của chỉ báo KST để tìm bộ tham số nhạy hơn với từng loại tài sản cụ thể.
-
Kiểm tra các chỉ báo trung bình động khác hoặc kết hợp, như MA, WMA, v.v., xem loại nào kết hợp với KST hiệu quả hơn.
-
Thử điều chỉnh kích thước trailing stop động dựa trên độ biến động hoặc ATR.
-
Thêm các bộ lọc, chẳng hạn như sự đột biến khối lượng giao dịch, để tránh bị mắc kẹt.
-
Cân nhắc kết hợp các chỉ báo khác như RSI, MACD để chiến lược toàn diện hơn.
-
Kiểm tra hiệu quả tham số trên các loại tài sản khác nhau để xây dựng giải pháp tối ưu phù hợp với từng loại.
Tổng kết
Chiến lược tổng thể có tư tưởng rõ ràng, đáng tin cậy, dễ triển khai. Bằng cách sử dụng chỉ báo KST để đánh giá sự đảo chiều xu hướng, đường EMA để lọc thêm, và trailing stop để kiểm soát rủi ro, chiến lược có thể tự động bám theo xu hướng trung và dài hạn. Việc lựa chọn tham số hợp lý, có nhiều không gian tối ưu, người dùng có thể điều chỉnh tham số theo nhu cầu, phù hợp với nhiều loại tài sản khác nhau, có tính phổ dụng tốt. Chiến lược này vừa thích hợp cho người mới học, vừa có thể cung cấp định hướng cho các nhà giao dịch chuyên nghiệp. Thông qua việc tiếp tục tối ưu hóa và kiểm tra, chiến lược này có tiềm năng trở thành một chiến lược bám xu hướng ổn định và đáng tin cậy.
/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Know Sure Thing and EMA Strategy by JLX", shorttitle="KST EMA JLX", format=format.price, precision=4, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)
roclen1 = input(10, minval=1, title = "ROC Length #1")
roclen2 = input(15, minval=1, title = "ROC Length #2")- 1

