Discussion de l'article "Stratégies d’ordres. Un Expert Advisor polyvalent"

 

Un nouvel article Stratégies d’ordres. Un Expert Advisor polyvalent a été publié :

Cet article se concentre sur les stratégies qui utilisent activement les ordres en attente, un métalangage qui peut être créé pour décrire formellement de telles stratégies et l'utilisation d'un Expert Advisor polyvalent dont le fonctionnement est basé sur ces descriptions.

Stratégies d’ordres. Un Expert Advisor polyvalent

En outre, les stratégies peuvent nécessiter un autre type d'analyse. Nous l'appellerons analyse de la situation de trading courante. Cela englobe l'analyse de l'état de la position de trading et l'analyse de tous les ordres en attente disponibles/manquants (s’il y en a qui sont utilisés dans une stratégie). Les résultats d'une telle analyse nous amènent à décider si certaines actions avec des positions ou des ordres doivent être effectuées, par exemple l’option de clôturer, déclencher l’ordre Stop Loss, le placement ou la suppression des ordres en attente, etc. En d'autres termes, une telle analyse comprend l'étude de notre activité de marché, des actions en fonction de la situation que nous (ou un Expert Advisor) avons créée et les règles de la stratégie utilisée.

Un Trailing Stop communément connu peut dans une certaine mesure être considéré comme le deuxième type d'éléments dans une stratégie de trading. Considérez l'analyse suivante : s'il existe une position ouverte avec un profit supérieur à la valeur définie, alors que le Stop Loss n'est pas défini ou est plus éloigné du prix courant tel que spécifié dans les paramètres, un mouvement de Stop Loss s’en suivra.

Le Trailing Stop est une fonction assez simple pour être particulièrement intéressante. En outre, il peut être classé dans une catégorie totalement différente d'éléments de stratégie de trading, étant une fonction de gestion de position. Ainsi, une stratégie de trading peut être composée de trois catégories d'éléments :

  1. Analyse du marché et actions basées sur celle-ci.

  2. Analyse de la situation trading et actions fondées sur celle-ci.

  3. Gestion des positions.

Cet article se concentre sur les stratégies qui utilisent activement les ordres en attente (nous les appellerons stratégies d'ordre en abrégé), un métalangage qui peut être créé pour décrire de telles stratégies et le développement et l'utilisation d'un outil polyvalent (Expert Advisor) dont le fonctionnement est basé sur ces descriptions.

Auteur : Dmitry Fedoseev

 

Dmitry, qu'est-ce que c'est ? Pourquoi l'article se présente-t-il sous la forme d'un ouvrage de référence et de tableaux de macros ?
et où sont les exemples de code, où est l'essence de l'idée du programmeur ?
Les chapitres expliquant le principe et l'identification n'ont malheureusement pas permis de comprendre ce qui se passe.
une telle impression qu'ils l'ont écrit pour eux-mêmes, sans oublier la liste des macros possibles.

Pouvez-vous expliquer à tout le monde le but de ce qui se passe dans le code ? (Je ne suis pas intéressé par l'application, mais seulement par l'organisation des algorithmes MQL).

 
Je soutiens, j'ai besoin d'un exemple de programmation d'un TS simple, au moins pour trader sur les croisements des MA lentes et rapides.
 
L'article n'est apparemment pas destiné aux esprits moyens. ;-) L'objectif est louable - éviter à l'utilisateur d'avoir à comprendre ce qui se passe dans le code MQL et s'éloigner de la routine de programmation. Il semble y avoir suffisamment d'exemples de CT (dans le méta-langage), mais le méta-langage lui-même peut prendre du temps à maîtriser. Peut-être qu'avec le temps il sera possible de le simplifier ou de l'augmenter avec un concepteur de stratégie visuelle, alors il y aura moins de personnes insatisfaites ou elles commenceront à se plaindre que les boutons sont placés au mauvais endroit. ;-)
 

Ahem...
Cela ressemble à un article "d'un programmeur pour des programmeurs". Seulement, il n'est pas clair qui (à part l'auteur) l'utilisera. "Apprendre mql5" vs "Apprendre eIntepretar".

Mais le travail accompli est tout simplement colossal, c'est admirable.

 
sergeev:

Dmitry, qu'est-ce que c'est ? Pourquoi l'article se présente-t-il sous la forme d'un ouvrage de référence et de tableaux de macros ?
et où sont les exemples de code, où est l'essence de l'idée du programmeur ?
Les chapitres expliquant le principe et l'identification n'ont malheureusement pas permis de comprendre ce qui se passe.
une telle impression qu'ils l'ont écrit pour eux-mêmes, sans oublier la liste des macros possibles.

