Für Debugging-Strategien in Retargeting-Systemen kann man normalerweise nurLog()
Die Funktion. DEBUG ist sehr uneffizient und für Neulinge mit wenig Erfahrung im Programm-Testen schwierig.JavaScript
Die Strategie des Debugs der SpracheChrome
Die Browser unterstützen das System besser. Es ist möglich, Bremsschnitt- und Einstufungsdebugging, Variablenwert- und Expressions-Monitoring, etc. zu ermöglichen.Javascript
DEBUG bei der Wiederholung der Sprachpolitik.Javascript
Die Sprachstrategien unterstützen diese Art der Debugging.
debugger
AnweisungEinfügen in die Strategiecode der JavaScript-Sprache auf FMZdebugger
Eine Anweisung, die bei einem Wiederholungsvorgang die Ausführung eines Programms unterbrechen kann.
Wir haben folgende Teststrategie-Code verwendet:
/*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)
}
}
Aus der Wiederholung des Konfigurationscodes
/*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"}]
*/
Wie Sie sehen können, wurde bei unserer Rezension die Börse Binance (Binance) auf der Stelle hinzugefügt, die wie folgt konfiguriert ist:
Wenn wir weiter auf die Strategie-Code schauen, können wir sehen, dassvar t = exchange.GetTicker()
Und wir schreiben:debugger
Die Anweisung ist gleichbedeutend mit einem Punkt, an dem die Ausführung des Programms aufhört.debugger
Es ist jedoch nicht empfehlenswert, dies zu tun, wenn man nur einen Abbruch an einem bestimmten Ort schreibt, der in der Debugging-Funktion von DevTools des Browsers eingestellt werden kann.
Es ist nicht möglich, dass Sie das Internet nicht nutzen können.DevTools
Und dann wiederholen Sie die Wiederholung, die in Ihrem Code festgelegt ist.debugger
Das heißt, dass wir uns nicht mehr auf die Tatsache konzentrieren.debugger
Das Programm wird ignoriert und die wiederholte Strategie kann nicht unterbrochen werden.DevTools
Nach der Wiederholung der Strategie wird die Strategie-Prozedur unterbrochen.debugger
Die Position.debugger
Sie können auch in der globalen Reichweite des Code-Strategies eingestellt werden.
Wir öffnen den Chrome-Browser.DevTools
Es gibt zwei Arten, wie das Tool funktioniert:
1. Wir klicken mit der rechten Taste auf die Popup-Menüseite.
Wenn wir auf "Check" klicken, zeigt sich die DevTools-Oberfläche.
2. Verwenden Sie die Schaltfläche.
Sie können es auch mit der Schaltfläche öffnen.Command+Option+I (Mac)
oderControl+Shift+I(Windows、Linux)
Öffnen.DevTools
。
Öffnen.DevTools
Die Folge:
Wenn wir dann auf "Start Retest" klicken, wird die Retest-Politik ausgelöst, da die Code-Einstellungen für die Re-Retest-Politik in der ersten Stufe des Tests nicht funktionieren, sondern nur die Re-Retest-Politik in der zweiten Stufe.debugger
Instructions, Strategien in der entsprechenden Position unterbrechen und warten.
Sie können sehen, dass in der Strategiedebugger
Markieren Sie den Ort der Unterbrechung, und der gesamte Prozess führt nur die n-Zuteilung zu 1, die t-Zuteilung zuGetTicker
Die Funktion gibt die Daten zurück. In den roten Feldern in der Abbildung oben können Sie die Werte der einzelnen Variablen sehen, so dass Sie bequem die Werte der einzelnen Variablen beim Ausführen der Strategie sehen können.
Wir können auf die linke Zeile des Codes klicken, um einen Punkt hinzuzufügen.
Klicken Sie auf "resume script execution", um das Skript wieder auszuführen, das Programm läuft bis zum nächsten Ausbruch. Wenn es keinen Ausbruch gibt oder ein Fehler im Programm eine Ausnahme auslöst, endet die Rückprüfung.
Es gibt noch mehrere Buttons, die Sie nutzen können: Überspringen der nächsten Funktion, gehen Sie zum nächsten Funktionsanruf, springen Sie den aktuellen Funktionsanruf aus, führen Sie einen Schritt aus, ignorieren Sie alle Unterbrechungen usw.
Wenn wir weiterhin auf die Schaltfläche "Resume script execution" klicken, wird ein Ausfall des Programms erzeugt, der die Wiederholung beendet und eine Ausfallfehlermeldung druckt.
main:17:31 - TypeError: Cannot convert "undefined" to double
Dies ist ein häufiger Fehler für Neulinge, wenn man einen Struktur-Attribut-Namen nicht groß oder klein schreibt.
var id = exchange.Buy(t.buy, 0.1) // 下买单,此处有错误,会报错,返回null,GetTicker返回数据t,只有Buy属性,没有buy属性。
导致传入exchange.Buy函数的价格是一个undefined变量,引起程序异常,回测结束。
Wenn das Programm an der Ausbruchsposition aufhört, wird diese Codezeile nicht ausgeführt. Wir klicken weiter auf die Schaltfläche "step into next function call".
跳转到exchange.Buy函数调用中。
Sie sehen, dass der Preis eine undefinierte Variable ist.
Diese Methode erleichtert die Schritt-für-Schritt-Erkennung eines Programms-BUG. Viele Anfänger machen häufig Fehler wie z.B. Array-Index-Zugriffsüberschreitungen, Referenzen zu nicht definierten Variablen, Schreibfehler bei Ausdrücken usw. So kann man das Programm leicht DEBUG machen.
fmzeroDas Schlafzimmer, das geht auch, 666!