Mon approche. Le noyau est le moteur. - page 47

 
Реter Konow:

Je suis plutôt critique à l'égard de mon travail. C'est pourquoi je m'améliore sans cesse.

Anatoly est bon. Aucun doute là-dessus. La bibliothèque est bonne.

Mais, même la fenêtre que je vous ai montrée aujourd'hui peut être réalisée avec beaucoup de difficultés. Et bien d'autres choses encore.

Juste pour l'intérêt, vous pouvez composer et montrer ici le code que vous devez écrire pour répéter ma fenêtre et nous le comparerons avec ma version.

Question à poser : Pouvez-vous décrire pourquoi cette fenêtre est nécessaire et comment elle aide le trading semi-automatique ?

 
Реter Konow:

Pourquoi avez-vous écrit la bibliothèque gui ?

Letravail avec les objets graphiques dans MT4 est aussi celui qui prend le plus de temps. Non seulement vous devez créer un objet, mais aussi définir un certain nombre de propriétés. Pour simplifier le travail avec les objets graphiques, j'ai prévu plusieurs fonctions qui permettent de créer rapidement certains objets graphiques. Lorsque MT5 est apparu, tous les objets graphiques qu'il contient ont encore plus de propriétés et le nombre de paramètres dans les fonctions a tellement augmenté qu'elles paraissaient ridicules. Une question s'est donc posée : comment simplifier le travail avec des objets graphiques dans ces nouvelles conditions ? Au fur et à mesure de l'apparition de la POO, ses applications ont été envisagées. Par conséquent, une classe permettant de travailler rapidement avec un seul objet graphique a été créée. Puis l'idée de créer plusieurs éléments composés a émergé. J'ai aimé l'idée et j'ai écrit le premier article - comment créer mes propres contrôles. Tout s'est déroulé sans problème et en 2 ou 3 semaines, en m'exerçant pour le plaisir, j'avais créé plusieurs contrôles similaires aux contrôles standard et créé une bibliothèque, dont la description est fournie dans le deuxième article. Le troisième article concerne les formulaires, mais il est plutôt formel ; par souci d'exhaustivité, j'ai décidé de finaliser la bibliothèque et les formulaires étaient souhaitables pour cela. Mais c'est dommage pour les formes, je n'ai pas trouvé comment les améliorer. En outre, il n'y avait pas d'événements de mouvement de la souris à l'époque, de sorte que les barres de défilement sont bizarres et que le formulaire est traîné d'une manière inhabituelle. Quant aux formulaires, au lieu de les inciter, on les a anathématisés. Et il n'y a pas beaucoup de travail pour que la bibliothèque soit très pratique. J'ai même des idées pour l'améliorer, retravailler les barres de défilement, le formulaire drag-and-drop, et faire le formulaire lui-même d'une manière différente, qui ne copierait pas une classe vierge, et créerait un objet et y connecterait des contrôles.

 
Vitaly Muzichenko:

Question par question : Pouvez-vous décrire pourquoi cette fenêtre est nécessaire et comment elle aide le trading semi-automatique ?

Le trading semi-automatique, c'est la même "merde" incompréhensible et financièrement dommageable que le trading entièrement automatique ou manuel.

Un autre type de négociation qui peut intéresser les traders.

 
Artyom Trishkin:

Considérez-le comme bon vous semble. Vous pouvez relire les discussions des articles d'Anatoly - on y trouve vos tentatives de concurrence. Mais Anatoly a tout fait il y a longtemps, modestement, qualitativement, professionnellement, "sans bruit et sans poussière", et vous en êtes encore à vous louer.

La question est de savoir comment l'utiliser. Devez-vous lire 50 articles ? Et pourtant, on l'appelle "rapide et facile", quel paradoxe.

 
Dmitry Fedoseev:

La question est de savoir comment l'utiliser. Devez-vous lire 50 articles ?

Je l'ai compris rapidement - sans les articles. Je les ai lus, bien sûr - ils sont sortis, je les ai lus depuis mon portable. Pour comprendre ce qui y est décrit. Mais créer et travailler avec des objets y est plus facile que dans celui de Peter. Créez le nombre requis d'objets avec des descriptions de propriétés dans OnInit() et utilisez leurs messages dans OnChartEvent(). Le modèle habituel d'événement.

Plus tard, j'ai adapté sa bibliothèque pour moi-même - je l'ai rendue multiplateforme, j'ai ajouté la sauvegarde des valeurs de tous les objets créés, afin d'éviter de les remettre à leur état d'origine lors de la réinitialisation, j'ai ajouté des sons pour de nombreuses interactions avec les objets (définis par défaut et individuellement, et désactivés - pour qu'ils ne sonnent pas et ne tintent pas constamment), j'ai essayé et abandonné - j'ai mes propres idées. La bibliothèque d'Anatoly ne permet pas de créer des objets à la volée, au moyen de nouveaux depuis le programme, ne permet pas de rendre active plus d'une fenêtre... En général - il a beaucoup à développer. Mais c'est une question pour lui. Ou à vous-même - pour fabriquer ce dont vous avez besoin pour vos besoins et avec tous les objets nécessaires et les possibilités de leur utilisation.

 
Artyom Trishkin:

Je l'ai compris rapidement - sans les articles. Je les ai lus, bien sûr - ils sont sortis, je les ai lus depuis mon portable. Pour comprendre ce qui y est décrit. Mais créer et travailler avec des objets y est plus simple que dans celui de Peter. Créez le nombre requis d'objets avec des descriptions de propriétés dans OnInit() et utilisez leurs messages dans OnChartEvent(). C'est le modèle habituel des événements.

J'ai ensuite numérisé sa bibliothèque pour moi-même - je l'ai rendue multiplateforme, j'ai ajouté des valeurs de sauvegarde de tous les objets créés, afin qu'ils ne soient pas réinitialisés à leur état d'origine lorsqu'ils sont réinitialisés, j'ai ajouté des sons pour de nombreuses interactions avec les objets (définis par défaut et individuellement, et désactivés - afin qu'ils ne sonnent pas constamment et ne se bousculent pas), j'ai joué et abandonné - j'ai mes propres idées. La bibliothèque d'Anatoly ne permet pas de créer des objets à la volée, au moyen de nouveaux depuis le programme, ne permet pas de rendre active plus d'une fenêtre... En général - il a beaucoup à développer. Mais c'est une question pour lui. Ou à vous-même - pour fabriquer ce dont vous avez besoin pour vos besoins et avec tous les objets nécessaires et les possibilités de leur utilisation.

Je pense qu'il est possible de créer des objets via new. Et la création de formulaires est la même muette que la mienne, et dans la bibliothèque standard est la même - vous devez copier le modèle de formulaire. Il est intéressant de noter que j'ai été tellement critiqué, presque anathématisé pour mes formes, mais ils n'ont pas évolué depuis.

 

c'est le rythme... c'est la vitesse !

Alors que je suis passé à 60 km, 15 pages ont été jetées sur le sujet. Total d'une page pour 4( !) km ;-)

Peter n'a pas le temps de déplacer le noyau et le moteur du noyau.

 
Dmitry Fedoseev:

Les objets peuvent probablement être créés avec du neuf, ce n'est pas impossible, ou est-ce vraiment impossible ? Et la création de formulaires - aussi bête que la mienne, et dans la bibliothèque standard est également la même - vous devez copier le formulaire vierge. Il est intéressant de noter que j'ai été tellement critiqué, j'ai presque été anathématisé pour mes formes, mais ils n'ont pas évolué depuis.

Oui, je dois répéter le même code une centaine de fois pour une centaine de fenêtres, mais avec des paramètres différents. Je m'en suis débarrassé. Pour chaque contrôle, j'ai créé une méthode universelle de création - il me suffisait d'entrer les paramètres requis pour chaque élément. Par conséquent, il était très facile pour moi de créer - j'avais besoin d'une fenêtre - CreateWindow(initial, individuel, paramètres), etc. Et ensuite, si l'élément est créé, il est possible de lui ajouter des bibelots, ou de le laisser standard par défaut.

