avatar of 发明者量化-小小梦 发明者量化-小小梦
집중하다 사신
4
집중하다
1271
수행원

크롬 브라우저 DevTools에서 JavaScript 전략 백테스팅 디버깅

만든 날짜: 2022-06-22 14:23:26, 업데이트 날짜: 2023-09-18 20:24:01
comments   1
hits   1736

크롬 브라우저 DevTools에서 JavaScript 전략 백테스팅 디버깅

크롬 브라우저 DevTools에서 JavaScript 전략 백테스팅 디버깅

백테스팅 시스템에서 디버깅 전략의 경우 일반적으로 다음과 같습니다.Log()기능. 이런 종류의 DEBUG는 효율성이 매우 낮으며, 프로그램 테스트에 경험이 부족한 초보자에게는 어렵습니다. ~을 위한JavaScript언어의 전략 디버깅Chrome브라우저의 지원이 더 좋습니다. 백테스팅 중 중단점 디버깅, 단일 단계 디버깅, 변수 값 모니터링, 표현식 모니터링 등을 실현할 수 있습니다. 그러면 이 방법을 사용해 FMZ를 제어하는 ​​방법을 알아보겠습니다.Javascript해당 언어로 전략을 백테스트할 때 DEBUG를 사용합니다. FMZ에서만 가능합니다.Javascript해당 언어의 정책은 디버깅에 대한 이러한 접근 방식을 지원합니다.

FMZ 플랫폼에서debugger지침

FMZ에 JavaScript 언어의 정책 코드를 삽입합니다.debugger백테스팅 중에 프로그램 실행을 방해할 수 있는 지침입니다.

다음의 테스트 전략 코드를 사용합니다:

/*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)
    }
}

백테스트 구성 코드에서

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

백테스트 중에 추가한 거래소가 Binance spot이고, 구성은 스크린샷에 표시된 것과 같습니다.

크롬 브라우저 DevTools에서 JavaScript 전략 백테스팅 디버깅

전략 코드를 계속 살펴보면 다음을 알 수 있습니다.var t = exchange.GetTicker()이 문장 아래에 우리는 이렇게 썼습니다.debugger이 명령은 여기에 중단점을 설정하는 것과 동일하며, 프로그램은 이 위치에 도달하면 멈춥니다. 다수의debugger, 하지만 그렇게 하는 것은 권장되지 않습니다. 특정 위치에 중단점을 설정하기만 하면 됩니다. 이후 중단점은 브라우저의 DevTools 디버깅 기능에서 설정할 수 있습니다.

먼저 크롬 브라우저를 열어야 합니다.DevTools그런 다음 백테스트를 수행하고 전략 코드 세트를 설정합니다.debugger그렇지 않으면 적용됩니다debugger이는 무시되며 백테스트 전략 프로그램은 중단점에서 중단되거나 멈출 수 없습니다. 열려 있는DevTools전략 백테스트 후, 전략 프로그램은 첫 번째 세트에서 중단됩니다.debugger위치,debugger정책 코드의 글로벌 범위에서도 설정할 수 있습니다.

크롬 브라우저를 엽니다DevTools도구에는 두 가지 유형이 있습니다.

  • 1. 페이지를 마우스 오른쪽 버튼으로 클릭하여 팝업 메뉴를 엽니다.

크롬 브라우저 DevTools에서 JavaScript 전략 백테스팅 디버깅

“검사”를 클릭하면 DevTools 인터페이스가 표시됩니다.

  • 2. 단축키를 사용하세요

단축키를 이용해서 열 수도 있습니다.Command+Option+I (Mac)또는Control+Shift+I(Windows、Linux)열려 있는 DevTools

열려 있는DevTools그 후, 그림과 같이:

크롬 브라우저 DevTools에서 JavaScript 전략 백테스팅 디버깅

JavaScript 언어 전략의 브라우저에서의 디버그 인터페이스

위의 테스트에 따라 코드 설정으로 인해 전략을 백테스트하기 위해 “백테스트 시작” 버튼을 클릭했을 때debugger지시, 전략은 중단되고 해당 위치에서 대기합니다. 백테스트는 아래에 표시된 대로 중단된 것 같습니다.

크롬 브라우저 DevTools에서 JavaScript 전략 백테스팅 디버깅

전략에서 볼 수 있듯이debugger인터럽트 위치를 표시하십시오. 전체 프로그램은 1에 할당된 n과 t에 할당된 t만 실행합니다.GetTicker함수에서 반환되는 시장 데이터입니다. 위 그림의 빨간색 상자에서는 구체적인 변수 값을 볼 수 있으며, 이를 통해 전략을 실행할 때 다양한 변수의 값을 관찰하는 것이 매우 편리합니다.

디버깅을 위해 수동으로 중단점 설정

중단점을 추가하려면 코드의 왼쪽에 있는 줄 번호를 클릭하면 됩니다.

크롬 브라우저 DevTools에서 JavaScript 전략 백테스팅 디버깅

“스크립트 실행 재개”를 클릭하여 스크립트 실행을 재개합니다. 프로그램은 다음 중단점까지 실행됩니다. 중단점이 없거나 프로그램에 오류가 있어 예외가 발생하면 백테스트가 종료됩니다.

크롬 브라우저 DevTools에서 JavaScript 전략 백테스팅 디버깅

다음 함수 건너뛰기, 다음 함수 호출로 들어가기, 현재 함수 호출에서 나가기, 단일 단계 실행, 모든 중단점 무시 등에 사용할 수 있는 버튼도 있습니다.

크롬 브라우저 DevTools에서 JavaScript 전략 백테스팅 디버깅

이 테스트 코드에 DEBUG를 지정하세요.

크롬 브라우저 DevTools에서 JavaScript 전략 백테스팅 디버깅

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

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

이는 구조 속성 이름의 대문자와 소문자를 구분하지 않는 초보자가 자주 저지르는 실수입니다.

var id = exchange.Buy(t.buy, 0.1)  //  下买单,此处有错误,会报错,返回null,GetTicker返回数据t,只有Buy属性,没有buy属性。

결과적으로 거래소에 전달된 가격은 정의되지 않은 변수이고, 이로 인해 프로그램 예외가 발생하고 백테스트가 종료됩니다.

프로그램이 중단점에서 멈추면 이 코드 줄은 실행되지 않습니다. 계속해서 “다음 함수 호출로 이동” 버튼을 클릭합니다.

크롬 브라우저 DevTools에서 JavaScript 전략 백테스팅 디버깅

거래소로 이동합니다.구매 함수 호출.

크롬 브라우저 DevTools에서 JavaScript 전략 백테스팅 디버깅

가격이 정의되지 않은 변수인 것을 알 수 있습니다.

위의 방법을 사용하면 단계별로 프로그램 버그를 쉽게 찾을 수 있습니다. 초보자가 자주 저지르는 실수는 다음과 같습니다. 예를 들어, 배열 인덱스에 대한 범위를 벗어난 접근, 정의되지 않은 변수에 대한 참조, 잘못된 표현식 작성 등입니다. 이렇게 하면 프로그램 디버깅이 쉬워집니다.