Les ressources ont été chargées... Je charge...

Pour les débutants, jetez un coup d'œil Je vous emmène à la négociation quantitative de crypto-monnaie (3)

Auteur:Je suis désolée., Créé à: 2022-04-20 11:46:56, mis à jour à: 2022-04-20 16:53:34

Pour les débutants, jetez un coup d'œil Je vous emmène à la négociation quantitative de crypto-monnaie (3)

Message d'erreur

Dans les articles précédents, nous avons appris que le soi-disant trading programmé et quantitatif est un programme de script basé sur les données obtenues des plateformes, après une série de calculs, jugements et déclencheurs pour effectuer certaines opérations, et exploiter les comptes de la plateforme pour le commerce. Ces actions d'acquisition de données et d'exploitation des comptes sont toutes effectuées via les interfaces API de la plateforme. En termes simples, les programmes de script interagissent avec les plateformes. Puisqu'il s'agit d'interaction, il doit y avoir une interaction normale et une interaction anormale. Lorsqu'une interaction anormale se produit, une interface renvoie les informations d'exception.

Bien sûr, les systèmes de trading programmés et quantitatifs sur le marché ou les programmes auto-développés auront diverses invites et messages d'erreur. Ces messages d'erreur ne se limitent pas aux messages d'erreur signalés par les API de la plate-forme. Il existe également d'autres erreurs, telles que: erreur d'exception du programme pendant le fonctionnement, erreur de configuration, erreur de syntaxe du programme, etc.

