Dans les articles précédents, nous avons appris que le soi-disant trading programmatique et quantitatif est un programme de script basé sur les données obtenues de l'échange par le biais d'une série de calculs, de jugements et de déclencheurs pour effectuer certaines opérations et exploiter le compte d'échange pour le commerce. Ces actions d'acquisition de données et d'exploitation de comptes sont toutes effectuées via l'interface API de l'échange. En termes simples, le programme de script interagit avec l'échange. Puisqu'il s'agit d'une interaction, il doit y avoir une interaction normale et une interaction anormale. Lorsqu'une interaction anormale se produit, l'interface renvoie le message d'exception.
Bien sûr, il existe toutes sortes de messages d'erreur dans les systèmes de trading programmatiques et quantitatifs sur le marché, ou dans les programmes développés par nous-mêmes. Ces messages d'erreur ne se limitent pas aux messages d'erreur signalés par l'interface de l'API d'échange. Il existe également des erreurs d'exception d'exécution de programme, des erreurs de configuration, des erreurs de grammaire de programme, etc.
Les messages d'erreur sur la plateforme de négociation quantitative FMZ se répartissent également à peu près en plusieurs catégories:
Erreur de grammaire de stratégie Ce type d'erreur est le plus courant, car les débutants ne connaissent pas la programmation et il y a des erreurs grammaticales dans l'écriture du code pendant la phase d'apprentissage et de test.
Le code a manqué des caractères tels que des parenthèses. Ces erreurs peuvent généralement être vues sur la page d'édition de la stratégie, et la stratégie ne peut pas être exécutée (une erreur sera signalée directement à l'exécution, comme indiqué dans la figure ci-dessous).
Donc, après avoir écrit la stratégie, jetez un coup d'œil habituel sur la page d'édition de la stratégie de la plateforme pour voir s'il y a un XX rouge, si oui, il doit y avoir une erreur évidente.
Exceptions du programme en cours d'exécution causées par le programme de stratégie BUG Il y a un bug dans le programme. Lorsque le programme est en cours d'exécution, le déclenchement d'une exception provoquera l'arrêt anormal du programme et l'affichage de tels messages d'erreur.
De telles erreurs provoqueront une anomalie du programme et l'arrêt de son exécution.
Erreurs causées par une configuration et des paramètres incorrects
Sur la plateforme FMZ, la paire de négociation est uniformément définie sous la forme deX_Y
, où X représente le nom de la monnaie de négociation et Y représente le nom de la monnaie libellée (la monnaie libellée de la paire de contrats à terme basée sur des devises est généralement exprimée en USD, comme décrit dans les articles précédents), par exemple:BTC_USDT
, si j'écris la paire de négociation au hasard, écrire commeBTC-USDT
.
Une erreur est signalée sur le système de backtesting de la plateforme FMZ:
En outre, une erreur que les débutants rencontrent souvent:
Ce type d'erreur est dû à la modification du mot de passe sur le compte de la plateforme FMZ, entraînant l'invalidation duAPI KEY
dans l'objet d'échange configuré (la clé API de l'utilisateur est configurée sur la plateforme FMZ après avoir été cryptée sur le navigateur), et la stratégie ne peut pas démarrer, une erreur est donc signalée.
Une erreur est signalée lors de l'appel d'interface
Dans les articles précédents, nous avons appris que les interfaces sur la plateforme FMZ sont divisées eninterfaces générant des demandes réseauetinterfaces qui ne génèrent pas de requêtes réseau. L'erreur d'interface ne provoquera pas l'arrêt du programme de stratégie, généralement en raison d'exceptions d'appel d'interface et les données erronées sont renvoyées, la stratégie ne fait pas de tolérance à l'erreur, et 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 mentionné dans les articles précédents).
Voici plusieurs messages d'erreur d'interface qui génèrent des demandes réseau:
Temps d'arrêt du réseau
L'un des messages d'erreur les plus fréquents rencontrés par les débutants est l'utilisation d'équipements de réseau domestiques (leur propre ordinateur ou serveur domestique).
Erreur http 429
L'un des messages d'erreur classiques est que l'interface d'échange est appelée trop fréquemment, dépassant la limite de fréquence de l'échange (mentionnée dans les articles précédents).
Certains débutants peuvent dire que je voudrais postuler pourAPI KEY
Nous devons savoir que la fréquence des limites d'accès à l'interface par les échanges est généralement basée sur les adresses IP. En termes simples, tant que toutes les demandes envoyées à une adresse IP sont comptées sur cette adresse IP, le serveur d'échange refusera l'accès si la demande dépasse la limite.
Rapport d'erreur sur les activités de l'interface d'échange
Le timeout et 429 mentionnés ci-dessus sont des erreurs de réseau. S'il y a un problème sur les affaires de l'interface d'échange, une erreur sera également signalée. Par exemple, si je veux obtenir le prix du marché au comptant, mais que je configure une paire de négociation inexistante. Je l'ai testé 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 les tests de bots réels d'appels de fonctions et d'acquisition de données.
Les résultats 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 vrai bot.
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 ici signifie que la paire de trading est invalide (comme on le voit ici)"err-msg":"invalid symbol"
) et
Par exemple, il existe de nombreuses erreurs liées à l'entreprise, telles que la définition du levier lorsque certains échanges ne prennent pas en charge les valeurs de levier avec des parties décimales, à ce moment-là, si la valeur du levier a une partie décimale, 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 définissent simplement certaines variables globales dans le système et ne génèrent pas de requêtes réseau, par exemple:
Toutefois, si le paramètre est passé incorrectement ou griffonné, une erreur sera signalée.
Mais quel que soit le type d'erreur, le message d'erreur affiché est l'information clé pour trouver le problème, et le problème peut généralement être vu à partir du message d'erreur."err-msg":"invalid symbol"
Dans l'exemple ci-dessus, la traduction est:
Le système de backtesting est également au centre d'un outil quantitatif. Le système de backtesting peut tester des prototypes de stratégie de manière pratique, des bugs potentiels et des problèmes logiques dans la stratégie de test préliminaire. Le système de backtesting doit être considéré de manière rationnelle. Le système de backtesting peut refléter certains problèmes de la stratégie dans une certaine mesure.
Ce qui suit est une brève description du système de backtesting sur la plateforme FMZ au niveau des différents langages de stratégie pris en charge par FMZ. (Certaines introductions du système de backtesting ont été mentionnées dans les articles précédents)
JavaScript
Le backtesting dans le navigateur utilise des ressources matérielles natives.
Python
Lors du backtesting sur un docker, vous pouvez choisir à quel docker attribuer (soit le docker déployé par vous-même, soit le docker public sur la plate-forme FMZ).
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 le code, la compilation peut ne pas passer, et un message d'erreur apparaîtra directement).
Mon langage
La mise en œuvre sous-jacente est JavaScript, et le backtesting est également effectué sur le navigateur.
Visualisation
La mise en œuvre sous-jacente est JavaScript, et le backtesting est également effectué sur le navigateur.
Le système de backtesting sur la plateforme de trading FMZ Quant est divisé en deux modes de backtesting (c'est indépendamment du langage de stratégie, c'est le paramètre de backtesting, et le backtesting de stratégie dans toutes les langues est le même).
A bar in the K-line opens high and closes low, which constitutes a price framework, within which the prices are all in this price frame, so as long as the generated price opens high and closes low in this K-line frame within the range, the simulated price is reasonable.
C'est comme une simulation comme celle-ci:https://www.fmz.comBien sûr, lorsque le système de backtesting réel met en œuvre cette simulation, la situation est légèrement plus compliquée que celle illustrée sur la figure. Connaissant ce principe, il est important de noter les inconvénients du backtesting au niveau de la simulation, bien que le backtesting 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 un par un).tendance simulée du mouvement des tiques, la stratégie fonctionnera très bien (mais en réalité, le prix peut ne pas être cette tendance, bien que le prix se situe dans le cadre de cette 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 cette ligne K est appeléela période inférieure de la ligne K, qui est définie comme indiqué sur la page de définition de la stratégie:
Le réglage de 1 minute ici signifie que les données de la ligne K avec une période de 1 minute sont utilisées comme source de données pour générer le tick simulé.
Un autre point est que pour les stratégies à haute fréquence, il n'est évidemment pas approprié d'utiliser le backtesting au niveau de la simulation.
Où se trouve la source de données du système de backtesting de la plate-forme de trading quantique FMZ? Le système de backtesting utilise les données du centre de données de la plate-forme FMZ par défaut. Le centre de données de la plate-forme FMZ collecte automatiquement les données de marché de chaque devise de chaque échange et les fournit au système de backtesting de la plate-forme.
Il y a aussi quelques notes sur les sources de données personnalisées dans la documentation de l'API FMZ:https://www.fmz.com/api#custom-data-source
Vous ne pouvez pas faire de trading programmatique et quantitatif sansapprentissage, les essais, etla penséeJe suis désolée. Il est vrai que la Commission n'a pas été en mesure d'expliquer à la Commission ce qu'elle a fait.trouver des informationsAlors...Je vais essayer., réfléchir et analyser, si le problème n'est pas résolu, veuillez répéter les actions ci-dessus.
Mais lorsqu'un débutant rencontre des difficultés, il se sentira:
Oups, c'est trop difficile de programmer, de quantifier et d'écrire des stratégies.
Après l'avoir regardé pendant longtemps, je suis toujours stupéfaite! Je veux abandonner avant de commencer! - Je ne sais pas.
Commencer sur la plateforme FMZ est en fait très simple. Tout d'abord, vous devez être bon à la recherche d'informations. Il y a beaucoup d'informations disponibles dans la plateforme de trading de stratégie FMZ Quant, la communauté et la bibliothèque.
La deuxième est la capacité pratique, qui peut être facilement testée en utilisant le système de backtesting et les outils de débogage. Cela ne signifie pas tester une stratégie complète. En fait, vous pouvez même apprendre les bases des programmes JavaScript sur le système de backtesting FMZ Quant si vous êtes complètement basique.
C'est le site de tutoriel où j'apprends souvent JS:https://www.runoob.com/js/js-loop-for.html, il ne se limite pas à JS, toutes sortes de connaissances informatiques peuvent être interrogées et apprises ici. Par exemple, je ne sais pas comment utiliser les expressions régulières de JS, que dois-je faire? Bien sûr, recherchez les informations d'abord, et puis essayez de le faire ~
J'en ai vu un exemple:Je veux le tester, et je peux utiliser le système de backtesting de la plateforme FMZ pour tester et apprendre.
Mettre en place un échange aléatoire sur le système de backtesting
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 an email address? ", " Answer: ", IsEmail(strEmailAddress1))
var strEmailAddress2 = "123456789@qq.com"
Log(strEmailAddress2, " Is it an email address? ", " Answer: ", IsEmail(strEmailAddress2))
}
Regardez ce qu'est un outil d'apprentissage! Par exemple, je veux apprendre à écrire la logique de boucle du langage JavaScript, et l'essayer:
En boucle à travers les éléments d'une variable de tableau dans l'ordre dans lequel ils apparaissent dans le tableau:
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])
}
}
Vous sentez-vous motivé à apprendre en un instant? En fait, sur FMZ, vous pouvez apprendre les bases de JavaScript sur le système de backtesting tout en regardant le tutoriel JavaScript. La grammaire JavaScript est presque maîtrisée, et en entrant dans la prochaine étape, vous devez utiliser l'interface d'échange pour obtenir des tests de données.outil de débogagede la plateforme FMZ pour effectuer des tests d'interface réels.
Ensuite, il s'agit de réfléchir davantage, de tirer des conclusions d'un cas, de vérifier les tests, d'analyser les comparaisons, etc. Cela permet d'apprendre très rapidement.