portaldacalheta.pt
  • Principal
  • Mode De Vie
  • Rise Of Remote
  • Processus Financiers
  • Gestion De Projet
La Technologie

Trading algorithmique Forex: une histoire pratique pour les ingénieurs



Comme vous le savez peut-être, le marché des changes (Forex ou FX) est utilisé pour le trading entre les paires de devises. Mais vous ne savez peut-être pas qu’il s’agit du marché le plus liquide au monde.

lequel des éléments suivants n'est pas un avantage pour éviter la redondance dans une base de données ?

Il y a quelques années, poussé par ma curiosité, j'ai fait mes premiers pas dans le monde du trading algorithmique Forex en créant un compte démo et en jouant des simulations (avec de la fausse monnaie) sur le Méta Trader 4 Plateforme d'échanges.



Illustration de la couverture Forex



Après une semaine de «trading», j’avais presque doublé mon argent. Poussé par mon propre succès de trading algorithmique, j'ai creusé plus profondément et finalement je me suis inscrit à un certain nombre de forums FX. Bientôt, je passais des heures à lire sur les systèmes de trading algorithmiques (ensembles de règles qui déterminent si vous devez acheter ou vendre), indicateurs personnalisés , les humeurs du marché, et plus encore.



Mon premier client

À cette époque, par coïncidence, j'ai entendu dire que quelqu'un essayait de trouver un développeur de logiciel pour automatiser un système commercial simple. C'était à l'époque de mon université quand j'apprenais programmation simultanée en Java (threads, sémaphores et tout ce qui est indésirable). Je pensais que ce système automatisé ne pouvait pas être beaucoup plus compliqué que mon science des données avancée cours, alors je me suis renseigné sur le poste et suis venu à bord.

Le client voulait un logiciel de trading algorithmique construit avec MQL4 , un langage de programmation fonctionnel utilisé par la plateforme Meta Trader 4 pour effectuer des actions liées aux actions.



MQL5 a depuis été libéré. Comme vous vous en doutez, il résout certains des problèmes de MQL4 et est livré avec plus de fonctions intégrées, ce qui facilite la vie.

Le rôle de la plateforme de trading (Meta Trader 4, dans ce cas) est de fournir une connexion à un courtier Forex. Le courtier fournit alors une plateforme avec des informations en temps réel sur le marché et exécute vos ordres d'achat / vente. Pour les lecteurs peu familiarisés avec le trading Forex, voici les informations fournies par le flux de données:

Ce diagramme montre les données impliquées dans le trading algorithmique Forex.



Grâce à Meta Trader 4, vous pouvez accéder à toutes ces données avec des fonctions internes, accessibles dans différents délais: toutes les minutes (M1), toutes les cinq minutes (M5), M15, M30, toutes les heures (H1), H4, D1, W1, MN .

Le mouvement du prix actuel est appelé un cocher . En d'autres termes, un tick est une modification du prix acheteur ou vendeur d'une paire de devises. Sur les marchés actifs, il peut y avoir de nombreux ticks par seconde. Pendant les marchés lents, il peut y avoir des minutes sans tique. La tique est le battement de cœur d'un robot du marché des devises.



Lorsque vous passez une commande via une telle plateforme, vous acheter ou vendre un certain volume d'une certaine monnaie. Vous définissez également des limites stop-loss et take-profit. La limite stop-loss est le montant maximum de pépins (variations de prix) que vous pouvez vous permettre de perdre avant d'abandonner un commerce. La limite de prise de profit est la quantité de pépins que vous accumulerez en votre faveur avant d’encaisser.

Si vous souhaitez en savoir plus sur les bases du trading (par exemple, pips, types d'ordres, spread, slippage, ordres de marché, etc.), consultez Ici .

Les spécifications de trading algorithmique du client étaient simples: ils voulaient un robot Forex basé sur deux indicateurs. Pour le contexte, les indicateurs sont très utile lorsque vous essayez de définir un état du marché et de prendre des décisions commerciales, car elles sont basées sur des données passées (par exemple, le prix le plus élevé dans le dernier n journées). Beaucoup sont intégrés à Meta Trader 4. Cependant, les indicateurs qui intéressaient mon client provenaient d'un système de trading personnalisé.



Ils voulaient échanger à chaque fois que deux de ces indicateurs personnalisés se croisaient, et seulement sous un certain angle.

Cet exemple d



Mains sur

En me salissant les mains, j'ai appris que les programmes MQL4 avaient la structure suivante:

  • [Directives du préprocesseur]
  • [Paramètres externes]
  • [Variables globales]
  • [Fonction Init]
  • [Fonction Deinit]
  • [Fonction de démarrage]
  • [Fonctions personnalisées]

La fonction de démarrage est au cœur de chaque programme MQL4 puisqu'elle est exécutée à chaque fois que le marché évolue (ergo, cette fonction s'exécutera une fois par tick). C'est le cas quel que soit le délai que vous utilisez. Par exemple, vous pourriez fonctionner sur la période H1 (une heure), mais la fonction de démarrage s'exécuterait plusieurs milliers de fois par période.

