Langage algorithmique QPILE pour la programmation de robots de trading pour QUIK

Программирование

Langage algorithmique QPILE pour la programmation de robots de trading pour QUIK.
Les robots de trading peuvent être écrits dans un langage spécifique, similaire au code de programme. QPILE en fait partie, cet article va considérer ce langage, comparer les langages QPILE et
LUA , et donner également des exemples de robots dans ce langage.

Informations générales sur QPILE

QPILE est une abréviation qui signifie QUIK Programmable Interface and Logic Environment.

Il s’agit d’une série de commandes interprétées par la station de travail QUIK. Il est principalement utilisé pour calculer le prix des portefeuilles de titres. Le langage est également utilisé pour :

  • recalcul dynamique du prix des actifs des clients sur le bureau du courtier et dans leurs portefeuilles. Dans ce dernier cas, leur prix total est également recalculé ;
  • trouver les indicateurs manquants en utilisant leurs propres algorithmes et données pour les prêts sur marge ;
  • développer la bonne stratégie commerciale.

Le langage décrit la structure du tableau : la nomination des colonnes et des lignes, les formules. Dans ce dernier, les opérations mathématiques, les variables, les données d’autres tables peuvent être utilisées pour le calcul. Le code de programme chargé depuis le serveur QUIK ou depuis le disque de l’utilisateur est traité par l’interpréteur de langage, qui calcule les valeurs dans les formules. Les tables d’un programme ont une source de données, mais les calculs ne sont pas dupliqués et n’affectent pas l’efficacité du système. Lorsque vous travaillez avec des tables QUIK, les tables sur QPILE ont des fonctions standard. QUIK en milieu de travail est équipé d’un débogueur de code QPILE. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Le langage vous permettra de décrire de nouveaux tableaux avec une structure donnée, de mettre en évidence des cellules avec certaines valeurs, de calculer des champs basés sur des expressions mathématiques et logiques. L’utilisateur recevra des notifications sous la forme d’un signal sonore ou d’un message texte. Les tableaux sur QPILE peuvent être édités, imprimés, copiés, exportés via les serveurs ODBC et DDE. Les données initiales proviennent des tables QUIK :

  • transactions, y compris pour exécution et impersonnelles ;
  • ordres, y compris les ordres stop, pour les transactions et ordres de gré à gré – rapports pour les transactions dans les transactions de règlement ;
  • « portefeuille clients », « achat/vente »
  • les données des positions du participant par argent, comptes de trading, instrument.

Les tableaux basés sur QPILE ne peuvent pas être copiés dans un fichier texte via le menu contextuel et exportés vers des systèmes d’analyse technique, et les graphiques ne peuvent pas être développés sur cette base. Les tables basées sur QPILE ne peuvent pas être filtrées ou triées.

Travailler avec un tableau

Pour charger le code du programme, vous devez sélectionner le menu des services, puis les scripts QPILE. Vous pouvez également utiliser la combinaison Ctrl+F11. Ensuite, vous devez cliquer sur « Ajouter » et sélectionner le fichier souhaité. Il a une extension .qpl et son nom apparaîtra dans la liste des scripts disponibles.
Langage algorithmique QPILE pour la programmation de robots de trading pour QUIKS’il y a une erreur dans le programme, le système fera une notification dans la « Fenêtre de message », qui contiendra le nom du fichier défectueux et le numéro de ligne avec l’erreur. Si aucune panne n’a été trouvée dans le fichier, les données suivantes seront indiquées dans les champs :

  • nom de la table;
  • nombre de colonnes et de clients ;
  • liste des identifiants et des clients ;
  • la liste des paramètres et le code source du fichier.

Langage algorithmique QPILE pour la programmation de robots de trading pour QUIKLe bouton « Télécharger localement » vous permettra d’obtenir la table à partir d’un fichier, et « Télécharger sur le serveur » enverra le programme au serveur afin que tous les utilisateurs puissent y accéder. Pour créer un tableau, cliquez sur Créer un tableau. Dans les « Scripts disponibles », sélectionnez le programme que vous devez exécuter, définissez le nombre de lignes via le « Filtre client », définissez les colonnes requises et leur séquence.
Langage algorithmique QPILE pour la programmation de robots de trading pour QUIKMettre en pause et reprendre le calcul, recommencer le calcul et en mode débogage, enregistrer la description dans un fichier, démontrer la formule et les paramètres du script sont disponibles dans le menu contextuel.

Constructions QPILE

Types de données

  • Chaîne – chaîne.
  • Double est un nombre à virgule flottante.
  • Collection – une collection.
  • Map – un tableau associatif – une séquence de paires qui vous permet d’obtenir des informations par clé.

Expressions

