리소스 로딩... 로딩...

자바스크립트 전략 백테스팅은 크롬 브라우저의 DevTools에서 디버깅

저자:발명가들의 수량화 - 작은 꿈, 창작: 2022-06-24 14:10:02, 업데이트: 2023-09-25 19:50:23

img

자바스크립트 전략 백테스팅은 크롬 브라우저의 DevTools에서 디버깅

백테스팅 시스템에서 디버깅 전략을 위해, 일반적으로Log()함수가 사용할 수 있기 때문에 DEBUG는 매우 비효율적이고 경험이 적은 초보자 프로그램 테스트자에게는 어렵습니다.JavaScript언어,Chrome브라우저가 더 잘 지원하여 백테스팅 중에 브레이크포인트 디버깅, 싱글 스테이프 디버깅, 변수 값 모니터링, 표현식 모니터링 등을 구현할 수 있습니다.JavascriptFMZ 플랫폼에서 언어 전략 백테스팅. 이 디버깅 방법은 단지 지원되는 것을 참고하십시오.JavaScriptFMZ 플랫폼에서 언어 전략.

debuggerFMZ 플랫폼에서 명령

칩을 삽입합니다debuggerFMZ에서 자바스크립트 언어의 전략 코드에 명령하면 백테스팅 중에 프로그램 실행이 중단됩니다.

우리는 다음 테스트 전략 코드를 사용합니다.

/*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) {
            // When placing a purchase order, if there is an error here, an error will be reported, and null will be returned, and GetTicker will return data t with Buy attribute only, and the attribute name is case-sensitive without buy attribute
            var id = exchange.Buy(t.buy, 0.1)    
            var orderBuy = exchange.GetOrder(id)
        }
        Sleep(500)
    }
}

백테스팅에서 코드를 구성합니다.

/*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"}]
*/

여기서 우리는 우리가 백테스팅을 위해 추가한 거래소가 바이낸스 스팟이라는 것을 볼 수 있습니다.

img

전략 코드를 계속 살펴보면debugger위탁var t = exchange.GetTicker()이 문장은 여기서 브레이크포인트에 도달하는 것과 같고 이 위치에서 프로그램 실행이 멈출 것입니다.debuggers는 전략 코드에서 사용할 수 있지만 그렇게하는 것이 권장되지 않습니다. 특정 위치에 단점만 사용하십시오. 그리고 그 다음의 단점은 브라우저의 DevTools 디버깅 기능에서 설정 할 수 있습니다.

우리는 문을 열어야 합니다DevTools백테스트를 실행하기 전에 크롬 브라우저의debugger전략 코드에서 정하는 바가 적용됩니다. 그렇지 않으면debugger무시 될 것이고, 백테스팅의 전략 프로그램은 중단되거나 중단 될 수 없습니다.DevTools전략을 역 테스트하기 위해, 전략 프로그램은 첫 번째 설정에서 중단됩니다debugger위치, 그리고debugger또한 전략 코드 전체 범위에서 설정할 수 있습니다.

우리는 두 가지 방법으로DevTools크롬 브라우저의 도구:

    1. 우리는 페이지에 오른쪽 클릭을 사용하여 팝업 메뉴를 열 수 있습니다

    DevTools 인터페이스를 표시하기 위해 Check를 클릭합니다.

    1. 단축키를 사용하세요

    또한 단축키를 사용하여DevTools누르면Command+Option+I (Mac)또는Control+Shift+I (Windows, Linux).

열고 나면DevTools그림과 같이:

img

자바스크립트 언어 전략에 대한 브라우저에서 DEBUG의 인터페이스

위의 테스트를 거쳐, 우리가 버튼을 클릭 할 때 Start Backtest 전략의 역 테스트를 위해, 전략은 중지하고 대응 위치에서 기다립니다.debugger코드에 명령어가 설정되어 있습니다. 백테스트는 다음과 같이 고정되어있는 것 같습니다.

img

그것은 전략에 의해 중단 표시된 위치에서 볼 수 있습니다debugger, 전체 프로그램은 n의 값이 1이고 t의 값이 함수로 반환되는 시장 데이터를 실행합니다.GetTicker당신은 위의 그림의 빨간색 상자에서 특정 변수 값을 볼 수 있습니다. 그래서 전략 실행 때 각 변수의 값을 쉽게 관찰 할 수 있습니다.

수동 디버깅을 위한 정지점을 설정합니다

우리는 코드 왼쪽에 있는 줄 번호를 클릭해서 정지점을 추가할 수 있습니다.

img

스크립트 실행을 재개하기 위해 스크립트 실행을 재개하기 위해 재개 스크립트 실행을 클릭하면 프로그램이 다음 중단점으로 실행됩니다. 중단점이 없거나 프로그램이 예외를 일으키는 오류가있는 경우 백테스트가 종료됩니다.

img

또한 실행할 수 있는 몇 가지 버튼이 있습니다. 예를 들어 다음 함수를 건너뛰고 다음 함수 호출로 이동하고, 현재 함수 호출에서 종료하고, 단일 단계를 실행하고, 모든 중단점을 무시합니다.

img

코드 DEBUG를 테스트

img

이 시점에서 실행을 계속하기 위해 스크립트 실행 재개 버튼을 계속 클릭하면 전략 프로그램에서 예외가 발생하고 백테스트는 예외 오류 메시지가 인쇄되어 종료됩니다.

main:17:31 - TypeError: Cannot convert "undefined" to double

구조 기여 이름의 대문자 민감하지 않은 것은 초보자가 저지르는 일반적인 실수입니다.

var id = exchange.Buy(t.buy, 0.1)  //  When placing a purchase order, if there is an error here, an error will be reported, and null will be returned, and GetTicker will return data t with Buy attribute only, and the attribute name is case-sensitive without buy attribute

이 값은 교환에 전달됩니다. 구매 함수는 정의되지 않은 변수입니다. 이 변수는 프로그램 예외를 발생시키고 백테스트를 끝냅니다.

프로그램이 브레이크포인트 위치에서 멈출 때, 이 코드 라인은 실행되지 않습니다. 우리는 step into next function call 버튼을 계속 클릭합니다.

img

거래소로 가세요. 구매 기능 전화.

img

여기서 우리는 가격이 정의되지 않은 변수라는 것을 볼 수 있습니다.

위의 접근법을 사용하면 프로그램 버그를 단계적으로 알아내는 것이 쉽습니다. 많은 초보자들은 종종 실수를합니다. 예를 들어, 배열의 인덱스가 제한을 벗어나 액세스되고, 정의되지 않은 변수가 참조되고, 표현식이 잘못 작성되어 있습니다. 이 모든 것은 프로그램을 DEBUG하기 쉽습니다.


관련

더 많은