Pour contourner ce problème, j'ai forcé la fonction à s'exécuter une fois par unité de période:

int start() { if(currentTimeStamp == Time[0]) return (0); currentTimeStamp = Time[0]; ...

Obtenir les valeurs des indicateurs:

// Loading the custom indicator extern string indName = 'SonicR Solid Dragon-Trend (White)'; double dragon_min; double dragon_max; double dragon; double trend; int start() { … // Updating the variables that hold indicator values actInfoIndicadores(); …. string actInfoIndicadores() { dragon_max=iCustom(NULL, 0, indName, 0, 1); dragon_min=iCustom(NULL, 0, indName, 1, 1); dragon=iCustom(NULL, 0, indName, 4, 1); trend=iCustom(NULL, 0, indName, 5, 1); }

La logique de décision, y compris l'intersection des indicateurs et leurs angles:

int start() { … if(ticket==0) { if (dragon_min > trend && (ordAbierta== 'OP_SELL' || primeraOP == true) && anguloCorrecto('BUY') == true && DiffPrecioActual('BUY')== true ) { primeraOP = false; abrirOrden('OP_BUY', false); } if (dragon_max 0) { ticket=0; return(0); } } else Print('OrderSelect failed error code is',GetLastError()); if (ordAbierta == 'OP_BUY' && dragon_min = trend ) cerrarOrden(false); } }

Envoi des commandes:

void abrirOrden(string tipoOrden, bool log) { RefreshRates(); double volumen = AccountBalance() * point; double pip = point * pipAPer; double ticket = 0; while( ticket <= 0) { if (tipoOrden == 'OP_BUY') ticket=OrderSend(simbolo, OP_BUY, volumen, Ask, 3, 0/*Bid - (point * 100)*/, Ask + (point * 50), 'Orden Buy' , 16384, 0, Green); if (tipoOrden == 'OP_SELL') ticket=OrderSend(simbolo, OP_SELL, volumen, Bid, 3, 0/*Ask + (point * 100)*/, Bid - (point * 50), 'Orden Sell', 16385, 0, Red); if (ticket<=0) Print('Error abriendo orden de ', tipoOrden , ' : ', ErrorDescription( GetLastError() ) ); } ordAbierta = tipoOrden; if (log==true) mostrarOrden(); }

Si vous êtes intéressé, vous pouvez trouver le code complet et exécutable sur GitHub .

Backtesting

Une fois que j'ai construit mon système de trading algorithmique, je voulais savoir: 1) s'il se comportait correctement et 2) si la stratégie de trading Forex qu'il utilisait était bonne.

Backtesting (parfois écrit «back-testing») est le processus de test d'un système particulier (automatisé ou non) sous les événements du passé. En d'autres termes, vous testez votre système en utilisant le passé comme proxy pour le présent.

MT4 est livré avec un outil acceptable pour le backtesting d'une stratégie de trading Forex (de nos jours, il existe des outils plus professionnels qui offrent une plus grande fonctionnalité). Pour commencer, vous configurez vos délais et exécutez votre programme sous une simulation; l'outil simulera chaque tick en sachant que pour chaque unité, il devrait ouvrir à un certain prix, fermer à un certain prix et atteindre des hauts et des bas spécifiés.

apprendre à programmer en c++

Après avoir comparé les actions du programme aux prix historiques, vous saurez s’il s’exécute correctement ou non.

Les indicateurs qu'il avait choisis, ainsi que la logique de décision, n'étaient pas rentables.

À partir de backtests, j’ai vérifié le taux de retour du robot FX pour certains intervalles de temps aléatoires; Inutile de dire que je savais que mon client n'allait pas s'enrichir avec ça - les indicateurs qu'il avait choisis, ainsi que la logique de décision, n'étaient pas rentables . À titre d'exemple, voici les résultats de l'exécution du programme sur la fenêtre M15 pour 164 opérations:

