Questions sur le MQL4 - page 9

 
Est-il correct de supposer que :
1. La clôture mutuelle des ordres a lieu automatiquement sans intervention du teneur de marché ?
2. La modification des ordres ouverts (si les distances acceptées sont respectées) se fait automatiquement sans intervention du teneur de marché ?
3. La suppression et la modification des ordres en attente (si les distances acceptées sont respectées) se fait automatiquement sans intervention d'un teneur de marché ?
 
Est-il correct de supposer que:<br / translate="no"> 1. Les clôtures d'ordres mutuels sont automatiques sans intervention du teneur de marché ?
2. La modification des ordres (si les distances acceptées sont respectées) se fait automatiquement sans aucune intervention du teneur de marché ?
3. La suppression et la modification des ordres en attente (si les distances acceptées sont respectées) se fait automatiquement sans aucune intervention du teneur de marché ?

ce n'est pas correct. vous devez demander à votre courtier comment les ordres sont traités. le traitement automatique est autorisé. mais même sur notre serveur de démonstration, le traitement automatique est parfois désactivé et les confirmations manuelles sont effectuées.
 
Slawa,
Merci beaucoup pour cette réponse claire.

Devons-nous supposer qu'il en va de même pour le pull-up automatique du TrailingStop ?
Existe-t-il des différences pour le teneur de marché en ce qui concerne la source de formation de l'influence de contrôle (EA ou MT) ?
 
Oui, car le courtier ne sait pas qui déplace les stops - le trader manuellement, les experts (ou les scripts) ou le terminal client avec le mécanisme de trailing stop.
 
1) pourquoi l'indicateur obtient-il Bars==0 dans init() après recompilation ?

2) il est relativement lent d'accéder aux éléments du tableau. cela peut-il être accéléré uniquement par des constructions encombrantes ou autre chose ?
   static int know ; static double caa,cbb,ccc,cdd,cee,cff, cgg ; if(b-know !=0){ if(b-know==1){ caa=cbb ; cbb=ccc ; ccc=cdd ; cdd=cee ; cee=cff ; cff=cgg ; cgg=Close[b+6];/*vzad po istorii*/ }else if (b-know==-1){ cgg=cff ; cff=cee ; cee=cdd ; cdd=ccc ; ccc=cbb ; cbb=caa ; caa=Close[b] ; /*vperjod*/ }else{ caa=Close[b] ; cbb=Close[b+1] ; ccc=Close[b+2] ; cdd=Close[b+3] ; cee=Close[b+4] ; cff=Close[b+5];cgg=Close[b+6];}  know=b ; }
 
Slawa,
merci encore. C'est plus que clair.

Myxu,
essayez d'utiliser ArrayCopy();
 
Slawa, tu m'aides souvent pour des détails importants, je vais donc m'adresser à toi personnellement.
Si dans une fenêtre, le conseiller expert et le script travaillent en même temps, s'ils sont approximativement en même temps, ils donnent des ordres au serveur pour modification :
- EA modifie Buy à l'instant t_o, Sovet=OrderModify(...)
- script modifie BuyLimit à l'instant t_o +1ms, Script=OrderModify(...)
Autres événements :
- le serveur renvoie TRUE à l'exécution réussie de l'ordre de modification (je ne sais pas lequel),
(laquelle des variables acquiert la valeur TRUE - Sovet ou Script ?)
et après 1ms...
Le serveur renvoie FALSE en cas d'exécution réussie de la modification (je ne sais pas laquelle) de l'ordre

Question.
1. Est-il correct de supposer que les demandes au serveur sont configurées de telle manière qu'elles sont nommées et que les réponses du serveur ne seront pas mélangées, mais que chacune d'entre elles sera renvoyée à son propre OrderModify() ?
2. Si ce n'est pas le cas, existe-t-il un moyen courant de distinguer les réponses du serveur ? (autre que la pratique consistant à créer une nouvelle commande après avoir reçu une réponse à la précédente) ?

(J'ai d'autres questions similaires ; si elles ne sont pas cruciales, veuillez y répondre dans le forum MQL4, la question y est dupliquée, et si c'est possible, la discussion peut s'y dérouler, car il est plus pratique d'y présenter les codes).
 
citation du nouveau dictionnaire
===
Il n'existe qu'un seul thread, qui est lancé dans un contexte de trading de programme, pour effectuer des opérations de trading à partir d'experts et de scripts. Par conséquent, si ce contexte est occupé par une opération commerciale d'un EA, un autre EA ou script ne peut pas appeler les fonctions commerciales à ce moment-là en raison de l'erreur 146 (ERR_TRADE_CONTEXT_BUSY). La fonction IsTradeAllowed() doit être utilisée pour détecter la possibilité d'effectuer des opérations commerciales. Pour séparer clairement l'accès au contexte commercial, vous pouvez utiliser le sémaphore basé sur la variable globale dont la valeur doit être modifiée à l'aide de la fonction GlobalVariableSetOnCondition().
===
Vous ne pouvez pas trader plusieurs EAs (ou un EA et un script) en même temps. Dans la branche d'erreur #6 il y a un exemple de comment gérer la situation en utilisant le sémaphore
 
Slawa,
merci pour votre réponse. Information très importante. Certaines choses sont clarifiées.

Mais il y a encore des questions.
Est-ce que le fait que
Il n'y a qu'un seul fil pour exécuter les transactions à partir des EA et des scripts
...
pour exécuter les ordres dans un EA ou un script selon les schémas suivants :
a=OrderModify(..number1) ; c=OrderModify(..number2)
;


OrderModify(..numéro1) ; OrderModify(..numéro2) ;


Est-il correct de supposer que :
- dans le premier exemple, OrderModify(..numéro2) ne commencera à s'exécuter que lorsque l'opérateur d'affectation a= sera exécuté après avoir reçu la réponse du serveur à OrderModify(..numéro1) ?
- dans le deuxième exemple, OrderModify(..numéro2) commencera à s'exécuter immédiatement sans attendre que le serveur réponde à OrderModify(..numéro1) ?

 
dans les deux cas, le démarrage des fonctions sera séquentiel. contrairement aux triplets, toutes les fonctions (c'est-à-dire principalement les fonctions de trading) sont désormais synchronisées