Sur la plateforme de trading FMZ Quant, les messages d'erreur peuvent être grosso modo divisés en plusieurs catégories:

  • Erreur de syntaxe de stratégie Ce type d'erreur est l'erreur la plus commune, qui est généralement causée par la situation que les débutants ne connaissent pas la programmation, et le leur code écrit au cours de l'étude a des erreurs de syntaxe.

    img

    Pour ce type d'erreur, l'invite d'erreur peut généralement être vue sur la page d'édition de la stratégie, et dans cette circonstance, la stratégie ne peut pas être exécutée (une fois la stratégie exécutée, une erreur sera signalée, comme indiqué dans l'image).

    imgPar conséquent, vous pouvez prendre l'habitude de jeter un coup d'œil à la page d'édition de stratégie après avoir terminé d'écrire le code, pour voir s'il y a une petite croix rouge; s'il y en a une, cela signifie qu'il y a certainement une erreur évidente.

  • Exception de programme pendant le fonctionnement causée par un bug de programme de stratégie Si un programme présente des bugs pendant son fonctionnement, le déclencheur de l'exception fera arrêter le programme de manière anormale, et ce type de messages d'erreur sera affiché.

    img

    img

    Ce genre d'erreurs peut tous provoquer l'exception du programme, et arrêter le programme d'exécuter.

  • Erreur causée par une configuration et des paramètres incorrects

    Sur la plateforme FMZ, toutes les paires de négociation sont définies sous la formeX_Y, dans lequel X représente le nom de la monnaie de négociation, et Y représente le nom de la monnaie de cotation (la monnaie de cotation de la paire de négociation dans les contrats à terme cryptographiques à marge est généralement exprimée en USD, et qui est introduite dans les articles précédents).BTC_USDT; supposons que je l'écris mal, je l'écris dansBTC-USDT.

    img

    Rapport d'erreur dans le système de backtest sur la plateforme FMZ:

    img

    Rapport d' erreur dans un bot:

    img

    Ou, l'erreur la plus commune que les débutants rencontrent souvent:

    img

    Ce type d'erreur est causé par l'invalidation duAPI KEYdans l'objet d'échange configuré après la modification du mot de passe d'un compte FMZ (les clés API des utilisateurs sont toutes cryptées par l'extrémité du navigateur et configurées sur la plateforme FMZ). Cela rendra une stratégie incapable de démarrer, ce qui provoquera une erreur signalée.

  • Erreur causée par l'interface d'appel

    Les erreurs d'appel d'interface sont souvent rencontrées lors de l'exécution de stratégies.interfaces qui effectuent des demandes réseauetles interfaces qui ne font pas de requêtes réseau. L'erreur d'interface ne provoquera pas directement l'arrêt du programme de stratégie. Habituellement, en raison de l'exception d'appel d'interface, les données erronées sont renvoyées et la stratégie ne fait pas la tolérance à l'erreur. Ensuite, l'erreur d'exception de programme causée par les données erronées provoque l'arrêt du programme (le concept de tolérance à l'erreur a déjà été introduit dans les articles précédents).

    Voici une liste de plusieurs messages d'erreur des interfaces qui effectuent des demandes réseau:

    • Temps d'arrêt du réseau

      img

      L'un des messages d'erreur que les débutants rencontrent souvent est causé par l'utilisation d'un périphérique de réseau domestique (PC ou serveurs domestiques).

    • Erreur http 429

      img

      Il s'agit d'un des messages d'erreur classiques; la raison en est qu'une interface de plateforme est appelée trop fréquemment, dépassant la limite de fréquence de la plateforme. (mentionné dans les articles précédents). Certains nouveaux étudiants peuvent dire que l'erreur ne sera pas soulevée s'ils demandent des clés API de plusieurs autres plates-formes ou plusieurs comptes de plate-forme. Nous devons savoir que la limite de fréquence d'accès aux interfaces par les plates-formes est généralement basée sur les adresses IP. En termes simples, tant que toutes les demandes envoyées à partir d'une adresse IP sont comptées sur l'adresse, le serveur de plate-forme refusera l'accès à l'IP, si le nombre de demandes dépasse la limite.

    • Erreur du service d'interface de plateforme

      Le temps d'arrêt et les erreurs 429 mentionnées ci-dessus sont des erreurs dans la couche réseau. S'il y a un problème dans la couche du service d'interface de la plate-forme, une erreur sera également signalée. Par exemple, je veux obtenir les cotations du marché au comptant, mais j'ai mis en place une paire de négociation inexistante. Je le teste dans l'outil de débogage de la plate-forme FMZ. L'outil de débogage est un outil de test très pratique, qui est très approprié pour le test réel de bot d'appels de fonctions et d'acquisition de données.

      img

      Le résultat de l'exécution de l'outil de débogage; il n'y a pas de différence entre l'exécution de l'outil de débogage et l'exécution du bot.img

      Huobi	error GetTicker: Invalid ticker: {"Info":{"err-code":"invalid-parameter","err-msg":"invalid symbol","status":"error","ts":1620872079355},"High":0,"Low":0,"Sell":0,"Buy":0,"Last":0,"Volume":0,"OpenInterest":0,"Time":0}
      

      Le message d'erreur indiqué ici signifie que la paire de négociation est invalide (voir ici:"err-msg":"invalid symbol") et Par exemple, il existe de nombreuses erreurs liées au service. Par exemple, lors de la définition du levier, certaines plateformes ne prennent pas en charge les valeurs de levier avec des décimales. Si une valeur de levier a des décimales, cela provoquera également une erreur dans l'appel d'interface.

    Listez un appel d'interface qui ne génère pas de demande réseau:

    • Code du contrat à terme Certaines interfaces ne définissent que certaines variables globales dans le système, et ne font pas de requêtes réseau.

      img

      Toutefois, si les paramètres sont passés ou écrits incorrectement, des erreurs seront également signalées.

      img

    Quel que soit le type d'erreur, le message d'erreur affiché est l'information clé pour trouver le problème, c'est-à-dire que vous pouvez distinguer le problème du message d'erreur. Vous pouvez utiliser un outil de traduction pour traduire les informations d'erreur dans la langue que vous pouvez lire, pour extraire les mots clés. Par exemple,"err-msg":"invalid symbol"Vous pouvez probablement savoir que l'erreur est causée par le mauvais réglage de la paire de trading, car le symbole représente généralement le code de trading et la paire de trading en anglais. Pour les messages d'erreur, nous clôturerons la discussion ici. Nous avons un post où les FAQ sont collectées et seront mises à jour en permanence, pour la recherche:https://www.fmz.com/bbs-topic/1427.

Système de contre-test

Le système de backtest est également le point clé d'un outil quantitatif. Le système de backtest peut facilement tester le prototype d'une stratégie, et d'abord vérifier les bugs potentiels et les problèmes logiques dans la stratégie, mais le système de backtest doit être considéré de manière rationnelle. Le système de backtest peut refléter certains problèmes d'une stratégie dans une certaine mesure.