Les opérations arithmétiques d’addition, de soustraction, de multiplication, de division sont appliquées. Les expressions logiques « et », « ou », égal, plus, moins, les inégalités, la construction conditionnelle « si… alors… » sont également utilisées.

Les fonctions

Les fonctions peuvent être situées n’importe où dans le programme et avoir des noms différents. Au total, 18 groupes de fonctions et fonctions mathématiques sont disponibles pour obtenir les valeurs des tables et des paramètres, des tableaux associatifs, une liste de tables et d’autres tâches. Première année:

  1. Fonctions mathématiques qui permettent de retourner la valeur du sinus, cosinus, tangente, cotangente de l’argument, calculer l’exposant de l’argument, générer un nombre aléatoire, etc.
  2. Commandes générales : NEW_GLOBAL pour initialiser une variable globale et MESSAGE pour ouvrir des messages.

Fonctions avec lesquelles travailler :

  • Collections d’objets (Collection) . Ils vous permettent de créer une nouvelle collection, de retourner le nombre d’éléments requis, de remplacer ou d’insérer les valeurs souhaitées.
  • Tableaux Associatifs (MAP) . Aide à la création et à la gestion du tableau.
  • Fichiers – travailler avec des fichiers texte, maintenir un journal de bord du programme. Le nom du fichier peut contenir le chemin d’accès.
  • Cordes .
  • Graphiques . Fonctions GET_CANDLE pour accéder aux données des bougies et GET_CANDLE EX pour renvoyer un tableau associatif.
  • Candidatures . Créer des commandes et les envoyer au système de trading.
  • Balises . Leur construction et installation sur la carte. Ajouter, supprimer une ou toutes les étiquettes, obtenir et définir des paramètres pour une étiquette spécifique.

Il existe également des fonctions pour :

  1. Pour accéder aux rangées de tableaux QUIK arbitraires et aux listes de paramètres disponibles . Accès aux données de la table de travail. Ceux-ci incluent GET_ITEM pour renvoyer le MAP et GET_NUMBER_OF pour renvoyer le nombre d’entrées.
  2. Pour travailler avec une table programmable . Ces commandes fonctionnent sur la table OWN. Il est lisible par les fonctions standards du paragraphe précédent et par ces fonctions. Ce groupe comprend des commandes pour ajouter, modifier et supprimer une ligne avec un index et effacer complètement la table OWN.

Pour obtenir des valeurs, utilisez :

  1. Tableaux des métiers en cours . Obtenir les paramètres d’informations d’échange à l’aide des commandes GET_PARAM (_EX).
  2. Fenêtres de devis . Obtention des valeurs des cotations d’instruments.
  3. Tableaux de positions par instruments et monnaie . Obtention de données sur un client, une entreprise, un instrument, un compte de dépôt par code.

Fonctions de service – retour de la date de la session de trading en cours, série associative, date et heure actuelles, détermination de l’état de la connexion, interruption du mode de calcul.

Programmes de débogage

Le contrôle pas à pas du fonctionnement du programme est effectué dans la fenêtre « Debug ». Il s’ouvre depuis le menu contextuel « Démarrer le calcul en mode débogage ». Il peut également être ouvert avec la commande breakpoint() et la ligne de programme sera surlignée en rouge. La fenêtre contient des champs avec le code du programme et les valeurs des variables. En bas de la fenêtre se trouvent les boutons « Etape suivante », « Continuer l’exécution », « Arrêter le calcul ». Appuyer sur F5 poursuivra l’exécution du programme, la combinaison Maj + F5 arrêtera le débogage, la touche F10 dirigera vers la ligne suivante.

QPILE ou LUA ?

LUA est un nouveau langage de programmation pour créer des robots de trading. Comme QPILE, il est implémenté dans le terminal QUIK. https://articles.opexflow.com/programming/lua.htm Un site dédié au développement de robots de trading pour le trading montre les avantages du langage LUA par rapport à QPILE. Ainsi, il peut fonctionner comme un script et un bytecode non compilés, équipés d’outils de développement et de mécanismes de programmation orientés objet. Les objets écrits dans d’autres langages de programmation peuvent être connectés aux programmes LUA. LUA fournit 8 types de données, y compris des métatables. Le langage LUA est multithread, rapide, et les transactions et événements terminaux sont asynchrones. LUA est plus commun que QPILE, et de nombreuses extensions ont été écrites pour cela.

Le langage QPILE est désormais obsolète. Les experts sur les forums recommandent d’utiliser LUA. Bien que des programmes utiles et efficaces soient toujours utilisés.

Cependant, le langage QPILE est simple par rapport à LUA, donc si vous n’avez aucune expérience en programmation, il est préférable de choisir QPILE. Dans ce langage, vous pouvez écrire un robot simple si vous n’avez pas besoin d’effectuer des calculs complexes.

