Chiến lược thoát lệnh chốt lời với nhiều mức phần trăm
Tổng quan
Chiến lược này thực hiện chức năng thiết lập nhiều lệnh take profit (chốt lời) theo phần trăm. Đầu tiên, chiến lược xác định điều kiện xu hướng tăng/giảm, sau đó vào lệnh long hoặc short. Tiếp theo, sử dụng một hàm tùy chỉnh percentAsPoints để chuyển đổi phần trăm thành số điểm giá. Chương trình thiết lập 4 lệnh exit tương ứng với các mức take profit 1%, 2%, 3% và 4%, đồng thời cũng thiết lập một lệnh stop loss chung ở mức 2%. Nhờ đó, chiến lược đạt được hiệu quả chốt lời theo nhiều mức phần trăm.
Nguyên lý chiến lược
Chiến lược này chủ yếu dựa trên giao cắt của đường trung bình động SMA để xác định điểm vào lệnh. Cụ thể, khi đường nhanh SMA(14) cắt lên trên đường chậm SMA(28) thì vào lệnh long; khi đường nhanh SMA(14) cắt xuống dưới đường chậm SMA(28) thì vào lệnh short.
Vấn đề đặt ra: làm thế nào để thiết lập nhiều lệnh take profit theo phần trăm? Ở đây sử dụng hàm tùy chỉnh percentAsPoints để chuyển đổi phần trăm thành số điểm giá, logic hàm như sau:
percentAsPoints(pcnt) =>
strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
Hàm này nếu khối lượng vị thế khác 0, sẽ dùng phần trăm nhân với giá trung bình vị thế, sau đó chia cho bước giá nhỏ nhất (mintick) để có số điểm giá. Nếu vị thế bằng 0 thì trả về na.
Nhờ hàm này, chúng ta dễ dàng chuyển đổi phần trăm thành số điểm. Sau đó, chương trình thiết lập 4 lệnh exit tương ứng với take profit 1%, 2%, 3% và 4%:
lossPnt = percentAsPoints(2)
strategy.exit("x1", qty_percent = 25, profit = percentAsPoints(1), loss = lossPnt)
strategy.exit("x2", qty_percent = 25, profit = percentAsPoints(2), loss = lossPnt)
strategy.exit("x3", qty_percent = 25, profit = percentAsPoints(3), loss = lossPnt)
strategy.exit("x4", profit = percentAsPoints(4), loss = lossPnt)
Đồng thời, tất cả các lệnh exit đều sử dụng chung một stop loss 2%. Nhờ đó, chiến lược đạt được hiệu quả chốt lời theo nhiều mức phần trăm.
Phân tích ưu điểm
Chiến lược chốt lời theo nhiều mức phần trăm này có những ưu điểm sau:
-
Có thể chốt lời từng bước, tránh bỏ lỡ cơ hội lợi nhuận lớn hơn. Thông thường, các mức chốt lời càng về sau thì biên độ càng lớn, rủi ro cũng cao hơn; chiến lược này giúp cân bằng lợi nhuận và rủi ro.
-
Chốt lời theo từng phần giúp thu hồi vốn, giảm rủi ro. Ví dụ, khi thiết lập khối lượng 25%, khi lợi nhuận đạt 1%, có thể thu hồi 1/4 vốn, phần vị thế còn lại hoạt động dựa trên lợi nhuận.
-
Ngăn chặn tình huống cắt lỗ bất thường, mức stop loss 2% giúp tránh các khoản lỗ lớn do biến động cực đoan.
-
Mã nguồn triển khai đơn giản, rõ ràng, dễ hiểu, dễ sửa đổi và tối ưu. Hàm tùy chỉnh chuyển đổi phần trăm thành số điểm, chỉ cần vài dòng mã là có thể thiết lập nhiều mức chốt lời.
Phân tích rủi ro
Chiến lược này cũng tồn tại một số rủi ro:
-
Chốt lời theo phần trăm dễ dẫn đến tình trạng giá dao động ngang, giá dao động qua lại quanh mức chốt lời. Khi đó sẽ thường xuyên kích hoạt chốt lời và cắt lỗ, làm tăng tần suất giao dịch và phí giao dịch.
-
Chốt lời theo từng phần làm tăng số lần giao dịch, cũng làm tăng phí giao dịch. Nếu phí quá cao, có thể triệt tiêu một phần lợi nhuận từ chốt lời.
-
Thiết lập điểm chốt lời không phù hợp cũng ảnh hưởng đến tỷ suất lợi nhuận. Nếu đặt quá bảo thủ, khó đạt được lợi nhuận như ý; nếu đặt quá mạo hiểm, rủi ro lại quá lớn.
-
Chốt lời theo phần trăm cố định, không xem xét đến độ biến động và xu hướng thị trường. Trong thị trường đi ngang nên giảm biên độ chốt lời, trong thị trường xu hướng nên mở rộng biên độ chốt lời.
Hướng tối ưu
Xét đến các rủi ro trên, có thể tối ưu từ các khía cạnh sau:
-
Tối ưu chiến lược chốt lời để tự động điều chỉnh theo độ biến động và xu hướng thị trường. Ví dụ, kết hợp ATR để chốt lời: thắt chặt trong thị trường đi ngang, nới lỏng trong thị trường xu hướng.
-
Tối ưu tỷ lệ và biên độ chốt lời theo từng phần, nhằm đạt được tổ hợp lợi nhuận-rủi ro tối ưu. Thêm chức năng tối ưu hóa tham số để tìm ra tham số tốt nhất.
-
Giảm số lần chốt lời, tránh giao dịch quá thường xuyên. Ví dụ, thiết lập vùng đệm giá, chỉ chốt lời khi giá vượt quá một biên độ nhất định.
-
Tính đến yếu tố phí giao dịch, không chốt lời khi lợi nhuận dự kiến thấp hơn phí. Hoặc tối ưu biên độ chốt lời theo phí giao dịch.
-
Sử dụng chốt lời theo độ sâu của sổ lệnh (book order). Dựa trên độ sâu ưu tiên (depth priority) và giá ưu tiên (price priority) để tránh di chuyển giá chốt lời.
Tổng kết
Chiến lược này thực hiện hiệu quả chốt lời theo nhiều mức phần trăm, thiết lập 4 lệnh exit với các mức 1%, 2%, 3% và 4%, giúp chốt lời từng bước, đồng thời dùng stop loss 2% để ngăn chặn các khoản lỗ lớn do biến động bất thường. Chiến lược này có thể cân bằng lợi nhuận và rủi ro, tránh bỏ lỡ cơ hội lợi nhuận lớn hơn. Tuy nhiên, cũng tồn tại một số rủi ro như dễ tạo ra dao động ngang, tăng tần suất giao dịch, v.v. Những đề xuất này đều đáng được xem xét để tích hợp vào chiến lược nhằm tối ưu hóa, giúp nó vận hành ổn định trên nhiều thị trường hơn.
- 1