Ce qui suit est une brève description du système de backtest sur la plateforme FMZ au niveau des différents langages de stratégie pris en charge par FMZ. (Certaines introductions du système de backtest ont été mentionnées dans les articles précédents.)

  • JavaScript

    Le backtest est effectué sur le navigateur et utilise les ressources matérielles locales.

  • Python

    Dans le backtest sur un docker, vous pouvez choisir à quel docker attribuer (soit le docker déployé par vous-même, soit le docker public de la plate-forme FMZ). En raison de la grande charge du docker public sur la plate-forme FMZ, il est recommandé d'utiliser le backtest du docker local (cela sera également plus rapide. Dans le backtest du docker public, lorsqu'il est surchargé, certaines tâches de backtest seront annulées, le résultat du backtest étant interrompu).

  • C++

    Contrairement aux langages de script, les stratégies C++ doivent être compilées puis exécutées. La stratégie de langage C++ sera compilée d'abord sur la plateforme FMZ (serveur) (s'il y a un problème avec l'écriture du code, la compilation peut ne pas passer, et un message d'erreur sera immédiatement indiqué).

  • Taille de la langue

    La sous-couche est implémentée par JavaScript, et le backtest est également effectué sur le navigateur.

  • Visualisation

    La sous-couche est implémentée par JavaScript, et le backtest est également effectué sur le navigateur

Le système de backtest de la plateforme de trading FMZ Quant dispose de deux modes de backtest (peu importe la langue dans laquelle une stratégie est écrite, le mode de backtest est un réglage du système de backtest, et les options de réglage sont les mêmes pour toutes les langues prises en charge sur FMZ).

img

Pour l'instruction du système de backtest, vous pouvez vous référer à la partie connexe du tutoriel de rédaction de stratégie sur la plateforme FMZ:

https://www.fmz.com/bbs-topic/9091

    1. Test de retour au niveau de simulation Le backtest au niveau de la simulation consiste généralement à générer les données de prix des nœuds de temps successifs sur la base des données de la ligne K de manière simulée.
    There are the highest, the lowest, open and close prices in one bar, which forms a price structure. Within the time range represented by the K-line, the prices are all in the price structure. Therefore, as long as the generated price is within the K-line structure of the four prices, the simulated price is reasonable.  
    

    Tout comme la simulation affichée dans l'image suivante:img

    Bien sûr, il est un peu plus compliqué que ce qui est montré sur l'image de réaliser la simulation dans le système de backtest, qui ne sera pas discuté plus loin ici. Après avoir connu le principe, vous devez faire attention aux inconvénients du backtest au niveau de la simulation. Bien que le backtest au niveau de la simulation soit très rapide (parce que les prix générés par la simulation ne sont pas des prix réels seconde par seconde publiés successivement).tendance de changement de tique simulée, la stratégie fonctionnera très bien (mais en réalité, le prix peut ne pas changer avec la tendance, bien que le prix se situe dans la structure de la barre de la ligne K). La ligne K utilisée pour générer les données de tick simulées ici est appelée la ligne K inférieure, et la période de la ligne K est appeléela période inférieure de la ligne K, qui est affichée sur la page de définition de la stratégie sous la forme de la figure suivante:

    img

    Ici, j'ai défini 1 minute, ce qui signifie utiliser les données de la ligne K avec une période de 1 minute comme source de données pour générer les données de tick simulées.

    Il y a un autre point que, pour une stratégie à haute fréquence, le backtest au niveau de la simulation n'est évidemment pas approprié.

    1. Retour en arrière sur le niveau réel du marché Après avoir parlé du niveau de simulation, parlons du niveau réel du marché. De manière générale, le backtest du niveau réel du marché consiste à libérer véritablement les données de prix seconde par seconde dans le test et à laisser la stratégie retracer le prix de chaque seconde sur le marché. Ce type de mode de backtest peut tester certaines stratégies de trading avec une fréquence élevée et obtenir un résultat avec une certaine valeur de référence. L'inconvénient est que la quantité de données de backtest au niveau du marché réel est trop grande, et il ne peut pas être testé dans une large plage de temps (généralement la plage de temps est inférieure à 1 jour).Pas besoin d'historique des transactions(les données historiques des transactions et les données de profondeur du marché ont également des instantanés seconde par seconde dans le backtest au niveau du marché réel, de sorte que la quantité de données de backtest au niveau du marché réel est énorme).

    img