Comment créer un robot de trading sur QPILE ?

Pour créer un conseiller commercial, vous aurez besoin des programmes suivants :

  1. ITS Quik.
  2. Éditeur de code Notepad++.
  3. Guide de QPILE.
  4. Plugin XML pour la détection de code dans Notepad++.

Téléchargez et installez ces programmes. Activez la syntaxe du langage en plaçant userDefineLang.xml dans le chemin C:\Users\User\ AppData\Roaming\Notepad++\
Langage algorithmique QPILE pour la programmation de robots de trading pour QUIKTout d’abord, créons la stratégie de trading suivante. Le script doit calculer Hi et Low pour les dernières bougies toutes les minutes, vérifier le prix actuel de l’instrument. Une position est ouverte dans la direction requise si le prix de l’instrument atteint la valeur maximale ou minimale pour la période. Lorsqu’un signal court est reçu, la position longue est automatiquement fermée. Le robot utilise l’outil GAZP, le délai est fixé à 1 min. La profondeur de mesure hi-low est réglée sur 5 bougies. Pour entrer Long, une règle est définie et l’intersection du prix actuel de la valeur maximale pour la période. Le robot entrera court si le prix actuel franchit la valeur minimale pour ces 5 bougies. Écrivez un bloc de code dans Notepad ++ avec les paramètres de base et la date et l’heure du serveur. Ce code est illustré dans l’image ci-dessous.
Langage algorithmique QPILE pour la programmation de robots de trading pour QUIKLes 4 premières lignes de code forment l’en-tête du programme. Entre les lignes 6 et 44 se trouve le corps du programme, qui contient le contenu du robot. Les lignes 7 à 12 contiennent les paramètres de l’utilisateur, qui incluent les codes de l’instrument, du groupe et du client, le numéro de compte sur le MICEX. Ces valeurs ne changent pas pendant l’exécution du programme. Les lignes 13 à 16 sont les valeurs initiales des variables. Ils seront remis à zéro à chaque passe d’itération. Les lignes 17 à 21 contiennent une indication pour utiliser la date et l’heure du serveur. Ces données sont transmises à la fonction DATETIME et converties au format texte. Les lignes 22 à 29 envoient les données reçues à la table. Le code doit être enregistré et l’extension qpl doit être spécifiée.
Langage algorithmique QPILE pour la programmation de robots de trading pour QUIKOuvrez le programme dans QUIK en appuyant sur Ctrl+F10 et en sélectionnant le fichier qpl généré. Utilisez la combinaison Ctrl+F11 pour ouvrir la fenêtre « Travailler avec les portefeuilles » et définissez la période de calcul du portefeuille sur 5 minutes. Appuyez sur Ctrl+F12 pour définir les colonnes à afficher dans le tableau. La photo montre le résultat du travail du robot.
Langage algorithmique QPILE pour la programmation de robots de trading pour QUIKAjoutons quelques fonctions et conditions supplémentaires à notre programme.
Le bloc « Paramètres utilisateur » est complété par les variables NOMBRE et INTERVALLE, qui seront utilisées dans la fonction d’obtention des N dernières barres. La fonction DATETIME définit la date et l’heure du serveur, et les fonctions de date et d’heure actuelles CURDATE et CURTIME sont appelées à partir de celle-ci. L’heure actuelle est convertie en un nombre sur la ligne 24. La ligne 26 définit l’heure d’exécution de l’algorithme de 10:00:01 à 18:40:00 UTC.
Langage algorithmique QPILE pour la programmation de robots de trading pour QUIK
Langage algorithmique QPILE pour la programmation de robots de trading pour QUIK
Langage algorithmique QPILE pour la programmation de robots de trading pour QUIKLangage algorithmique QPILE pour la programmation de robots de trading pour QUIKLe plus souvent, les indicateurs, les oscillateurs, les calculs statistiques sont calculés par les N dernières bougies du graphique. QPILE n’a pas de fonction pour collecter le nombre de bougies il y a N périodes en tant que telles, mais il existe une fonction GET_CANDLE qui accède aux bougies sur le graphique par date et heure au format texte. Notre code contient la fonction pour obtenir les N dernières barres OHLC(). Il crée une collection avec les paramètres des dernières bougies imbriquées dans la liste COLLECTION. Le programme vérifie la valeur INTERVALLE, et si elle n’est pas comprise dans la plage 0…60, un message s’affiche indiquant que la valeur ne correspond pas à la plage autorisée. Une collection MAP avec des bougies est créée à la ligne 88. Une boucle FOR interrogeant le graphique à la profondeur requise avec l’étape INTERVAL de la nouvelle à l’ancienne bougie. A la ligne 90, après la déclaration du cycle, le robot recule d’un intervalle. Lorsque vous obtenez une bougie avec GET_CANDLE, placez-le dans la collection BARLIST à l’aide de la fonction INSERT_COLLECTION_TEAM. À la suite de l’opération de la commande OHLC(), BARLIST est réapprovisionné avec les dernières bougies du tableau d’instruments d’un montant de NUMBER. Le nombre d’éléments dans la collection est demandé par la commande GET_COLLECTION_COUNT() et rapporté par la variable BARCOUNT. La date, l’heure et les valeurs du serveur des variables INSTRUMENT et BARCOUNT sont signalées par la fonction SET_VALUE() dans OUTPUT. Ce tableau est créé par la commande CREATE_MAP(). Les données tombent dans le tableau personnalisé, visible sur la photo ci-dessous. les valeurs des variables INSTRUMENT et BARCOUNT sont reportées par la fonction SET_VALUE() en OUTPUT. Ce tableau est créé par la commande CREATE_MAP(). Les données tombent dans le tableau personnalisé, visible sur la photo ci-dessous. les valeurs des variables INSTRUMENT et BARCOUNT sont reportées par la fonction SET_VALUE() en OUTPUT. Ce tableau est créé par la commande CREATE_MAP(). Les données tombent dans le tableau personnalisé, visible sur la photo ci-dessous.
Langage algorithmique QPILE pour la programmation de robots de trading pour QUIK

