Règles de structure. Apprendre à structurer des programmes, explorer les possibilités, les erreurs, les solutions, etc. - page 19

 
komposter:

MetaDriver le dit bien, et son système est correct. Dick_fx ajouterait également que le "pilote de trading" devrait travailler avec 10 à 20 plateformes pour utiliser les meilleurs prix.

Mais l'utilisation d'un système aussi correct ne convient que dans des conditions idéales - pas d'erreur de stratégie, pas d'intervention de l'utilisateur, pas de force majeure... Et en réalité, c'est rarement le cas.

Laissez-moi vous donner un exemple de dick_fx : 25 stratégies fonctionnent, l'agrégateur (Trade Driver) les rassemble en une position nette et les met sur le marché, tout est OK. Soudain, quelque chose ne va pas dans la 17ème stratégie et elle donne des prévisions malsaines - elle dit d'ouvrir à 50% du dépôt. Le conseiller expert s'ouvre docilement.

Que fait un casier trivial à la MT4 :

  • supprime la 17ème EA du graphique (il est facile de la trouver par la magie dans la donne),
  • fermer la position correspondante (en termes de MT4) ou une partie de la position (en termes de MT5),
  • lit les journaux, créés par cet EA, pour analyser la situation.

Passons maintenant à la "comptabilité correcte". Que doit faire le trader pour corriger l'erreur (une transaction avec une marge de 50 % - une erreur de logique évidente) ?

  • Trouvez quelle stratégie l'a généré (comment ? à partir des journaux ?),
  • Trouvez le code approprié et modifiez-le (return(0) ?),
  • OU dans la boucle de sommation des positions, en face de la stratégie requise (le nombre ne doit pas être confondu !), mettre continuer ;
  • Compilez le conseiller expert (s'il s'agit de MT4 - fermez d'abord le terminal, ou après la compilation, spécifiez les paramètres corrects),
  • L'analyse de la situation - un morceau séparé (si elle n'est pas fournie avec ses propres journaux avec la division en stratégies).

La question est : lequel est le plus facile ? Évidemment, la variante avec MT4.

Et qu'est-ce qui est le moins cher ? Évidemment, l'option avec Netting.

Quelle est la conclusion ? Faire un driver de marché avec GUI à partir de MT4 ;)

Le problème de la localisation d'une stratégie défaillante dans une foule de stratégies hétérogènes résumées existe mais n'est pas encore devenu aussi dramatique. Personnellement, je ne résume (en grande quantité) que des stratégies homogènes, par exemple, des réseaux de neurones optimisés différemment. Mais tout est plus facile ici - les signaux des stratégies sont normalisés (-1...+1), chaque stratégie apporte une contribution microscopique à la position globale, la fiabilité du schéma est obtenue grâce à la "prépondérance statistique". D'un autre côté, c'est plus compliqué - il est presque irréel de détecter à temps une défaillance dans une telle foule, uniquement par des tests individuels (de préférence par des tests automatisés).

On peut essayer de générer des idées pour cette localisation, mais sans essayer de sauter "réflexivement" à 4, et juste sentir l'espace des options - peut-être que quelque chose de mieux sera trouvé. :)

// Probablement, il serait impossible d'inventer un indicateur d'équité individuel (aka testeur) pour chaque meilleure stratégie, mais jusqu'à présent, cela semble être une charge trop lourde.

 
komposter:

MetaDriver le dit bien, et son système est correct. Dick_fx ajouterait également que le "pilote de trading" devrait travailler avec 10 à 20 plateformes pour utiliser les meilleurs prix.

Mais l'utilisation d'un système aussi correct ne convient que dans des conditions idéales - pas d'erreur de stratégie, pas d'intervention de l'utilisateur, pas de force majeure... Et en réalité, c'est rarement le cas.

Laissez-moi vous donner un exemple de dick_fx : 25 stratégies fonctionnent, l'agrégateur (Trade Driver) les rassemble en une position nette et les met sur le marché, tout est OK. Soudain, quelque chose ne va pas dans la 17ème stratégie et elle donne des prévisions malsaines - elle dit d'ouvrir à 50% du dépôt. Le conseiller expert s'ouvre docilement.

Que fait un casier trivial à la MT4 :

  • supprime la 17ème EA du graphique (il est facile de la trouver par la magie dans la donne),
  • fermer la position correspondante (en termes de MT4) ou une partie de la position (en termes de MT5),
  • lit les journaux, créés par cet EA, pour analyser la situation.

Passons maintenant à la "comptabilité correcte". Que doit faire le trader pour corriger l'erreur (une transaction avec une marge de 50 % - une erreur de logique évidente) ?

  • Trouvez quelle stratégie l'a généré (comment ? à partir des journaux ?),
  • Trouvez le code approprié et modifiez-le (return(0) ?),
  • OU dans la boucle de sommation des positions, en face de la stratégie requise (le nombre ne doit pas être confondu !), mettre continuer ;
  • Compilez le conseiller expert (s'il s'agit de MT4 - fermez d'abord le terminal, ou après la compilation, spécifiez les paramètres corrects),
  • L'analyse de la situation - un morceau séparé (si elle n'est pas fournie avec ses propres journaux avec la division en stratégies).