Pouvez-vous expliquer à tout le monde le but de ce qui se passe dans le code ? (Je ne suis pas intéressé par l'application, mais seulement par l'organisation des algorithmes MQL).

Il y a 3 ou 4 tables de référence. Le reste est constitué de macros avec des commentaires. L'article est très riche en informations, vous devriez le lire sans sauter un seul mot, ne pas passer au suivant, s'il y a ne serait-ce qu'une pensée peu claire (bien sûr, si nécessaire et si vous le souhaitez). Une lecture unique n'est probablement pas utile. Si vous essayez de dégager l'idée centrale, elle n'est pas si grande et compliquée : toute stratégie sur les ordres doit être décomposée en toutes les phases d'états possibles, mais il s'agit d'un processus créatif personnel, qui n'est pas formalisé. Toutefois, si vous le souhaitez, vous pouvez la formaliser, mais cela demandera beaucoup d'écriture.

L'idée du programmeur... elle est aussi vieille que l'ordinateur lui-même : un programme en langage humain, par lequel une machine de fer fonctionne.

Exemples de code. Fonctions StringFind() et StringSubstr(). En général, il peut être utile d'étudier les fonctions de chaînes de caractères en PHP - cela peut vraiment élargir votre créativité...

Si vous essayez de présenter la totalité des informations présentées dans cet article d'une autre manière, il pourrait être 5 à 10 fois plus volumineux...