Robots commerciaux sur QPILE – solutions prêtes à l’emploi

Robot moyen mobile

Robot de démonstration non adapté au trading réel.
Langage algorithmique QPILE pour la programmation de robots de trading pour QUIKLe robot comprend 5 paramètres. Les valeurs des identifiants DATE, TIME, PRICE sont définies au niveau 30. Les identifiants MOVING et TP sont définis avec une précision nulle. Code robot sur moyenne mobile écrit sous QPILE :

Calculateur de position N. Morochkine

Un programme pour calculer les niveaux de prélèvement maximum autorisé et la cible pour les positions longues et courtes aux cours vendeur et acheteur actuels. Les niveaux sont calculés pour 2 valeurs du volume d’entrée de position. Le robot trouve le volume de position autorisé lors de l’attribution d’un ordre stop en une étape à partir du prix d’ouverture avec le calcul de l’ouverture d’une position dans le sens ascendant de la barre. Les niveaux trouvés sont entrés dans la fenêtre du terminal, qui sont ensuite reflétés dans le tableau des prix. Les transactions sont fixes pour un instrument donné. Si une position est ouverte, le robot commence à calculer ses paramètres. En fonction du changement de poste, les ordres attribués sont ajustés.
Langage algorithmique QPILE pour la programmation de robots de trading pour QUIK
Langage algorithmique QPILE pour la programmation de robots de trading pour QUIK

Filtre volumétrique

Un portefeuille-robot pour calculer la moyenne arithmétique du volume des bougies et la comparer avec le produit moyen par le coefficient X. Fonctionne correctement avec des graphiques tracés dans une période de temps sélectionnée.
Langage algorithmique QPILE pour la programmation de robots de trading pour QUIK

Options Grecs

Portefeuille de calcul et d’affichage « Grecs » d’options. Elle diffère de la méthode Black-Showers.
Langage algorithmique QPILE pour la programmation de robots de trading pour QUIK

Robot de trading TRIX pour QUIK

Le programme est basé sur l’indicateur TRIX. Lorsque l’indicateur se ferme au-dessus de la ligne zéro, le niveau spécifié, le robot prend la position longue. La position est clôturée par Take Profit, Stop Loss ou trailing stop.

Préprocesseur M4

Programme pour travailler avec QPILE et Lua. Comprend des archives avec des fichiers exécutables, de la documentation et des fichiers DLL avec analyse d’expressions régulières. Pour utiliser le programme, vous devez décompresser les fichiers exécutables et placer regexp2 dans le chemin C:\Windows. Leçons sur QPILE pour QUIK : https://youtu.be/vMTXwDUujpI Installation d’un script sur QPILE dans le terminal Quik : https://youtu.be/0B7qL8Svh7I Une section sur github qui décrit l’utilisation du langage algorithmique QPILE intégré au Poste de travail du système QUIK situé sur le lien – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE est un langage obsolète, mais assez simple et accessible même aux traders débutants. Des robots de trading et des programmes qui ont fait leurs preuves depuis longtemps continuent de travailler dessus. Cependant, pour des tâches plus complexes, il est préférable d’utiliser LUA.

info
Rate author
Add a comment

  1. Владимир Геннадьевич Евсеев

    Répondre