La question est : lequel est le plus facile ? Évidemment, la variante avec MT4.

Et qu'est-ce qui est le moins cher ? Évidemment, l'option Netting.

Quelle est la conclusion ? Faire un driver de marché avec GUI à partir de MT4 ;)

On a l'impression que MT5 négocie des positions.

La compensation est un système comptable et pas plus que cela, MT4 n'a que l'historique des ordres, MT5 a à la fois l'historique des ordres et leur sommation dans une position.

C'est-à-dire que MT5 a sans ambiguïté plus d'informations à traiter.

Nous devons également garder à l'esprit que chaque ordre a une magik et un commentaire, comme dans MT4. Ils nous permettent d'identifier quelle stratégie d'agrégateur a passé un ordre à 50% de la marge.

Si nous ne savons pas comment utiliser ce genre de marqueurs et de commentaires magiques, nous verrons à quel point il est difficile d'identifier le marché et quelles stratégies nous mettons en place.

Si nous voulons utiliser un MetaTrader 5 comme flux de données, puis placer un ordre de sortie dans le même ordre qui est censé être fermé, alors dans les ordres fermés seront répertoriés uniquement les ordres qui ont des ordres de sortie, et dans les ordres ouverts qui n'ont pas de sortie.

 
TheXpert:

Le pilote commercial diminue la fiabilité du système.

Vous ne le croyez pas vraiment ? Et vous parlez si vigoureusement du conducteur comme de quelque chose de vraiment cool.

Voici un exemple : nous avons un arbitragiste à la ronde. Le premier ordre est exécuté par limite, puis le tour est fermé par marché.

Que se passe-t-il dans le testeur interne ? Le cercle est fermé et il n'y a pas de requêtes, de pings et autres choses qui perturbent les échanges.

Imaginons maintenant qu'après la requote limite (le déclencheur était là, la position n'est pas apparue), le prix a reculé mais cela s'est produit à minuit (la loi de la Fortune) et la connexion a été perdue pendant ce temps.

Le signal a été détecté et il y a une position dans le testeur interne ; elle doit être réglée. Cela a entraîné une perte énorme selon les normes d'arbitrage. En fait, la réponse s'est terminée par une redirection, il n'est donc pas nécessaire d'ouvrir une position.

Les meilleures chaussures sont celles qui sont faites sur mesure pour s'adapter à vos pieds. Plus ils sont polyvalents, moins ils sont fiables.

 

TheXpert:

LeXpert:

Le pilote commercial réduit la fiabilité du système.

Tu ne le crois pas vraiment ? Et discuter du conducteur si vigoureusement comme quelque chose de vraiment cool.

Exemple - nous avons un arbitragiste de type round robin. Le premier ordre se déclenche sur la limite, puis le cercle se ferme sur le marché.

Que se passe-t-il dans le testeur interne ? Le cercle est fermé, il n'y a pas de re-jacks, requotes, pings et autres choses qui perturbent les échanges.

Imaginons maintenant qu'après la requote limite (le déclencheur était là, la position n'est pas apparue), le prix a reculé mais cela s'est produit à minuit (la loi de la Fortune) et la connexion a été perdue pendant ce temps.

Le signal a été détecté et il y a une position dans le testeur interne ; elle doit être réglée. Cela a entraîné une perte énorme selon les normes d'arbitrage. En fait, la réponse s'est terminée par une jonction, il n'est donc pas nécessaire d'ouvrir une position.

Les meilleures chaussures sont celles qui sont faites sur mesure pour le pied. Plus ils sont polyvalents, moins ils sont fiables.

Eh bien, eh bien, eh bien.


Joyeux anniversaire à toi.... !

--

Andriyuha, bien sûr, ce driver est destiné aux stratégies de prédiction, pas aux stratégies d'arbitrage. Et l'une n'exclut pas l'autre. La place des stratégies d'arbitrage est un peu plus loin dans la chaîne, à savoir dans l'agrégateur. Je suis en train de planifier ce module (arbitrage). Si on continue avec le schéma... J'ai écrit à ce sujet hier, ici même.

https://www.mql5.com/ru/forum/105007/page9#821911

et plus loin ici

https://www.mql5.com/ru/forum/105007/page10#821949

 
Urain:

Partir de la tâche. Quelles sont les tâches les plus demandées dans l'interface graphique ?

Vous pouvez le faire à partir de là. Décrivez ce que vous essayez d'accomplir, définissez les caractéristiques communes, créez un cadre, puis ajoutez d'autres éléments et voyez à quel point il est facile de modifier le cadre.

Pour comprendre ce qu'il devrait être, réécrivez-le. C'est comme ça qu'il me semble.

J'aimerais quelque chose comme ça :

Urain:
Si vous faites référence à l'API par le biais du module de référence, vous pouvez alors modifier un module et changer de plate-forme.