C'est-à-dire, approximativement (structurellement) comme ça :

CreateWindow(0);

CreateButton(1,0,координаты);

CreateButton(2,0,координаты);

...

CreateNuclearBomb(1,0,координаты);

...

Bien et c'est déjà suffisant d'avoir une fenêtre avec deux boutons et une bombe atomique :)

Mais j'ai retravaillé la bibliothèque d'Anatoly. C'est plus compliqué, il me semble.

Quant à la création sur nouveau - si ma mémoire ne change pas - je n'ai pas regardé le code depuis longtemps - il a un objet au niveau global, et à partir de celui-ci le travail continue déjà pour créer et contrôler tous les éléments.

Bien sûr, vous pouvez essayer de faire une liste avec plusieurs bibliothèques, créées par de nouveaux, et ensuite dans la minuterie et les événements pour voir ces listes et ce qui se passe en eux. Mais une fois que je l'ai essayé, chacun de ces objets réagit aux actions des objets voisins - lorsque vous déplacez une fenêtre, les autres s'agitent également. J'ai donc renoncé à essayer de comprendre - je n'avais pas le temps.

 
Artyom Trishkin:

Oui, vous devez répéter le même code cent fois pour cent fenêtres, mais avec vos propres paramètres. Je me suis débarrassé de cela - pour chaque contrôle, j'ai créé une méthode universelle de création - il suffit de taper les bons paramètres pour chaque élément. Par conséquent, il était très facile pour moi de créer - j'avais besoin d'une fenêtre - CreateWindow(initial, individuel, paramètres), etc. Et ensuite, si l'élément est créé, il est possible de lui ajouter des bibelots, ou de le laisser standard par défaut.

C'est-à-dire, approximativement (structurellement) comme ça :

CreateWindow(0);

CreateButton(1,0,координаты);

CreateButton(2,0,координаты);

...

CreateNuclearBomb(1,0,координаты);

...

C'est déjà suffisant d'avoir une fenêtre avec deux boutons et une bombe atomique :)

Mais j'ai retravaillé la bibliothèque d'Anatoly. C'est plus compliqué, il me semble.

Quant à la création sur nouveau - si ma mémoire ne change pas - je n'ai pas regardé le code depuis longtemps - il a un objet au niveau global, et à partir de celui-ci le travail continue déjà pour créer et contrôler tous les éléments.

Bien sûr, vous pouvez essayer de faire une liste avec plusieurs bibliothèques, créées par de nouveaux, et ensuite dans la minuterie et les événements pour voir ces listes et ce qui se passe en eux. Mais une fois que je l'ai essayé, chacun de ces objets réagit aux actions des objets voisins - lorsque vous déplacez une fenêtre, les autres s'agitent également. Je n'ai pas le temps d'y réfléchir.

Quel est le paramètre 0 pour CreateWindow(0) et CreateButton() ? Avec CreateWindow(0), il s'agit d'un identifiant de fenêtre, tandis qu'avec CreateButton(), cela signifie que les boutons seront sur le formulaire 0. Ou pas du tout ? Un seul formulaire est possible et tous les contrôles seront sur celui-ci ?

 
Dmitry Fedoseev:

Quel est le paramètre 0 de CreateWindow(0) et CreateButton() ? Avec CreateWindow(0), c'est l'identifiant de la fenêtre et avec CreateButton(), cela signifie que les boutons seront sur le formulaire 0. Ou pas du tout ? Un seul formulaire est possible et tous les contrôles seront sur celui-ci ?

Chaque élément peut être rattaché à un autre. Vous avez raison, le "0" est l'identifiant de l'élément. Il s'agissait d'une représentation schématique du principe de conception des interfaces graphiques. Les boutons l'ont, ils seront donc attachés à cette fenêtre. Si je n'ajoutais pas de liaison à la fenêtre, elle serait attachée au graphique. Je pense que c'est comme ça que ça se passe là-bas - je ne me souviens pas exactement.