Tôi đã thêm thành công chiến lược vào biểu đồ, nhưng không tạo được lệnh
Nếu tab "Danh sách giao dịch" và "Tổng quan" của Trình kiểm tra Chiến lược hiển thị thông báo "Không có dữ liệu" sau khi bạn đã thêm chiến lược vào biểu đồ, thì có khả năng chiến lược đó không mô phỏng bất kỳ lệnh nào, dẫn đến không có dữ liệu để điền các tab. Nếu tập lệnh của bạn không tạo lệnh, có thể do bất kỳ lý do nào trong số các lý do sau đây:
Tập lệnh không được phân loại là chiến lược hoặc không sử dụng các câu lệnh tạo lệnh
Kiểm tra lại với Trình kiểm tra Chiến lược chỉ có hiệu quả với các chiến lược Pine Script™ có sử dụng hàm `strategy()` để thực hiện khai báo câu lệnh. Các tập lệnh được khai báo bằng `indicator()` hoặc `library()` có thể không tương tác với mô-đun Trình kiểm tra Chiến lược.
Tập lệnh được khai báo là chiến lược phải sử dụng lệnh đặt lệnh `strategy.*` (ví dụ: `strategy.order()` hoặc `strategy.entry()`) để mô phỏng các lệnh và hiển thị dữ liệu trong Trình kiểm tra Chiến lược, dù tác giả có thể đưa vào mã bất kỳ tín hiệu mua/bán nào khác.
Chiến lược không có đủ vốn để mở vị thế
Để chiến lược tham gia vào vị thế, chiến lược phải có đủ tiền để mua số lượng hợp đồng/lô/cổ phiếu/đơn vị đã chỉ định. Chiến lược sẽ không tham gia giao dịch nếu không có đủ vốn để trang trải chi phí. Ví dụ: nếu vốn ban đầu của một chiến lược là 1000 USD và quy mô lệnh là một hợp đồng, chiến lược đó không thể tham gia vị thế trừ khi giá của tài sản giảm xuống dưới 1000 USD vì chiến lược đó không đủ khả năng chi trả cho toàn bộ giao dịch. Chiến lược sẽ luôn cố gắng mua số lượng hợp đồng/cổ phiếu/lô/đơn vị được chỉ định chứ không ít hơn.
Lưu ý quan trọng về kiểm tra lại hợp đồng tương lai:
Các mã giao dịch hợp đồng tương lai thường có nội dung được gọi là Đơn vị Hợp đồng (được biểu thị bằng Giá trị Điểm trên TradingView và có thể truy cập được trong Pine qua biến số `syminfo.pointvalue`). Giống như các mã giao dịch khác, giá thô trên biểu đồ đại diện cho giá của một đơn vị hàng hóa được giao dịch. Tuy nhiên, các hợp đồng tương lai có một số lượng nhất định mà mỗi hợp đồng đại diện, do đó, việc mua một đơn vị thường không thể thực hiện được. Để tính vốn cần thiết cho một hợp đồng, hãy nhân giá biểu đồ với Giá trị Điểm.
Để chứng minh tác động của Giá trị điểm đối với các chiến lược hoạt động trên các mã giao dịch hợp đồng tương lai, hãy xem mã giao dịch CME_MINI:ES1!, đại diện cho hợp đồng tương lai ES có tính thanh khoản tốt nhất và có Giá trị điểm là 50:
Trong ví dụ bên dưới, chiến lược mà chúng tôi đã thêm vào biểu đồ đã vào vị thế ở mức chính xác 4000 USD và thoát ở mức 4500 USD. Số tiền thực chi cho hợp đồng ở mức giá nhập vị thế là 4000 USD nhân với Giá trị Điểm là 50, tức là 200.000 USD. Khi chiến lược đóng vị thế ở mức giá thoát, số tiền nhận được là 4500 USD * 50 = 225.000 USD, từ đó lợi nhuận là 25.000 USD, chúng tôi có thể xác nhận số tiền này bằng cách xem cột "Lợi nhuận" của tab "Danh sách giao dịch" trong Trình kiểm tra Chiến lược:
Nếu chiến lược có giá trị Vốn Ban đầu dưới 200.000 USD trong trường hợp này, thì chiến lược đó sẽ không thể đặt lệnh vì không đủ khả năng mua giá vào lệnh, gấp 50 lần giá hiển thị trên biểu đồ. Để mô phỏng vị thế, chúng ta phải tăng các giá trị Vốn Ban đầu hoặc hạ Ký quỹ Mua/Bán để cho phép chiến lược có đủ vốn.
Chiến lược trả về lỗi thời gian chạy
Nếu chiến lược gặp sự cố trong quá trình tính toán, chiến lược đó sẽ phát sinh lỗi thời gian chạy và hiển thị dấu chấm than màu đỏ ở góc trên cùng bên trái của ngăn biểu đồ chứa chiến lược. Lỗi thời gian chạy ngăn tập lệnh tiếp tục tính toán, vì vậy tập lệnh không thể mô phỏng các đơn đặt hàng. Các lỗi thời gian chạy khác nhau trong Pine có nhiều nguyên nhân và cách khắc phục. Nhấp vào dấu chấm than để hiển thị thông báo lỗi của tập lệnh.
Điều kiện đặt lệnh của chiến lược không được đáp ứng
Một nguyên nhân có thể khiến chiến lược không hiển thị bất kỳ dữ liệu nào là không có điều kiện nào kích hoạt lệnh trong phạm vi thử nghiệm. Trong trường hợp này, không nhập vị thế trên biểu đồ vì không có lệnh nào để thực hiện. Người dùng có thể khắc phục điều này bằng cách thay đổi các điều kiện trong mã nguồn của chiến lược. Bạn có thể kiểm tra trực quan lịch sử của các điều kiện đặt lệnh của chiến lược bằng cách vẽ ra biểu đồ.
Tập lệnh bên dưới sử dụng hàm `plotshape()` của Pine để vẽ các dấu thập màu xanh và đỏ phía trên các thanh khi xuất hiện các điều kiện mua và bán, cho phép chúng tôi kiểm tra lịch sử của tập lệnh trên biểu đồ:
//@version=5
strategy('My Strategy', overlay = true)
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
if longCondition
strategy.entry('Long', strategy.long)
plotshape(longCondition, color=color.new(color.blue, 0))
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
if shortCondition
strategy.entry('Short', strategy.short)
plotshape(shortCondition, color=color.new(color.red, 0))
Để biết thêm thông tin về chủ đề này, vui lòng xem trang Hướng dẫn Sử dụng về Gỡ lỗi.
Thuộc tính của chiến lược không chính xác
Mỗi chiến lược có một số tham số chi phối các quy tắc mở lệnh. Tác giả có thể đặt các tham số này từ mã nguồn của chiến lược và người dùng có thể ghi đè lên bằng thông tin đầu vào trong tab "Thuộc tính" trong phần cài đặt của chiến lược.
LƯU Ý: Trong mã nguồn của chiến lược, người dùng có thể đặt số lượng hợp đồng/cổ phiếu/lô/đơn vị cho các lệnh của một số vị trí:
- Các tham số trong hàm `strategy()` chức năng cho phép người dùng đặt số lượng và loại giao dịch mặc định, đặt giá trị mặc định trong tab "Thuộc tính". Người dùng có thể ghi đè các giá trị này bằng cách điều chỉnh đầu vào "Kích thước lệnh".
- Câu lệnh vị trí đặt lệnh tạo ra các lệnh vào vị thế, chẳng hạn như `strategy.entry()`, có thể đặt số lượng giao dịch trên cơ sở hết lệnh này đến lệnh khác. Trong trường hợp này, những thay đổi đối với đầu vào trong tab "Thuộc tính" sẽ không ảnh hưởng đến kích cỡ đặt lệnh của chiến lược.
Người dùng phải đảm bảo chỉ định chính xác kích cỡ đặt lệnh của chiến lược. Để bổ sung thêm cho phần "Chiến lược không đủ vốn để mở vị thế" ở trên, bạn cần lưu ý rằng:
- Nếu "Loại lệnh" của chiến lược được đặt thành "Hợp đồng" (tương đương với `strategy.fixed` như default_qty_type trong mã nguồn), kích cỡ đặt lệnh phải lớn hơn 1 đối với hầu hết các mã giao dịch. Một số loại tiền điện tử tạo điều kiện cho kích cỡ có dạng phân số. Ví dụ: kích thước đặt lệnh là 0,1 hợp lệ cho BTCUSD nhưng không phải với AAPL hoặc EURUSD.
- Kích cỡ đặt lệnh phải là số dương; số âm sẽ gây ra lỗi thời gian chạy và giá trị 0 sẽ không có hiệu lực.
- Tổng kích cỡ vị thế (số lượng hợp đồng) không thể vượt quá 1e12. Các chiến lược sẽ không mô phỏng các lệnh mới nếu kích cỡ vị thế vượt quá con số này.