Je veux dire, je vais devoir inventer un routeur d'événements universel ( : pardonnez-moi TheXpert :) personnalisable. Pour le connecter au TC d'un côté et au GUI de l'autre.

--

LeXpert:
...

Les meilleures chaussures sont celles qui sont faites sur mesure pour s'adapter à votre pied. Plus ils sont polyvalents, moins ils sont fiables.

// Andrei, le but des solutions universelles est l'utilisation multiple. Je connais moi-même les inconvénients. ))

 
Urain:

On a l'impression que MT5 négocie en positions.

La compensation est un système comptable et rien de plus. MT4 n'a que l'historique des ordres, MT5 a à la fois l'historique des ordres et leur addition dans une position.

C'est-à-dire que MT5 a sans ambiguïté plus d'informations à traiter.

Nous devons également garder à l'esprit que chaque ordre a une magik et un commentaire, comme dans MT4. Ils nous permettent d'identifier quelle stratégie d'agrégateur a passé un ordre à 50% de la marge.

Si nous ne savons pas comment utiliser ce genre de marqueurs et de commentaires magiques, nous verrons à quel point il est difficile d'identifier le marché et quelles stratégies nous mettons en place.

Si nous voulons utiliser un MetaTrader 5 comme flux de données, puis placer un ordre de sortie dans le même ordre qui est censé être fermé, alors dans les ordres fermés seront répertoriés uniquement les ordres qui ont des ordres de sortie, et dans les ordres ouverts qui n'ont pas de sortie.

Vous avez pratiquement clos le sujet de l'avantage d'un système d'ordres (MT4) par rapport à un système d'ordres nets (MT5). Une telle chose ne m'était pas venue à l'esprit, bien qu'elle fonctionne évidemment et soit proche.
 
MetaDriver:
Je n'ai pas pensé à une telle astuce, bien qu'elle fonctionne manifestement et qu'elle soit proche.
Je trouve étrange que cela ne m'ait pas traversé l'esprit :) alors il faut un deuxième indice - en fait, il devrait y avoir trois magiciens connectés, car il y a aussi TP et SL.
 
sergeev:
C'est étrange qu'il ne soit pas venu :) alors un deuxième indice pour vous - en fait, il devrait y avoir trois magiciens apparentés, car il y a aussi TP et SL.

Cela ne me concerne pas - je n'utilise pas de stops de trading (stratégiques), mais je vous remercie pour le conseil. ))

--

Wap tous ces problèmes sont pour la plupart tirés par les cheveux (au filet), ou par les clients de l'emploi. Une forme quaternaire de "diversification des stratégies" lui colle à la peau, l'atavisme est nu, pas mieux que la locomotion. On peut écrire tout l'historique des positions recommandées et de l'exécution (positions de marché) sur disque en général. Pour chaque sous-stratégie individuellement. Si l'auteur ne perd pas de temps, mettez-le dans un fil de discussion séparé (Expert Advisor) et alimentez-le en informations par le biais d'événements personnalisés. Pour l'analyse des "réalités d'exécution", il peut s'avérer utile.

 
Urain:
Et si vous faites une référence API par le biais du module de référence ? alors vous pouvez changer un module et changer la plateforme.

Exactement. Il n'est pas nécessaire d'écrire un module séparé. Parce que le fournisseur de données est ce module même. Je dessinerai le schéma d'une telle application lundi. En ce qui concerne l'interface graphique, nous n'avons pas besoin d'inventer un "routeur d'événements", comme le suggère Vladimir. Le module d'exécution supporte l'interface GUI, ce qui signifie que tout TC connecté au module d'exécution commencera à travailler avec le panneau GUI par défaut, même sans rien savoir de celui-ci (le schéma sera disponible lundi). Le module d'exécution est ici comme une classe d'adaptateur. Le principe est simple :

Tous les systèmes qui savent comment travailler avec le module d'exécution peuvent interagir entre eux sans rien savoir les uns des autres.

 
MetaDriver:
Je n'ai même pas pensé à une telle chose, bien que cela fonctionne manifestement et que l'on puisse en trouver près de chez moi.

C'est étrange, Vladimir, que ce soit une révélation pour vous. J'utilise ce système dans mon travail depuis presque un an maintenant.

Oui, comprenez que ce n'est pas une question de filet. Comme Vladimir l'a souligné à juste titre, les algorithmes sont la règle, et vous ne pouvez pas construire un projet de grande envergure, et surtout évolutif, sans savoir comment structurer correctement les données. Prêtez attention à la discussion active sur le schéma de pilotage du marché, l'un a besoin de ceci et l'autre de cela, et dans ce schéma nous devons introduire de plus en plus de nouveaux modules, d'interrelations, de différents "routeurs d'événements". Et que deviendrait un projet si des dizaines ou deux traders ayant des tâches différentes et une compréhension différente du marché l'utilisent ?

Pour une raison quelconque, les mots d'Alexandre Radichtchev me viennent à l'esprit : "La bête est malicieusement énorme, stoïque et aboyante".