Questions des débutants MQL4 MT4 MetaTrader 4 - page 144

 
Ihor Herasko:

Oui, bien sûr. La fonction est universellement écrite. Si nous l'adressons à chaque tic, la boucle passe par tout l'historique du compte. De plus, l'historique du compte peut être assez long (j'ai rencontré des cas où il y avait plus de 100 000 commandes). Pour accélérer l'exécution, il n'est pas nécessaire d'exécuter la boucle sur l'ensemble de l'historique à chaque fois. Il suffit de le faire une seule fois au tout début et de se souvenir de l'index de la dernière commande traitée. La fois suivante, vous devez parcourir la boucle uniquement pour les commandes dont l'indice est supérieur à l'indice stocké. Ensuite, il faut se souvenir à nouveau de l'indice de la dernière commande, et ainsi de suite.

Merci pour cette explication détaillée. Maintenant, je sais de quel côté regarder, pour ainsi dire. D'ailleurs, le compte de démonstration a bien fonctionné avec 5 EA, en ce sens qu'aucune transaction n'a été ouverte plus d'une fois pendant la date actuelle et qu'il n'y a pas eu de retard dans l'ouverture des 5 positions EA.
 
Vitaly Muzichenko:

Le spread flottant est à blâmer.

C'est ce que j'ai pensé au début, mais c'est également vrai pour les paires avec un spread fixe (comme le DAX30) et pour les réseaux constitués d'ordres dans une seule direction (y compris un ordre) - dans ce cas, le spread n'est pas pertinent (un seul prix détermine le profit - soit seulement Bid ou seulement Ask).

Vitaly, j'ai compris de votre réponse qu'il n'y a pas d'erreur évidente dans les formules ?

 
Igor Zakharov:

C'est ce que j'ai pensé au début, mais c'est également vrai pour les paires avec un spread fixe (comme le DAX30) et pour les réseaux composés d'ordres dans une seule direction (y compris un ordre) - dans ce cas, le spread n'est pas pertinent (un seul prix définit le profit - soit seulement Bid ou seulement Ask).

Vitaliy, j'ai compris de votre réponse qu'il n'y a pas d'erreur évidente dans les formules ?

Voici la formule de l'ouvrier :

 double poi=SymbolInfoDouble(mSymbol,SYMBOL_POINT);
 int dig=(int)SymbolInfoInteger(mSymbol,SYMBOL_DIGITS);
 double TickValue=SymbolInfoDouble(mSymbol,SYMBOL_TRADE_TICK_VALUE);

 double BuyAwerage=0,SellAwerage=0;
  if(_GetP.Buy._Lots>0)  BuyAwerage= NormalizeDouble(bid-(_GetP.Buy._AllProfit/( TickValue*_GetP.Buy._Lots ))*poi,dig);
  if(_GetP.Sell._Lots>0) SellAwerage=NormalizeDouble(ask+(_GetP.Sell._AllProfit/(TickValue*_GetP.Sell._Lots))*poi,dig);
 
Vitaly Muzichenko:

Voici la formule de l'ouvrier :

C'est-à-dire l'analogique complet. Ma formule est même légèrement plus universelle - en général, la taille du tick peut ne pas être égale à un point (ce que l'on trouve souvent sur les indices).

Merci.

 

Bonjour.

Peut-être quelqu'un a-t-il également rencontré le problème suivant dans MT4.

Je teste un système de trading composé de plusieurs robots pour un compte de démonstration.

Mais périodiquement, une à deux fois par jour, il arrive que le robot fixe un ordre d'achat ou de vente stop qui ne fonctionne pas. Cet ordre est surligné en jaune et si vous essayez de le supprimer, vous verrez un avertissement concernant les paramètres désactivés.

Le robot qui l'a fixé selon l'algorithme doit continuer son travail mais il ne le fait que pour un prix meilleur que celui fixé dans un ordre incorrect, c'est-à-dire pour un Stop de vente pour les ordres supérieurs et pour un Stop d'achat uniquement pour les ordres inférieurs.

Si je supprime tous les autres ordres (grâce à mon compte de démonstration) et que j'éteins le terminal pendant un certain temps, cet ordre est activé selon les besoins et est fermé soit par commande du programme, soit manuellement.

Veuillez me dire si cela est dû au compte de démonstration ou au fait que plusieurs robots sont attachés à différentes fenêtres.

Ce type de liaison augmente la qualité de l'ensemble du système, car le terminal réagit beaucoup mieux aux commandes des robots individuels que lorsque toutes les commandes sont combinées dans un seul conseiller expert. Le gain en temps de réaction du terminal est très important et la rapidité d'exécution des commandes est bien meilleure et optimale, si toute la logique du système de trading est répartie entre plusieurs robots.

Cependant, je suis confronté au problème du gel d'une ou deux commandes.

Peut-être quelqu'un a-t-il été confronté à ce problème ou peut-il suggérer une cause de fonctionnement incorrect, ainsi qu'un moyen de le corriger.

Merci d'avance.

 

dans l'image est vert, ce qui n'est pas dans les paramètres du terminal.

où puis-je voir les couleurs qui sont définies par les chiffres ?

ssb

 
Pavel Ipatov:

Mais de temps en temps, 1-2 fois par jour, le robot fixe un ordre d'achat ou de vente qui ne fonctionne pas. Il est surligné en jaune et lorsque vous essayez de le supprimer, la fenêtre affiche une inscription sur les paramètres désactivés.

Cela s'est produit, et plus d'une fois. Dans mon cas, c'était toujours la faute du courtier, pas du robot - si vous contactez le support, ils le supprimeront de force. Si c'est une démo, j'en ouvrirais une nouvelle avec un autre courtier.

 
Artsem:

dans l'image est vert, ce qui n'est pas dans les paramètres du terminal.

où puis-je voir les couleurs qui sont définies par les chiffres ?

ssb

Euh... photoshop.

 
Artsem:

dans l'image est vert, ce qui n'est pas dans les paramètres du terminal.

où puis-je voir les couleurs qui sont définies par les chiffres ?

ssb

  1. Cliquez sur la flèche de la liste déroulante.
  2. Sélectionnez Personnalisé.
  3. Vous verrez une fenêtre comme celle-ci.

Dans la palette, vous sélectionnez la couleur que vous voulez, ou vous pouvez même spécifier manuellement des valeurs numériques : rouge, vert, bleu.

 
Ihor Herasko:

  1. Cliquez sur la flèche de la liste déroulante.
  2. Sélectionnez Personnalisé.
  3. Une fenêtre comme celle-ci apparaît.

Dans la palette, sélectionnez la couleur que vous voulez ou vous pouvez même spécifier manuellement des valeurs numériques : rouge, vert, bleu.

Oui, je n'avais pas remarqué le bouton personnalisé.

Je n'arrive pas à changer la couleur en "numérique" dans votre panneau.