Erreurs, bugs, questions - page 579

 

olyakish:

>Et vous avez deux transactions ici, une qui a fait un profit et une qui a clôturé à zéro, mais l'équité fluctuait toujours.

en fait, il s'agit d'une seule opération consistant à vendre (position ouverte pour vendre) et à racheter(position fermée pour vendre).

Il s'agit exactement d'une double transaction : In - ouvre une position, et Out - la ferme (si je me souviens bien, il existe aussi InOut - une contre transaction à une position existante).

La règle est qu'il n'y a qu'une seule position, et qu'il peut y avoir autant d'ordres et de transactions que vous le souhaitez.

 
papaklass:

Ce qui n'est pas clair, c'est ce qui suit :

Nous avons deux EA monovalents, chacun travaillant dans son propre fil et avec son propre instrument, avec son propre ensemble consécutif de ticks. Ces deux séries de tics consécutifs sont indépendantes l'une de l'autre. Par exemple, les ticks du GBPUSD arrivent. Ont-ils un impact sur l'EURUSD ? L'EURUSD a son propre flux de cotations indépendant. Ai-je raison ou ai-je tort sur quelque chose ? Si j'ai raison, pourquoi ces deux flux indépendants ne peuvent-ils pas être distribués dans des cœurs différents ? C'est ce qui n'est pas clair pour moi.

Si nous parlons de deux conseillers experts exécutant des graphiques différents, ils bénéficient pleinement de la capacité multi-cœur car ils travaillent dans des threads différents.

Si nous parlons de tests parallèles, vous pouvez lancer deux terminaux clients à partir de dossiers différents et exécuter deux tests simultanément. Les agents fonctionneront sur des cœurs différents.

 
Interesting:

Il s'agit simplement de deux transactions : In - ouvre une position, et Out - la ferme (si je me souviens bien, il y a aussi InOut - une transaction inverse à une position existante).

La règle est la suivante : il n'y a qu'une seule position, et il peut y avoir autant d'ordres et de transactions que vous le souhaitez.



Ok, je suis d'accord, je n'avais pas tout à fait raison.

Dans mon cas, il y a un cycle normal (minimal) : ouvrir une position , fermer une position.

Créez ensuite une position bid-order-deal-ask, puis un bid-order-buy deal (sell close).

Question de fond - veuillez commenter le tableau des capitaux propres/équilibres dans le testeur.

 
papaklass:

Pardonnez mon franc-parler. Je comprends le test mis en évidence lorsqu'il concerne (texte) un seul flux (instrument financier). C'est-à-dire que nous avons un conseiller expert monovalent qui fonctionne avec un seul symbole. Les ticks y sont traités de manière cohérente et il n'y a aucun sens à les traiter en parallèle. Je vois.

Ce qui n'est pas clair, c'est ce qui suit :

Nous avons deux EA monovalents, chacun travaillant dans son propre fil et avec son propre outil, avec son propre ensemble consécutif de ticks. Ces deux séries de tics consécutifs sont indépendantes l'une de l'autre. Par exemple, les ticks du GBPUSD arrivent. Ont-ils un impact sur l'EURUSD ? L'EURUSD a son propre flux de cotations indépendant. Ai-je raison ou ai-je tort sur quelque chose ? Si j'ai raison, pourquoi ces deux flux indépendants ne peuvent-ils pas être distribués dans des cœurs différents ? C'est ce qui n'est pas clair pour moi.

stringo:

Si nous parlons de deux EAs travaillant sur des graphiques différents, ils bénéficient pleinement du multicore car ils travaillent dans des threads différents.

Si nous parlons de tests parallèles, vous pouvez lancer deux terminaux clients à partir de dossiers différents et exécuter deux tests simultanément. Les agents fonctionneront sur des cœurs différents.

1. les EA situés sur des graphiques différents (idéalement sur des symboles différents) tirent réellement parti du multithreading/multi-core. Vous pouvez également utiliser plusieurs terminaux à l'ancienne (par exemple, si vous négociez plusieurs comptes).

2. Lorsque je parle de multithreading, je ne parle que du travail au sein d'un seul conseiller expert. Peu importe comment et par quels moyens le traitement simultané peut être organisé.

Cela n'a aucun sens d'organiser un tel traitement dans ce cadre, sinon cela causera beaucoup de problèmes tant pour les développeurs que pour les utilisateurs finaux(comme l'ont mentionné Renat et Stringo).

Mais il existe une solution, du moins théorique, même si je ne sais pas s'il sera possible de la mettre en œuvre et si elle a un sens.

Un tel "multithreading" sera possible après avoir effectué au moins deux étapes (les développeurs en sauront plus) :

a) des gestionnaires paramétriques pour certains événements (éventuellement en ajoutant de nouveaux ou en modifiant des événements existants) ;

b) modification de l'architecture de l'ensemble du terminal de façon à ce que dans un Expert Advisor (uniquement pour les Expert Advisors), certains handlers puissent être exécutés simultanément.

Et d'après ce que je comprends, sans gestionnaire paramétrique, il n'y a aucun sens à en parler.

3. Du point de vue des développeurs, l'introduction du traitement paramétrique des ticks est une question ouverte. Mais en dépit de tous les problèmes liés à son introduction, ils peuvent décider d'une telle mesure (après avoir reporté sa réalisation à un avenir lointain). La réalisation de tous les suivants, il est d'un monde de fantaisie et ici, bien sûr, reste seulement à rêver.

Ce n'est qu'après l'ajout du paramètre à OnTick qu'il sera possible de diviser et de gérer simultanément les ticks par caractère, d'ici là, l'implémentation n'a aucun sens.

PS

Première conclusion - D'abord OnTick avec des paramètres (le nom d'un symbole suffira), puis la suite de la conversation sur l'utilité de tout cela.

Документация по MQL5: Предопределенные переменные / _Symbol
Документация по MQL5: Предопределенные переменные / _Symbol
  • www.mql5.com
Предопределенные переменные / _Symbol - Документация по MQL5
 
papaklass:
C'est-à-dire qu'au sein d'un même testeur, même si l'EA est multi-devises, les ticks sont cohérents (quel que soit l'instrument), un seul fil, un seul noyau. N'est-ce pas ?

1. Dans l'architecture existante, les tics ne sont traités que par l'outil principal (l'outil graphique). Le système doit donc être cohérent.

Dans ce cas, multidevise indique uniquement que le conseiller expert peut demander des données provenant d'autres symboles et/ou d'autres TF, tout en étant capable d'effectuer des transactions sur les symboles sélectionnés.

Les tests individuels (et tout travail du conseiller-expert) sont effectués de manière séquentielle, dans un seul fil. C'est-à-dire une seule commande (ligne de code) à la fois.

Lorsque nous effectuons l'optimisation d'un conseiller expert, différents agents (c'est-à-dire des noyaux) reçoivent leur propre copie du conseiller expert avec ses propres paramètres et entrées.

Chaque agent effectue le test de manière séquentielle, mais à l'intérieur de lui-même (les autres agents ne sont même pas au courant de son travail). Dans ce cas, l'agent ne connaît que sa tâche, claude sur toutes les tâches qu'il a reçues d'un testeur particulier et qu'il a données aux agents, et l'utilisateur final/testeur connaît toutes les tâches et reçoit les résultats de toutes les passes.

 
papaklass:
C'est-à-dire que même si un EA est multi-devises, les ticks sont séquentiels (indépendants de l'outil), un thread, un core. N'est-ce pas ?

Oui. C'est comme dans la vie. Dans la vie réelle, tous les tics sont cohérents. Dans un quantum de temps, en principe, il ne peut y avoir plus d'un tic-tac.

Deux threads fonctionnent dans le testeur - l'un pour communiquer avec le terminal, l'autre pour traiter les ticks et tester l'Expert Advisor.

Mais l'architecture du terminal client est telle que les ticks sont reçus par le terminal client dans un seul thread et distribués à différents threads pour chaque outil séparément. En outre, chaque conseiller expert travaille dans son propre fil. S'il y a plusieurs cœurs, tous ces threads sont répartis entre eux.

Un Expert Advisor multi-devises dans le testeur et dans le terminal occupe toujours un thread, mais cela ne signifie pas que les autres threads sont inactifs à ce moment-là.

 

Bonjour, je suis préoccupé par le système d'ordres de MT5. Je ne suis pas contre les filets en général, mais je pense que c'est brut en 5. J'ai essayé de comprendre comment faire un joli pivot MT5 afin de rester sur le marché si le renversement ne s'est pas produit, mais soit je ne suis pas intelligent, soit la tâche est impossible. J'ai remarqué que MQ ne veut pas en discuter. Dois-je le décrire en détail ? Aussi, comment répondre à cette question :

Le système de commande actuel :

а. C'est bien et nous ne le changerons pas.

б. Besoin d'amélioration

IMHO : La seule façon d'organiser le commerce à l'heure actuelle est que le PC contrôle toujours le processus. Mais c'est un fardeau et des nerfs. Pourquoi dois-je m'inquiéter de savoir s'il y a une connexion ou non ? Je vais investir de l'argent significatif sur le marché, c'est donc important pour moi.

 
Vict:

Bonjour, je suis préoccupé par le système d'ordres de MT5. Je ne suis pas contre les filets en général, mais je pense que c'est brut en 5. J'ai essayé de comprendre comment faire un joli pivot MT5 afin de rester sur le marché s'il n'y a pas de retournement, mais je suis soit trop bête, soit la tâche est irréalisable.


Veuillez m'envoyer un message en privé, nous en discuterons.
 
Vict:

...Ces derniers jours, j'ai essayé de comprendre comment faire un joli pivot MT5, de sorte que je sois dans le marché si aucun pivot ne se produit, mais soit je suis stupide, soit la tâche est impossible.

Que voulez-vous dire par "rester sur le marché si le retournement ne se produit pas" ? Comment inverser une position qui vous pose problème ?
 

Je regarde le marché comme un gardien de la vague. Je trouve la première vague et entre sur le rebond, en visant un trois. Je ne suis pas lié à un ordre spécifique, les premières vagues peuvent donc se produire à la hausse et à la baisse en même temps. Par conséquent, si j'ai une position à la baisse ou à la hausse, et qu'un signal arrive dans l'autre sens, je dois faire marche arrière, mais cela n'annule pas la tendance passée ! Si le prix dépasse le dernier rebond, nous devons retracer notre position précédente. Cela doit prêter à confusion, voici l'image ci-dessous.

Explication de la photo :

* Le signal haut apparaît, nous ouvrons une position d'achat.

* Un signal de baisse arrive, il est inutile de prendre une position d'achat maintenant. Mon action en 4 est de verrouiller le profit stopLoss sur les niveaux 1, takeProfit après le rebond plus ancien. Par conséquent, si le marché baisse, je prendrai une partie de mes bénéfices, s'il remonte, j'attendrai le niveau cible de trois.

*Que dois-je faire dans MT5 ? Par exemple, j'ai inversé une position pour en tirer profit. Comment puis-je rouvrir mon achat précédent si le marché rebondit ? Est-ce que je confierais cette tâche à mon EA (pas fiable, je veux poster ces commandes sur le serveur) ? Dois-je placer un BuyStop en attente au niveau 1 ? Mais que dois-je faire si le prix passe en dessous du rebond supérieur, comment dois-je le supprimer ?

Dossiers :
x71ec4t1j4.png  15 kb