Đối với các chính sách debugging trong hệ thống kiểm tra lại, thường chỉ có thể sử dụngLog()
DEBUG là một chức năng rất kém hiệu quả, và có một số khó khăn cho những người mới với ít kinh nghiệm trong kiểm tra chương trình.JavaScript
Trong khi đó, một số người khác cũng có thể sử dụng ngôn ngữ này.Chrome
Các trình duyệt có hỗ trợ tốt hơn. Có thể thực hiện chỉnh sửa điểm ngắt, chỉnh sửa một bước, giám sát giá trị biến, giám sát biểu thức, v.v.Javascript
DEBUG trong quá trình kiểm tra lại chính sách ngôn ngữ.Javascript
Các chiến lược ngôn ngữ hỗ trợ phương pháp chỉnh sửa này.
debugger
Chỉ thịChèn trong mã chính sách của ngôn ngữ JavaScript trên FMZdebugger
Chỉ thị, có thể cho phép chương trình thực hiện gián đoạn trong quá trình xem lại.
Chúng tôi sử dụng mã chiến lược thử nghiệm sau đây:
/*backtest
start: 2022-03-21 09:00:00
end: 2022-06-21 15:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
function main() {
var n = 1
while (true) {
var t = exchange.GetTicker()
debugger
var r = exchange.GetRecords()
if (n == 1) {
// 下买单,此处有错误,会报错,返回null,GetTicker返回数据t,只有Buy属性,没有buy属性,属性名区分大小写
var id = exchange.Buy(t.buy, 0.1)
var orderBuy = exchange.GetOrder(id)
}
Sleep(500)
}
}
Từ kiểm tra lại mã cấu hình
/*backtest
start: 2022-03-21 09:00:00
end: 2022-06-21 15:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
Bạn có thể thấy rằng sàn giao dịch được thêm vào khi chúng tôi xem lại là Binance (Binance) hiện tại, cấu hình như hình ảnh:
Và chúng ta có thể thấy ở đây.var t = exchange.GetTicker()
Chúng tôi viết dưới đây:debugger
Chỉ thị, tương tự như đặt một điểm dừng ở đây, chương trình sẽ dừng khi thực hiện đến vị trí này.debugger
Tuy nhiên, không nên làm như vậy, chỉ cần nhấn một điểm dừng ở một vị trí nào đó, các điểm dừng sau đó có thể được thiết lập trong tính năng debugging của trình duyệt.
Bạn cần phải mở trình duyệt Chrome.DevTools
Sau đó thực hiện kiểm tra lại, đặt trong mã chính sáchdebugger
Nếu không, chúng ta sẽ không có được quyền tự do.debugger
Nếu không có lệnh, bạn sẽ bị bỏ qua và các chương trình chính sách được kiểm tra lại không thể dừng lại ở vị trí ngắt.DevTools
Sau khi kiểm tra lại chính sách, các chương trình chính sách sẽ bị ngưng hoạt động khi cài đặt lần đầu tiêndebugger
Địa điểm:debugger
Bạn cũng có thể thiết lập trong phạm vi toàn cầu của mã chiến lược.
Chúng tôi mở, trình duyệt ChromeDevTools
Các công cụ có hai cách:
Một, chúng ta nhấp chuột phải vào menu pop-up để mở
Khi chúng ta nhấp vào "Check", chúng ta sẽ thấy giao diện của DevTools.
2, sử dụng phím tắt
Bạn cũng có thể mở nó bằng phím tắt và nhấnCommand+Option+I (Mac)
HoặcControl+Shift+I(Windows、Linux)
MởDevTools
。
MởDevTools
Sau đó là hình:
Sau đó, trong bài kiểm tra trên, khi chúng ta nhấp vào nút "Bắt đầu kiểm tra lại", chúng ta sẽ kiểm tra lại chính sách bởi vì nó được đặt trong mã.debugger
Chỉ thị, chính sách ở vị trí tương ứng để ngắt và chờ.
Bạn có thể thấy, trong chiến lượcdebugger
Đánh dấu vị trí ngắt, toàn bộ chương trình chỉ thực hiện n assignment là 1, t assignment làGetTicker
Dữ liệu hành động mà hàm trả về. Bạn có thể thấy các giá trị của các biến cụ thể trong khung màu đỏ trong biểu đồ trên, vì vậy nó rất thuận tiện để xem các giá trị của các biến khi chính sách đang chạy.
Chúng ta có thể nhấp vào số dòng bên trái của mã và thêm dấu chấm.
Nhấp vào "resume script execution" để khôi phục kịch bản, chương trình sẽ chạy đến điểm dừng tiếp theo, nếu không có điểm dừng hoặc chương trình có lỗi gây ra sự khác biệt, kiểm tra lại sẽ kết thúc.
Một số nút khác có thể được thực hiện: bỏ qua hàm tiếp theo, đi đến hàm tiếp theo, bỏ qua hàm hiện tại, thực hiện một bước, bỏ qua tất cả các điểm ngắt, v.v.
Khi đó, khi chúng ta tiếp tục bấm nút "resume script execution" để tiếp tục thực hiện, trình chính sách sẽ xảy ra sự bất thường, kết thúc kiểm tra lại và in một thông báo sai lệch bất thường.
main:17:31 - TypeError: Cannot convert "undefined" to double
Đây là một sai lầm thường gặp của những người mới bắt đầu viết tên một thuộc tính cấu trúc mà không phân biệt kích thước nhỏ.
var id = exchange.Buy(t.buy, 0.1) // 下买单,此处有错误,会报错,返回null,GetTicker返回数据t,只有Buy属性,没有buy属性。
导致传入exchange.Buy函数的价格是一个undefined变量,引起程序异常,回测结束。
Khi chương trình dừng lại ở vị trí ngắt, dòng mã này không được thực hiện. Chúng tôi tiếp tục bấm nút "step into next function call".
跳转到exchange.Buy函数调用中。
Xem giá là một biến không xác định.
Sử dụng phương pháp trên, bạn sẽ dễ dàng tìm ra một chương trình BUG từng bước. Những sai lầm thường gặp của nhiều người mới: ví dụ như truy cập chỉ mục của mảng, tham khảo các biến số không xác định, lỗi viết biểu thức, v.v.
fmzeroChỗ ngủ, có thể làm thế này, 666