Erreurs, bugs, questions - page 2615

 
Pouvez-vous me dire comment trouver le handle de votre terminal à partir d'un EA qui tourne dans le Tester, en utilisant WinAPI ?
 
fxsaber:
Pouvez-vous me dire comment trouver le handle de votre terminal à partir d'un EA qui tourne dans le Tester en utilisant WinAPI ?

Je peux me tromper, mais je pense que vous cherchez le PID d'un processus, alors cherchez dans Google "winapi id de votre programme".

ZS : GetCurrentProcessId

 
Igor Makanu:

Je peux me tromper, mais il semble que vous cherchiez le PID du processus, puis tapez sur Google la requête "winapi id de votre programme".

J'ai besoin qu'un EA s'exécutant sur l'agent puisse obtenir l'identifiant du terminal à partir duquel il a été envoyé pour s'exécuter dans l'agent.

 
 return a++;

Il s'avère que vous ne pouvez pas le faire :( ++ ne fonctionne pas dans ce cas, bien que, dans une forme plus complexe, il renvoie "a" et exécute ensuite ++, c'est-à-dire que la valeur renvoyée n'est pas égale à "a".

 int tt=0;
 #define AAA (0==0) ? (tt++):0
int Primer() {return AAA;}
void OnStart()
  {
  int a=Primer();
  Print(a," ",tt, a!=tt? " WTF?!!": "");
  
  }

2019.12.09 16:17:51.363 proba (EURUSD,H1) 0 1 WTF ?!


construire 2093
 
fxsaber:

J'ai besoin qu'un EA s'exécutant sur un agent puisse récupérer l'identifiant du terminal à partir duquel il a été envoyé pour s'exécuter dans l'agent.

tâche complexe, je n'ai aucune idée de la façon dont les agents sont exécutés, je pense que googler le PID du processus parent compliquera encore plus les choses

je ne sais pas ce qu'il faut faire, mais je pense que je dois passer une sorte d'identifiant (numéro magique) aux agents et le traiter là-bas


SZZ : J'ai le sentiment que même la lecture d'un fichier situé sur le RAMDisk sera plus rapide que d'appeler plusieurs fois WinAPI pour rechercher un processus parent, c'est-à-dire écrire dans un fichier dans un dossier partagé.

 
Alexandr Andreev:

2019.12.09 16:17:51.363 proba (EURUSD,H1) 0 1 WTF !!!

C'est exact. A obtient le tt avant l'incrément.

 
Igor Makanu:

ne connaissent pas la tâche

https://www.mql5.com/ru/forum/321656/page31#comment_14170117

 
fxsaber:

C'est vrai. a obtient tt avant l'incrément.

Oui, j'ai totalement oublié le "i++" "++i".

 

Je vois, c'est-à-dire que vous résolvez l'éternel problème de l'échange de données entre terminaux, je n'ai pas pensé dans cette direction, j'écris généralement tout en dll, ce qui n'est pas résolu en MQL, je cherche rarement des solutions dans WinAPI - cela prend beaucoup de temps

SZZY : Hier, j'ai lu un article sur SQLite, la description contient clairement l'explication que la base de données peut être ouverte à la fois pour l'écriture et seulement pour la lecture, la dll DB elle-même peut être installée séparément, j'aurais cherché une solution optimale d'échange de données, je vais devoir étudier ce genre de choses

 
Igor Makanu:

Je vois, c'est-à-dire que vous résolvez l'éternel problème de l'échange de données entre les terminaux.

Non. Vous devez recevoir des données du testeur à partir duquel le conseiller expert est exécuté. Je sais comment faire pour 90% des cas.