Pour les stratégies de débogage dans les systèmes de retouche, on ne peut généralement utiliser queLog()
La fonction DEBUG est très peu efficace et peut être difficile pour les débutants qui n'ont pas beaucoup d'expérience dans le test de programme.JavaScript
Le débogage stratégique de la langueChrome
Les navigateurs ont une meilleure prise en charge. Vous pouvez effectuer le débogage de point d'interruption lors de la répétition, le débogage en une seule étape, la surveillance des valeurs de variables, la surveillance des expressions, etc.Javascript
DEBUG lors de la réévaluation de la politique de la langue.Javascript
Les stratégies linguistiques soutiennent cette méthode de débogage.
debugger
Les instructionsInsérer dans le code de stratégie de la langue JavaScript sur FMZdebugger
L'instruction permettant d'interrompre l'exécution d'un programme lors d'un relevé.
Nous utilisons le code de stratégie de test suivant:
/*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)
}
}
Le code de configuration est retesté
/*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"}]
*/
Comme vous pouvez le voir, l'échange que nous avons ajouté lors de notre revue est Binance (Binancial) au comptant, configuré comme dans la capture d'écran:
Si vous continuez à regarder le code de la stratégie, vous pouvez voirvar t = exchange.GetTicker()
Nous avons écrit cette phrase.debugger
L'instruction, c'est comme si vous appuyez sur un point d'arrêt et que le programme s'arrête d'exécuter à ce point.debugger
Il n'est pas recommandé de le faire, mais il suffit de taper une interruption à un endroit et les interruptions suivantes peuvent être configurées dans la fonction de débogage de DevTools du navigateur.
Il faut ouvrir le navigateur Chrome.DevTools
Retournez à l'étape précédente.debugger
Il y a une différence entre les deux.debugger
Le programme de stratégie de retouche ne peut pas être interrompu et s'arrête au point de rupture.DevTools
Une fois la stratégie réévaluée, le programme de stratégie s'arrête au premier réglage.debugger
La localisation:debugger
Il est également possible de le configurer dans le champ d'application global de la stratégie de code.
Nous ouvrons le navigateur Chrome.DevTools
Il existe deux façons d'utiliser les outils:
1° Nous cliquons avec le bouton droit pour ouvrir le menu contextuel.
Nous cliquons sur "Vérifier" et l'interface DevTools s'affiche.
2° Utilisez les touches de raccourci
Vous pouvez également utiliser le bouton de raccourci pour l'ouvrir.Command+Option+I (Mac)
ouControl+Shift+I(Windows、Linux)
Je l'ouvre.DevTools
。
Je l'ouvre.DevTools
Il y a eu une réaction de la part de la police.
Ensuite, dans le test ci-dessus, lorsque nous cliquons sur le bouton "Démarrer le retouche", la stratégie de retouche est définie dans le code.debugger
L'instruction, la stratégie sont en attente d'interruption à leur emplacement correspondant. La réévaluation est comme bloquée, comme le montre le graphique suivant:
Vous pouvez voir, dans la stratégiedebugger
Marquer l'emplacement de l'interruption, le programme entier n'exécute que l'attribution n à 1, l'attribution t à 1.GetTicker
La fonction renvoie des données de transaction. Les valeurs des variables spécifiques sont indiquées dans la zone rouge du graphique ci-dessus, ce qui permet de voir facilement les valeurs des variables lors de l'exécution de la stratégie.
Nous pouvons cliquer sur la ligne à gauche du code pour ajouter un point d'interruption.
Cliquez sur " résume script execution " pour reprendre l'exécution du script, le programme sera exécuté jusqu'au prochain point de rupture, et la retouche s'arrêtera si aucun point de rupture n'existe ou si le programme a une erreur qui provoque une exception.
Il y a aussi quelques boutons qui peuvent être utilisés: sauter la fonction suivante, aller à l'appel de la fonction suivante, sauter l'appel de la fonction en cours, exécuter en une seule étape, ignorer toutes les interruptions, etc.
À ce stade, lorsque nous continuons à cliquer sur le bouton "Résumer l'exécution du script" pour poursuivre l'exécution, le programme d'instructions se produit une exception, le retrait est terminé et un message d'erreur exceptionnel est imprimé.
main:17:31 - TypeError: Cannot convert "undefined" to double
C'est une erreur fréquente chez les débutants, de ne pas distinguer la taille et la taille des noms d'une propriété structurelle.
var id = exchange.Buy(t.buy, 0.1) // 下买单,此处有错误,会报错,返回null,GetTicker返回数据t,只有Buy属性,没有buy属性。
导致传入exchange.Buy函数的价格是一个undefined变量,引起程序异常,回测结束。
Cette ligne de code n'est pas exécutée lorsque le programme s'arrête au point d'arrêt. Nous continuons en cliquant sur le bouton "step into next function call".
跳转到exchange.Buy函数调用中。
Voir le prix comme une variable indéfinie.
L'utilisation de cette méthode permet de détecter facilement un programme BUG. Beaucoup de débutants commettent des erreurs courantes: par exemple, l'accès à l'index d'une arithmétique, la référence à des variables non définies, des erreurs d'écriture d'expressions, etc. De cette façon, il est facile de DEBUG le programme.
Je suis zéro.La chambre à coucher, peut-être aussi, 666!