Ce sont les résultats de l’exécution du logiciel d’algorithme de trading que j’avais développé.

Notez que notre balance (la ligne bleue) se termine en dessous de son point de départ.

Une mise en garde: dire qu'un système est «rentable» ou «non rentable» n'est pas toujours authentique. Souvent, les systèmes sont (non) rentables pendant des périodes de temps en fonction de `` l'humeur '' du marché, qui peut suivre un certain nombre de schémas graphiques:

Quelques tendances dans notre exemple de trading algorithmique.

L'optimisation des paramètres et ses mensonges

Bien que les backtests m'ont rendu méfiant quant à l'utilité de ce robot FX, J'ai été intrigué lorsque j'ai commencé à jouer avec ses paramètres externes et que j'ai remarqué de grandes différences dans le rapport de retour global. Cette science particulière est connue sous le nom de Optimisation des paramètres .

J'ai fait quelques tests approximatifs pour essayer de déduire la signification des paramètres externes sur le taux de retour et j'ai trouvé quelque chose comme ceci:

Un aspect d

Ou, nettoyé:

Le ratio de retour algorithmique du trading pourrait ressembler à ceci une fois nettoyé.

Vous pensez peut-être (comme je l’ai fait) que vous devriez utiliser le paramètre A. Mais la décision n’est pas aussi simple qu’il y paraît. Plus précisément, notez le imprévisibilité du paramètre A: pour les petites valeurs d'erreur, son retour change considérablement. En d'autres termes, le paramètre A est très susceptible de surestimer les résultats futurs car toute incertitude, tout changement du tout entraînera une pire performance.

Mais en effet, l'avenir est incertain! Et donc le retour du paramètre A est également incertain. Le meilleur choix, en fait, est de s'appuyer sur l'imprévisibilité. Souvent, un paramètre avec un rendement maximal inférieur mais une prévisibilité supérieure (moins de fluctuation) sera préférable à un paramètre avec un rendement élevé mais une prévisibilité médiocre.

La seule chose dont vous pouvez être sûr, c'est que vous ne connaissez pas l'avenir du marché, et penser que vous savez comment le marché va fonctionner sur la base des données passées est une erreur. À votre tour, vous devez reconnaître cette imprévisibilité dans vos prédictions Forex.

Penser que vous savez comment le marché va fonctionner sur la base des données passées est une erreur.

Cela ne signifie pas nécessairement que nous devrions utiliser le paramètre B, car même les retours les plus faibles du paramètre A fonctionnent mieux que le paramètre B; c'est juste pour vous montrer que l'optimisation des paramètres peut entraîner des tests qui surestiment les résultats futurs probables, et une telle réflexion n'est pas évidente.

Considérations générales sur le trading algorithmique Forex

Depuis cette première expérience de trading algorithmique sur le Forex, j'ai construit plusieurs systèmes de trading automatisés pour les clients, et je peux vous dire qu'il y a toujours de la place pour explorer et approfondir l'analyse Forex. Par exemple, j'ai récemment construit un système basé sur la recherche de mouvements dits «Big Fish»; c'est-à-dire d'énormes variations de pips en minuscules unités de temps. C'est un sujet qui me fascine.

Construire votre propre système de simulation FX est une excellente option pour en savoir plus sur le trading sur le marché Forex, et les possibilités sont infinies. Par exemple, vous pouvez essayer de déchiffrer la distribution de probabilité des variations de prix en fonction de la volatilité sur un marché (EUR / USD par exemple), et peut-être faire un modèle de simulation de Monte Carlo en utilisant la distribution par état de volatilité, en utilisant n'importe quel degré de précision que vous voulez. Je laisserai cela comme un exercice pour le désireux lecteur.

Le monde du Forex peut parfois être écrasant, mais j'espère que cet article vous a donné quelques points sur la façon de commencer votre propre stratégie de trading Forex.

Lectures complémentaires

De nos jours, il existe un vaste pool d'outils pour créer, tester et améliorer les automatisations du système de trading: Trading Blox pour tester, NinjaTrader pour le trading, OCaml pour la programmation, pour n'en nommer que quelques-uns.