Ce qui se passe dans le code... Nous lisons le fichier ligne par ligne, nous séparons les commentaires par le signe "#", nous séparons les champs de phase et d'action par le signe "|", nous séparons les commandes par le signe " ;". Ensuite, nous recherchons les sous-chaînes <, >, <=, <=, etc. dans les expressions de comparaison. Si nous en trouvons une, nous notons son indice, et l'expression est divisée en parties gauche et droite par cet indice. L'expression arithmétique est conservée. Si elle commence par + ou -, nous indentons un caractère et cherchons + ou - avant lequel il n'y a pas de signe *. Nous divisons + ou - en sous-chaînes, et nous séparons ces deux sous-chaînes par le signe *. Ensuite, nous avons quatre arguments (et un de plus sur le côté gauche de l'expression). Ces arguments peuvent être des commandes. Nous vérifions s'il s'agit d'un nombre, ou d'un nombre avec p à la fin, ou d'une variable utilisateur ou d'une variable utilisateur avec p à la fin, si c'est le cas, nous le remplaçons par un nombre. Si ce n'est pas le cas, il s'agit d'une commande. Dans le cas d'une commande, on sépare la commande elle-même et ses arguments par le signe (.

Le plus intéressant est le calcul des expressions. Il y a des structures, cinq structures avec des valeurs dans chaque structure, la structure de valeur spécifie si la valeur est directement numérique ou une commande. Pour chaque structure avec une valeur, une fonction est appelée pour calculer la valeur. Si la valeur est numérique, la fonction ne fait rien, s'il s'agit d'une commande, la fonction appropriée est appelée (sélectionnée par un commutateur). Une fois les valeurs renseignées, l'expression arithmétique est calculée. Dans la structure, les signes des valeurs et de l'action arithmétique sont spécifiés.... Tout est spécifié par des nombres (indices) et l'action nécessaire est sélectionnée par l'intermédiaire d'un commutateur.

Le processus même d'interprétation du travail comporte deux niveaux de commutateur : une commande et l'identifiant des données reçues à propos de la commande. Si cela vous intéresse, fouillez dans le code de la fonction OnTick(), il n'y a pas beaucoup de code. La plus grande quantité de code provient de la fonction OnInit(), mais ce n'est pas si intéressant, cela peut être fait comme c'est plus pratique pour quelqu'un - seulement les fonctions StringFind() et StrSubstr().


Документация по MQL5: Строковые функции / StringFind
Документация по MQL5: Строковые функции / StringFind
  • www.mql5.com
Строковые функции / StringFind - Документация по MQL5
 
IgorM:
Je soutiens, j'ai besoin d'un exemple de programmation d'un TS simple, au moins pour trader sur les croisements des MA lentes et rapides.


Khe... Vous devriez d'abord lire l'article dans son intégralité.

 
marketeer:
...pour être un concepteur visuel de stratégies.....

C'est une bonne idée, cela enlèverait un problème... mais un problème mineur, il faudrait toujours réfléchir à la stratégie, l'analyser, la décomposer en phases.

 
komposter:

Ahem...
Cela ressemble à un article "d'un programmeur pour des programmeurs". Seulement, il n'est pas clair qui (à part l'auteur) l'utilisera. "Apprendre mql5" vs "Apprendre eIntepretar".

Et le travail accompli est tout simplement colossal, c'est admirable.

Enfin, il y en a un peu, comme dans "Crazy scientist"..... En guise de lot de consolation, il y a une description de plusieurs stratégies d'ordre, certes pas très détaillée, mais avec des images.... Quelqu'un, peut-être, au moins cela sera utile...

 

Если постараться изложить весь объем информации представленный в статье как-то иначе, она бы могла поучиться раз в 5-10 объемней...

Vous pourriez mettre les tableaux de référence dans un dock et les joindre à l'article.


J'ai relu l'article et j'ai même décidé de me faire une thèse pour comprendre de quoi il s'agit. Je suis probablement sur le point de comprendre.

Dimitri, corrige-moi si je me trompe.


Donc, le travail de l'expert sera de vérifier les états. Tous les états. Point par point.
Et si l'un des états est pertinent à ce moment-là, alors nous faisons ce que la macro prescrit pour cet état.
La tâche n'est pas de créer des contradictions - de faire en sorte que plusieurs macros gèrent le même état, ou d'éviter les conflits entre deux macros (par exemple, l'une se ferme et la seconde s'ouvre immédiatement, et il y aura un "combat")

En d'autres termes, la tâche de l'expert est de tourner constamment en boucle et de vérifier TOUTES les macros spécifiées (ce que nous avons écrit dans le fichier ou autre chose) et de faire ce qu'elles prescrivent lorsqu'elles remplissent leur condition.


Par exemple, disons que nous avons une stratégie simple (même une stratégie d'indicateur).
Nous devons ouvrir un ordre lorsque le MA se croise. Puis le dépenser. Et le fermer de force à un certain préfixe.

Ce que fait un programmeur dans ce cas.

Il écrit TROIS fonctions (comme des macros dans votre cas)
- la fonction de vérification de l'indicateur et d'ouverture d'un ordre, si l'indicateur a donné le OK et qu'il n'y a pas de pose.
- la fonction de chalutage, s'il y a une pose
- la fonction de fermeture, s'il y a un ordre et qu'il y a un profit

L'ordre d'appel de ces fonctions peut être n'importe lequel. Il suffit de les placer sur le contrôle dans OnTick par exemple

OnTick()
{
OpenOrder()
TralPos()
CloseProfit()
}

Autrement dit, les fonctions sont indépendantes les unes des autres.
Cela signifie que TralPos est indépendant et que la présence des deux autres fonctions n'affecte en rien son travail. Toutes les vérifications nécessaires y sont effectuées (recherche d'une pose, modification d'un arrêt, etc.)
De même, CloseProfit est indépendante.


Vous avez donc écrit plusieurs dizaines de fonctions de ce type, qui sont indépendantes et effectuent des opérations atomiques de l'algorithme.
Et vous avez trouvé un moyen de les paramétrer par le biais d'un fichier de test avec des paramètres, afin de pouvoir modifier les paramètres des fonctions (et donc du conseiller expert) sans le recompiler.



comme ceci ?

 

Je pensais.... :)

Bien sûr, il est dommage que vous n'ayez pas souligné dans l'article deux caractéristiques que je vois pour ma part

1. ex5 expert - sait et sait comment traiter toutes les macros. il lui suffit d'alimenter différents fichiers txt pour travailler.
2. les paramètres des macros peuvent être ajustés "à la volée" dans le fichier txt.

Sinon, tout ceci n'est rien d'autre qu'une bibliothèque habituelle de fonctions pour travailler avec des ordres et des positions. C'est juste que vous avez décidé de les appeler de l'extérieur, d'analyser le fichier txt et d'identifier les macros nécessaires.
mais honnêtement, je ne sais même pas qui l'utilisera. Pour un débutant, il y a beaucoup de code, pour un professionnel, il y a peu de possibilités.

Dmitriy, il est nécessaire de le mettre dans le constructeur visuel pour avoir un assistant.
Et la deuxième chose dont vous avez besoin (si vous ne voulez pas gâcher ce développement), c'est plus d'exemples de stratégies. Pour qu'elles soient transparentes et que l'on puisse voir quels paramètres des macros affectent quoi.
Chargez une douzaine de stratégies dans la base de code. Mais assurez-vous qu'elles sont simples et qu'elles expliquent constamment tous les paramètres.
Pour que cette approche soit claire et qu'ils commencent à l'utiliser (et peut-être même développer le nombre de macros, opensource :).