이 경우, 이 자리에서 이 자리에서 이 자리에서Log()
함수. 이러한 DEBUG의 효율성은 매우 낮으며, 프로그램 테스트에 경험이 적은 초보자에게는 다소 어려움이 있다.JavaScript
언어에 대한 전략적 오디션Chrome
브라우저가 더 나은 지원을 가지고 있습니다. 반복 중점 디제이, 단 단계 디제이, 변수 값 모니터링, 표현량 모니터링 등을 수행 할 수 있습니다.Javascript
언어의 정책이 DEBUG을 반복할 때. 참고로 FMZ에서는 DEBUG만 가능합니다.Javascript
언어의 전략은 이러한 오프닝 방법을 지원합니다.
debugger
명령FMZ에 있는 자바스크립트 언어의 정책 코드 안에 삽입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 (비안안) 현금으로 구성되어 있습니다.
그리고 이 전략 코드를 계속 살펴보면var t = exchange.GetTicker()
이 문장 아래에는debugger
명령어, 즉 여기서 단점을 두면 프로그램이 이 위치까지 실행되는 것을 멈추는 것과 같습니다. 정책 코드에서 여러 가지 방법을 사용할 수 있습니다.debugger
하지만 그렇게 하는 것은 권장되지 않습니다. 단 한 개의 단점만 한 곳에 두면 됩니다. 그 다음 단점은 브라우저의 DevTools 디뷰 기능에서 설정할 수 있습니다.
이 웹 브라우저를 사용하려면DevTools
다시 재검토를 실행하면, 정책 코드에서 설정된debugger
이 법안이 시행되기 전까지는요.debugger
방치될 수 있고, 재검토된 정책 프로그램은 중단될 수 없습니다.DevTools
다시 테스트 후 정책 프로그램은 첫 번째 설정에서 중단됩니다.debugger
위치,debugger
또한 전략 코드의 범용 영역을 설정할 수 있습니다.
우리는 Chrome 브라우저를 열고DevTools
이 도구는 두 가지 방법으로 사용됩니다.
1, 오른쪽 버튼을 눌러 페이지 팝업 메뉴를 엽니다.
"검색"을 클릭하면 DevTools 인터페이스가 표시됩니다.
2. 단축키를 사용하세요
이 버튼을 누르면Command+Option+I (Mac)
또는Control+Shift+I(Windows、Linux)
열어요DevTools
。
열어요DevTools
그 후의 장면은 다음과 같습니다:
그리고 위의 테스트에서는, 우리가 "시작 재검토" 버튼을 클릭하면,debugger
명령어, 정책이 해당 위치에서 중단되기를 기다립니다. 재검토는 꽉 막혀있는 것처럼 보입니다. 아래 그림과 같이:
그리고 이 모든 것은debugger
정지된 위치를 표시합니다. 전체 프로그램은 n값을 1로 할당하고 t값을GetTicker
함수가 반환하는 트랜지션 데이터. 위의 그림의 빨간색 박스에 특정 변수의 값을 볼 수 있습니다. 그래서 정책 실행 시 각 변수의 값을 보는 것이 편리합니다.
우리는 코드 왼쪽에 있는 줄 번호를 클릭하여 단점을 추가할 수 있습니다.
"resume script execution"를 클릭하면 스크립트 실행을 재개하고, 프로그램이 다음 인터포트까지 실행됩니다. 인터포트가 없거나 프로그램이 오류가 발생하면 예외가 발생하면 재검토가 종료됩니다.
다음 함수를 건너뛰고, 다음 함수 호출로 이동하고, 현재 함수 호출을 건너뛰고, 단일 단계 실행, 모든 단절점을 무시하는 등 몇 가지 버튼도 구현할 수 있습니다.
이 때, 우리가 "resume script execution" 버튼을 계속 클릭하면 실행을 계속할 때, 정책 프로그램이 비정상적으로 발생하고, 재검토가 종료되고, 비정상적 오류 메시지를 인쇄합니다.
main:17:31 - TypeError: Cannot convert "undefined" to double
이것은 새로운 사람들이 종종 저지르는 실수입니다. 구조 속성의 이름을 대소문으로 구분하지 않는 것입니다.
var id = exchange.Buy(t.buy, 0.1) // 下买单,此处有错误,会报错,返回null,GetTicker返回数据t,只有Buy属性,没有buy属性。
导致传入exchange.Buy函数的价格是一个undefined变量,引起程序异常,回测结束。
이 코드 라인은 프로그램에서 종료되는 지점에서 실행되지 않습니다. 우리는 "step into next function call" 버튼을 클릭합니다.
跳转到exchange.Buy函数调用中。
가격이라는 것은 정의되지 않은 변수입니다.
위의 방법을 사용하면 프로그램 BUG을 단계적으로 쉽게 찾을 수 있습니다. 많은 초보자들이 자주 저지르는 오류: 예를 들어, 배열의 인덱스 접근 경계를 넘기거나 정의되지 않은 변수를 참조하거나 표현식 쓰기 오류 등을 참조하십시오. 이 방법을 통해 프로그램을 DEBUG하는 것이 쉽습니다.
fmzero잠자리, 이렇게도 할 수 있어요, 666