Où se trouve la source de données du système de backtest FMZ Quant? Le système de backtest utilise les données du tableau de bord sur la plateforme FMZ par défaut. Le tableau de bord de FMZ collecte automatiquement les données de marché de chaque devise sur chaque plateforme et les fournit au système de backtest de la plateforme.

    1. Utiliser les données du tableau de bord FMZ Il est mentionné dans les articles précédents:La présente décision est entrée en vigueur le jour de la publication de la décision d'ouverture.Je suis désolée. Les données de backtest fournies par la plate-forme ne prennent en charge qu'un nombre limité de paires de négociation. (les données de backtest de l'ensemble du marché et de toutes les devises sont astronomiques et il n'est pas réaliste de les collecter toutes. La plate-forme a collecté des données de marché des plates-formes et des devises traditionnelles.)
    1. Utiliser les données de la source de données personnalisée Vous pouvez sélectionner les options sur la page de backtest pour définir une source de données personnalisée.

    img

Il y a aussi quelques instructions sur la source de données personnalisée dans la documentation de l'API FMZ:Les informations fournies par les autorités compétentes sont les suivantes:

Il y a aussi quelques schémas dans le Digest sur la plateforme FMZ. Les débutants, qui sont intéressés par cela, peuvent se référer à ces schémas et les étudier.

Étudiez, examinez et réfléchissez

Vous ne pouvez pas faire de trading programmé et quantitatif sansétudier, les essaisetla penséeJe suis désolée. Il est inefficace de penser des questions à partir de rien.recherche d'informationAlors...Essayez par vous-même, etRéfléchissez et analysez. Si le problème n'est pas résolu, répétez les actions ci-dessus.

Mais, généralement, quand les débutants rencontrent des problèmes, ils se sentent:

Oh, écrire des stratégies programmées et quantitatives est super difficile! J'en suis encore perplexe, même moi je l'étudie depuis un moment! J'ai envie d'abandonner avant même de commencer! - Je ne sais pas.

Commencer avec la plateforme FMZ est en fait très facile et simple. Tout d'abord, vous devez être bon à la recherche d'informations. Il y a beaucoup d'informations dans Square, Forums et Digest sur la plateforme de trading FMZ Quant.

img

Ensuite, il y a la capacité opérationnelle; en utilisant le système de backtest et l'outil de débogage peut facilement faire un test. Cela ne signifie pas tester une stratégie complète. En fait, si vous avez complètement zéro bases, vous pouvez même apprendre les bases des programmes JavaScript directement sur le système de backtest de FMZ Quant.

C'est le site de tutoriel où j'étudie souvent JS:https://www.runoob.com/js/js-loop-for.html; le site Web ne se limite pas à JS, et toutes sortes de connaissances informatiques peuvent être consultées et apprises ici. Par exemple, je ne sais pas comment utiliser l'expression régulière de JS, que dois-je faire? Bien sûr, cherchez d'abord l'information, puis essayez- la!

J'ai vu un exemple comme celui-ci:imgSi je veux le tester, je peux utiliser le système de backtest de FMZ pour le tester.

Mettez une plateforme au hasard sur le système de backtest.img

Testez le code suivant:

function IsEmail(str) {
    var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
    return reg.test(str);
}

function main() {
    var strEmailAddress1 = "13512345678"
    Log(strEmailAddress1, " Is it the email address? ", " Answer:", IsEmail(strEmailAddress1))
    
    var strEmailAddress2 = "123456789@qq.com"
    Log(strEmailAddress2, " Is it the email address? ", " Answer:", IsEmail(strEmailAddress2))
}

img

Quel merveilleux outil d'étude! Par exemple, si je veux apprendre à écrire la logique de boucle du langage JavaScript, et puis essayer:

Selon la séquence d'un tableau, imprimez chaque élément d'une variable de tableau dans une boucle:

function main() {
    var arr = [{coinName: "BTC", price: 10000}, {coinName: "LTC", price: 100}, {coinName: "ETH", price: 2000}, {coinName: "ETC", price: 500}]
    for (var i = 0 ; i < arr.length ; i++) {
        Log(arr[i])
    }
}

img

Avez- vous envie d'apprendre tout de suite? En fait, sur FMZ, vous pouvez apprendre complètement les bases de JavaScript en essayant des opérations sur le système de backtest tout en regardant les tutoriels JavaScript. Une fois que la syntaxe JavaScript est presque maîtrisée, vous pouvez entrer à l'étape suivante, pour utiliser réellement l'interface de la plate-forme pour obtenir des données et tester.outil de débogagesur FMZ pour effectuer de vrais tests d'interface. Ensuite, vous devez réfléchir davantage, tirer des conclusions d'un cas, avec des tests, des vérifications et des analyses comparatives, etc. Cela rend l'apprentissage et le démarrage très rapides.


Plus de