Débogage des stratégies JavaScript dans le navigateur Chrome par DevTools

Auteur:Le petit rêve, Créé: 2022-06-22 14:23:26, Mis à jour: 2023-09-18 20:24:01

img

Débogage des stratégies JavaScript dans le navigateur Chrome par DevTools

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.JavaScriptLe débogage stratégique de la langueChromeLes 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.JavascriptDEBUG lors de la réévaluation de la politique de la langue.JavascriptLes stratégies linguistiques soutiennent cette méthode de débogage.

Le blogueur a publié un article sur le sujet.debuggerLes instructions

Insérer dans le code de stratégie de la langue JavaScript sur FMZdebuggerL'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:

img

Si vous continuez à regarder le code de la stratégie, vous pouvez voirvar t = exchange.GetTicker()Nous avons écrit cette phrase.debuggerL'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.debuggerIl 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.DevToolsRetournez à l'étape précédente.debuggerIl y a une différence entre les deux.debuggerLe programme de stratégie de retouche ne peut pas être interrompu et s'arrête au point de rupture.DevToolsUne fois la stratégie réévaluée, le programme de stratégie s'arrête au premier réglage.debuggerLa localisation:debuggerIl est également possible de le configurer dans le champ d'application global de la stratégie de code.

Nous ouvrons le navigateur Chrome.DevToolsIl existe deux façons d'utiliser les outils:

  • 1° Nous cliquons avec le bouton droit pour ouvrir le menu contextuel.

    img

    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.DevToolsIl y a eu une réaction de la part de la police.

img

L'interface de DEBUG dans le navigateur pour la stratégie de langage JavaScript

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.debuggerL'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:

img

Vous pouvez voir, dans la stratégiedebuggerMarquer l'emplacement de l'interruption, le programme entier n'exécute que l'attribution n à 1, l'attribution t à 1.GetTickerLa 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.

Débogage manuel du point de rupture

Nous pouvons cliquer sur la ligne à gauche du code pour ajouter un point d'interruption.

img

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.

img

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.

img

Donnez le code de débogage à ce test.

img

À 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".

img

跳转到exchange.Buy函数调用中。

img

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.


Relationnée

Plus de

Je suis zéro.La chambre à coucher, peut-être aussi, 666!