J'ai beaucoup lu sur le monde mystérieux qu'est le marché des devises. Voici quelques articles que je recommande aux programmeurs et aux lecteurs enthousiastes:

  • BabyPips : Ceci est le point de départ si vous ne connaissez pas squat sur le trading Forex.
  • Le chemin de la tortue , par Curtis Faith: Celui-ci, à mon avis, est le Bible Forex . Lisez-le une fois que vous avez une certaine expérience du trading et que vous connaissez certaines stratégies Forex.
  • Analyse technique pour le professionnel du trading - Stratégies et techniques pour les marchés financiers mondiaux turbulents d’aujourd’hui , par Constance M. Brown
  • Programmation Expert Advisor - Création de systèmes de trading automatisés dans MQL pour Meta Trader 4 , par Andrew R. Young
  • Systèmes de négociation - Une nouvelle approche du développement de système et de l'optimisation du portefeuille , par Urban Jeckle et Emilio Tomasini: Très technique, très concentré sur les tests d'effets.
  • Une mise en œuvre étape par étape d'un système de trading de devises multi-agents , par Rui Pedro Barbosa et Orlando Belo: Celui-ci est très professionnel, décrivant comment vous pourriez créer un système de trading et une plateforme de test.

Comprendre les bases

Qu'est-ce que le trading Forex?

Le trading Forex (ou FX) consiste à acheter et vendre via des paires de devises (par exemple USD vs EUR) sur le marché des changes.

Comment le Forex gagne-t-il de l'argent?

Les courtiers Forex gagnent de l'argent grâce aux commissions et frais. Les traders de Forex gagnent (ou perdent) de l'argent en fonction de leur timing: s'ils sont capables de vendre assez haut par rapport à leur achat, ils peuvent réaliser un profit.

Qu'est-ce que le backtesting d'une stratégie de trading?

Le backtesting est le processus de test d'une stratégie ou d'un système particulier en utilisant les événements du passé.

Qu'est-ce que le trading algorithmique?

Le trading algorithmique se produit lorsqu'un robot / programme utilise un ensemble de règles qui lui indiquent quand acheter ou vendre.

Utilisez le Craft d'InVision pour une collaboration d'équipe rationalisée

Outils Et Tutoriels

Utilisez le Craft d'InVision pour une collaboration d'équipe rationalisée
De la résolution d'équations à l'apprentissage en profondeur: un didacticiel TensorFlow Python

De la résolution d'équations à l'apprentissage en profondeur: un didacticiel TensorFlow Python

La Technologie

Articles Populaires
Conception de page de destination: création de la page de destination ultime
Conception de page de destination: création de la page de destination ultime
Modèles de fiches de conditions - Clauses à surveiller lors de la négociation
Modèles de fiches de conditions - Clauses à surveiller lors de la négociation
Promesses JavaScript: un tutoriel avec des exemples
Promesses JavaScript: un tutoriel avec des exemples
Introduction à OpenGL: un didacticiel sur le rendu de texte 3D
Introduction à OpenGL: un didacticiel sur le rendu de texte 3D
C Corp contre S Corp, partenariat, entreprise individuelle et LLC: quelle est la meilleure entité commerciale?
C Corp contre S Corp, partenariat, entreprise individuelle et LLC: quelle est la meilleure entité commerciale?
 
Les marchés à millions de dollars sont-ils meilleurs que les marchés à milliards de dollars?
Les marchés à millions de dollars sont-ils meilleurs que les marchés à milliards de dollars?
Créer un curseur de page complète personnalisé avec CSS et JavaScript
Créer un curseur de page complète personnalisé avec CSS et JavaScript
La métaprogrammation Ruby est encore plus cool qu'il n'y paraît
La métaprogrammation Ruby est encore plus cool qu'il n'y paraît
Blockchain, IoT et l'avenir des transports: comprendre la devise du moteur
Blockchain, IoT et l'avenir des transports: comprendre la devise du moteur
Explorer les algorithmes d'apprentissage automatique supervisé
Explorer les algorithmes d'apprentissage automatique supervisé
Articles Populaires
  • fichiers .h et .cpp
  • dans quelle langue est écrit windows
  • formulaire html complet avec base de données sqlite à cordova
  • comment utiliser un bot sur discord
  • modèle de feuille de conditions de fusion et acquisition
  • exemple de traitement parallèle par lots de printemps
  • y compris les fichiers d'en-tête c++
Catégories
  • Mode De Vie
  • Rise Of Remote
  • Processus Financiers
  • Gestion De Projet
  • © 2022 | Tous Les Droits Sont Réservés

    portaldacalheta.pt