
Les échanges modernes sont très technologiques et attirent l'attention des informaticiens (par exemple, les discussions actives de mes
articles sur le sujet l'indiquent). Beaucoup s'intéressent au sujet de l'écriture de robots commerciaux - quelqu'un veut essayer de gagner de l'argent sur l'échange par lui-même, quelqu'un ne le dérange pas de le faire sur commande. Aujourd'hui, nous allons discuter de la façon d'aborder la création du premier produit de ce type - nous discuterons d'une pile technologique possible, abaissant le seuil d'entrée et des moyens de minimiser les pertes possibles.
Avertissement : un poste pour ceux qui imaginent déjà au moins grossièrement l'appareil de l'échange, la présence de risques, a la possibilité d'expérimenter pas pour le dernier argent et, en général, a du bon sens.
Explorez une pile technologique possible
Comme dans tout projet informatique, lors du développement d'applications pour la négociation en bourse, le choix d'outils spécifiques dicte le but ultime. Avant de commencer à développer un robot de trading, vous devez concevoir l'ensemble du système, comprendre quels modules y seront, comment ils interagiront.
Ecrivez-vous un robot haute fréquence, pour lequel chaque milliseconde est importante? Sur quels marchés de quels pays le système commercial fonctionnera-t-il? Y aura-t-il uniquement un moteur de trading ou est-il encore nécessaire d'ajouter un module de gestion des risques?
Dans chacun de ces cas, l'ensemble des technologies peut varier. Une bonne approche de la sélection est
décrite dans un article sur la ressource de profil QuantStart (bien sûr, en anglais - il est préférable de maîtriser cette langue pour développer des applications financières).
En général, vous devrez très probablement choisir parmi une telle liste de technologies:
- La plupart des API de courtage et pas seulement (voici ma sélection de tels outils ) ont des interfaces en C ++ et / ou Java. Vous pourrez peut-être trouver des modules prêts à l'emploi pour la connexion écrits en C #, Python, R, Excel et MatLab par des représentants / clients de la communauté d'un courtier particulier. Mais vous devrez peut-être les écrire vous-même.
- Les bibliothèques telles que uBLAS, LAPACK et NAG pour C ++ sont souvent utilisées pour l'analyse des données.MatLab est populaire en Python par NumPy / SciPy.
- Lorsque vous développez des robots haute fréquence à l'aide d'un GPU (FPGA), vous devrez probablement vous familiariser avec le cadre CUDA.
Apprenez les spécificités du développement dans le domaine de la finance grâce aux langages de programmation intégrés
La création d'un système commercial puissant est par défaut un projet assez important. Cependant, si votre objectif est, en principe, de vous familiariser avec le développement dans le domaine de la finance, d'étudier divers points lors de la création de robots de trading, il est tout à fait possible de le faire avec les soi-disant langages de programmation intégrés.
Il existe des terminaux de trading qui peuvent non seulement être utilisés pour effectuer des transactions en mode manuel, mais aussi utiliser les langages de script intégrés pour créer des robots simples.
L'un des terminaux les plus populaires sur le marché boursier russe est QUIK, et il a le langage algorithmique QPILE (QUIK Programmable Interface and Logic Environment). Avec lui, vous pouvez automatiser
des systèmes de trading simples . QUIK a également un interpréteur de script intégré LUA - il est appelé QLUA. Les scripts peuvent être téléchargés sur le terminal à la fois sous forme de code source et déjà sous forme de code d'octets compilé.
Exemple de code QPILE:
PROGRAM FirmCode = "MC0012300000" CurrentBalance = MONEY_CURRENT_BALANCE(ROWNAME, FirmCode, "EQTV", "SUR") CurrentLimit = MONEY_CURRENT_LIMIT(ROWNAME, FirmCode, "EQTV", "SUR") Locked = MONEY_LIMIT_LOCKED(ROWNAME, FirmCode, "EQTV", "SUR") AvailableMoney = MoneyCurrentBalance + MoneyCurrentLimit – MoneyLocked If AvailableMoney > 0 Status = " " Else Status = " " SET_ROW_COLOR(ROWNAME, "RGB(255,138,138)", "DEFAULT_COLOR") End If END_PROGRAM
Les deux langues ont une communauté d'utilisateurs assez développée, les questions peuvent être posées dans les discussions sur le
forum officiel.
En plus de QUIK, vous pouvez négocier sur les bourses russes via le terminal
SMARTx . Il utilise le langage de script intégré TradeScript. La syntaxe est simple, mais le nombre de mots et d'opérandes disponibles peut être codé avec des stratégies assez complexes. Voici à quoi pourrait ressembler un code de stratégie simple TradeScript:
Buy Signals # , TREND(EMA(CLOSE, 20), 15) = UP AND TREND(MACD(13, 26, 9, SIMPLE), 5) = UP Sell Signals # , TREND(EMA(CLOSE, 20), 15) = DOWN AND TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN Exit Long Signal # , TREND(EMA(CLOSE, 20), 15) = DOWN OR TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN Exit Short Signal # , TREND(EMA(CLOSE, 20), 15) = UP OR TREND(MACD(13, 26, 9, SIMPLE), 5) = UP
L'étape la plus importante: tester et déboguer
Le développement d'applications pour le secteur financier, et en particulier d'instruments pour le négoce en bourse, est compliqué par le fait qu'ici vous devez payer de l'argent pour des erreurs au sens littéral. Il ne s'agit pas d'écrire du code pour le prochain démarrage Web, où un échec peut passer inaperçu. Toute erreur dans le code du robot de trading entraînera une perte d'argent. Par conséquent, le débogage et les tests sont l'étape la plus importante dans la création de tels logiciels.
Bien sûr, vous devez appliquer toutes les meilleures pratiques, créer des tests, effectuer correctement l'acceptation du code (même si vous développez un projet seul). Et surtout - avant de commencer des tests sur de l'argent réel, «pilotez» le programme sur des programmes virtuels.
Aujourd'hui, de nombreux courtiers russes offrent un service d'accès de test gratuit (par exemple, la société de développement de terminaux SMARTx en a un) lorsqu'ils vous donnent un compte qui n'est presque pas différent du vrai, mais l'argent qu'il contient est virtuel. En règle générale, lorsque vous travaillez avec un tel compte, vous pouvez négocier sur les principaux marchés - actions, devises, produits dérivés - et travailler avec les principaux stocks, contrats à terme, etc.
Dans certains cas, vous pouvez même tester le trading avec des fonds empruntés (c'est-à-dire un effet de levier) - mais lors de la création du premier robot, la question est toujours de savoir s'il est nécessaire d'y ajouter de telles fonctions.
Ressources utiles pour les développeurs d'applications pour le trading sur la bourse: