[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 375

 
Chiripaha:

Je ne suis pas prêt à accepter. - En effet, à partir d'une telle position, la logique du fonctionnement des EA et du calcul correct de l'argent et des positions est perdue. - C'en est une. Deuxièmement. - Si mon EA est en sommeil, par exemple, pendant 100 millisecondes, et qu'un autre commence à travailler au même moment, que se passera-t-il, dès que ces 100 millisecondes seront passées, l'autre devra arrêter son travail... et le repasser à celui-là au milieu et ainsi de suite indéfiniment... D'un autre côté. J'ai vu (ce qui n'est pas rare) des EA se mettre en "veille" pendant des minutes et plusieurs fois à chaque bloc d'exécution. - Ensuite, si tous les autres hiboux ne travaillent pas pendant cette période, c'est également une erreur. - La question est donc tout à fait pertinente. J'aimerais comprendre la logique du fonctionnement à ce stade. Mais je n'ai pas trouvé d'explication détaillée dans les documents officiels.

Mais entre deux maux, je choisirais le second. Dans ce cas, je laisserais simplement la chouette dont je suis sûr. Sinon, tant pis : au moins l'exactitude des recalculs est préservée, bien que leur travail soit ralenti.

Le problème n'est pas aussi trivial qu'il n'y paraît. - Le fait est que mes expériences ont montré que si la case "Autoriser les EA à négocier" est décochée, le travail de l'EA ne s'arrête pas - tous les calculs sont effectués de la même manière à chaque tick. Les seules transactions de l'EA ne sont pas envoyées au serveur. Mais, si ces calculs sont remplis de ces "erreurs" (pas tout à fait correctement), alors s'il y a 5-10 de ces EA, ils peuvent spécifiquement ralentir l'exécution de l'EA réel qui est en train de trader.

Oui, certains programmeurs contrôlent les autorisations d'échange et sautent le travail de la chouette sur cette base. Mais cela ne se fait pas plus souvent. Et si le code est fermé, on ne peut absolument pas comprendre si l'opération est un freinage ou non (et quel hibou exactement). - Maintenant, je vais fouiller dans ce sujet sur le forum de recherche. Quelque chose s'est ralenti.

Merci à Arles pour la question, pour m'avoir rappelé et mis à jour. Je n'étais pas assez expérimenté pour comprendre ce qui était écrit sur le sujet. Je vais le refaire maintenant.


Sans entrer dans les détails du traitement du code du processeur, arrêtons-nous à l'"image" commune : pendant Sleep(), il y a une pause pour le traitement ultérieur de ce code (tous les autres codes sont traités dans des threads parallèles INDEPENDANTS).
 
TarasBY:
Sans entrer dans les détails du traitement du code du processeur, arrêtons-nous sur une "image" commune : pendant Sleep(), il y a une pause dans le traitement ultérieur de ce code (tous les autres codes sont traités dans des threads parallèles INDEPENDANTS).

Eh bien, voilà... Et ça, c'est une "embuscade". Si je comprends bien ce que je dis. - Laissez-moi clarifier...

Si je vous ai bien compris, Igor, les Expert Advisors ne sont pas du tout traités séquentiellement (comme je l'ai fait dans mes expériences), mais en parallèle ? Et, s'il en est ainsi, il s'avère qu'Arles a raison et que 2 trades peuvent être ouverts en parallèle si chaque signal a reçu les bonnes conditions ?

C'est pourquoi il est important pour moi - il m'aidera à organiser correctement mon travail. Lorsque vous ne comprenez pas ce qui se passe et comment, vous pouvez faire une grosse erreur.
 

De plus, à première vue, Sleep() ne fonctionne pas dans le testeur, c'est même écrit quelque part dans la documentation...

Le démarrage de l'EA se fait dans la fonction Start() avec l'arrivée de chaque tick. Si vous avez une douzaine d'EAs, essayez de gérer les erreurs, elles devraient apparaître. Si vous faites beaucoup de demandes auprès des sociétés de courtage, il est fort probable que vous receviez une erreur du type "Le flux est occupé".

En ce qui concerne la case à cocher"Autoriser l'EA à négocier" . Oui, le Conseiller Expert fonctionne, mais seuls les trades sont interdits, voir le log, il dira tout.

 

Bonjour, pouvez-vous me dire ce qu'est ce script ?

//+------------------------------------------------------------------+
//|                                                        close.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
#property show_confirm

//+------------------------------------------------------------------+
//| script "close first market order if it is first in the list"     |
//+------------------------------------------------------------------+
int start()
  {
   bool   result;
   double price;
   int    cmd,error;
//----
   if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
     {
      cmd=OrderType();
      //---- first order is buy or sell
      if(cmd==OP_BUY || cmd==OP_SELL)
        {
         while(true)
           {
            if(cmd==OP_BUY) price=Bid;
            else            price=Ask;
            result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE);
            if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
            else error=0;
            if(error==135) RefreshRates();
            else break;
           }
        }
     }
   else Print( "Error when order select ", GetLastError());
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
alex12:

Bonjour, pouvez-vous me dire ce qu'est ce script ?

Il est dit : "Fermer le premier ordre de marché s'il est le premier de la liste".
 
alex12:

Bonjour, pouvez-vous me dire de quel type de script il s'agit ?


Alex, c'est ce que ça dit ici :

script "close first market order if it is first in the list"

Un script qui ferme le premier ordre au marché si c'est le premier ordre de la liste.

C'est-à-dire que si je comprends la logique du code, il est plus probable que le premier ordre ouvert soit fermé. Si vous avez, par exemple, 10 ordres ouverts, l'ordre numéro 1 sera fermé. C'est à dire celui qui a été ouvert en premier.

 
Chiripaha:

Eh bien, voilà... Et ça, c'est une "embuscade". Si je comprends bien ce que je dis. - Laissez-moi être direct...

Si j'ai bien compris, Igor, les Expert Advisors ne sont pas traités séquentiellement (comme je l'ai fait dans mes expériences), mais en parallèle ? Si c'est le cas, cela signifie qu'Arles a raison et que deux trades peuvent être ouverts en parallèle, si chaque signal a reçu les bonnes conditions ?

Pourquoi est-ce important pour moi ? Cela m'aidera à organiser le travail correctement. Lorsque vous ne comprenez pas ce qui se passe et comment, vous pouvez faire beaucoup d'erreurs.

Sergiy, d'où vous vient un postulat tel que "Tous les Expert Advisors sont traités en série par le terminal" ? - À l'ère du calcul parallèle. ;)

Je n'ai pas effectué de telles expériences (en déterminant l'ordre de traitement des codes des Expert Advisors par le terminal) - ma réponse est au niveau de la logique. J'ai simplement (sans entrer dans les détails du fonctionnement du terminal) organisé (forcé) le traitement consécutif des Expert Advisors pendant les opérations commerciales. Mais la réponse la plus correcte est ma propre expérience. Il est vrai qu'il ne faut pas oublier de considérer correctement les paramètres d'entrée lors du réglage de l'expérience, afin de traiter correctement les résultats obtenus. :)

P.S. J'ai lu quelque part (chez un développeur), que la version actuelle de MT4 peut traiter jusqu'à 8 (si je me souviens bien) ordres de transaction en parallèle, bien que de "mon point de vue" il n'est pas clair ce qui est un terminal utilisateur - il est régulé par le serveur DC ("à l'autre bout du fil"). ;)

 
Chiripaha:

...

C'est-à-dire que si je comprends la logique du code, il est plus probable que le premier ordre ouvert soit fermé. Si vous avez, par exemple, 10 ordres ouverts, l'ordre numéro 1 sera fermé. C'est-à-dire, celui qui a été ouvert en premier.


Oui. Mais seulement si ce premier ordre est un ordre au marché. S'il s'agit d'un ordre en attente, rien ne se passera.
 
TarasBY:

Sergey, d'où vous vient un tel postulat que "Tous les EAs sont traités par le terminal de manière séquentielle" ? - À l'ère du calcul parallèle. ;)

Je n'ai pas fait de telles expériences (avec la détermination de l'ordre de traitement des codes des Expert Advisors par le terminal) - ma réponse est au niveau de la logique. J'ai simplement (sans entrer dans les détails du fonctionnement du terminal) organisé (forcé) le traitement consécutif des Expert Advisors pendant les opérations commerciales. Mais la réponse la plus correcte est ma propre expérience. Il est vrai qu'il ne faut pas oublier de considérer correctement les paramètres d'entrée lors du réglage de l'expérience, afin de traiter correctement les résultats obtenus. :)

C'est là tout l'intérêt (pour l'exactitude de la mise en scène des paramètres de l'expérience). C'est pourquoi je pose ces questions, car je ne suis pas sûr de mes propres capacités et j'essaie donc d'identifier - peut-être ai-je fait quelque chose de mal, si ces résultats divergent. Il s'agit plutôt d'une question de test - dans des moments comme celui-ci, un programme apparemment bien écrit échoue et vous réalisez que vous devez chercher quelque part.

J'ai eu ces "expériences" par accident. J'ai écrit des programmes pour le travail en parallèle aussi - j'ai abandonné cette méthode maintenant parce qu'elle n'a pas augmenté l'efficacité (elle peut être réalisée dans d'autres projets). Le résultat était tel, que tant que le premier programme n'était pas traité - aucune donnée n'était obtenue - le second ne démarrait pas (ou, plus précisément, échouait). Cette séquence dépendait de la fenêtre dans laquelle j'avais placé (c'est-à-dire dans quel ordre) les blocs EA. - Nous concluons donc que la séquence des fenêtres est importante, c'est-à-dire que les conseillers experts sont traités de manière séquentielle et non en parallèle. Et cette séquence dépend de la numérotation des fenêtres dans la liste du terminal.

C'est l'essence même de l'expérience.

Mais, encore une fois, il s'agit peut-être d'une interprétation incorrecte de mes résultats. C'est pourquoi je m'efforce de résoudre cette question maintenant, et pas seulement avec le "glissement".

 
Integer:

Oui. Mais seulement si le premier ordre est un ordre au marché. Si elle est en attente, rien ne se passe.
Oui, exactement. - C'est une clarification importante. Je l'ai raté.
Raison: