Tài nguyên đang được tải lên... tải...

Javascript chính sách truy cập lại trong trình duyệt Chrome DevTools debugging

Tác giả:Những nhà phát minh định lượng - những giấc mơ nhỏ, Tạo: 2022-06-22 14:23:26, Cập nhật: 2023-09-18 20:24:01

img

Javascript chính sách truy cập lại trong trình duyệt Chrome DevTools debugging

Đố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.JavaScriptTrong khi đó, một số người khác cũng có thể sử dụng ngôn ngữ này.ChromeCá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.JavascriptDEBUG trong quá trình kiểm tra lại chính sách ngôn ngữ.JavascriptCác chiến lược ngôn ngữ hỗ trợ phương pháp chỉnh sửa này.

Trên nền tảng FMZdebuggerChỉ thị

Chèn trong mã chính sách của ngôn ngữ JavaScript trên FMZdebuggerChỉ 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:

img

Và chúng ta có thể thấy ở đây.var t = exchange.GetTicker()Chúng tôi viết dưới đây:debuggerChỉ 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.debuggerTuy 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.DevToolsSau đó thực hiện kiểm tra lại, đặt trong mã chính sáchdebuggerNếu không, chúng ta sẽ không có được quyền tự do.debuggerNế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.DevToolsSau 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:debuggerBạ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 ChromeDevToolsCá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ở

    img

    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ởDevToolsSau đó là hình:

img

Giao diện DEBUG trong trình duyệt chính sách ngôn ngữ JavaScript

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ã.debuggerChỉ thị, chính sách ở vị trí tương ứng để ngắt và chờ.

img

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àGetTickerDữ 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.

Thiết lập bản sửa lỗi điểm ngắt bằng tay

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.

img

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.

img

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.

img

DEBUG mã thử nghiệm này

img

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".

img

跳转到exchange.Buy函数调用中。

img

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.


Có liên quan

Thêm nữa

fmzeroChỗ ngủ, có thể làm thế này, 666