Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1244

 
Alexey Viktorov:

string AUDUSD = "AUDUSD" ;

Au moins comme ça.

C'est ça ! !! C'était comme ça pour moi))), effacé et oublié))

Merci beaucoup ! !! La paix dans votre maison !

 
Valeriy Yastremskiy:

Le conseiller expert, le script et l'indicateur ne sont pas accessibles, mais fonctionnent dans la fenêtre actuelle. Et les variables globales de différentes fenêtres/graphiques ne se chevauchent pas. Par conséquent, cela devrait fonctionner)

string AUDUSD ; // Il s'agit d'une variable texte, en plus d'être initialement vide, c'est-à-dire égale à "".

(Symbol() == AUDUSD) // cette chaîne n'a rien à voir avec la variable AUDUSD.

Mais les critères d'ouverture des ordres ne doivent pas être les mêmes pour différents instruments/fenêtres. S'ils sont les mêmes, il s'ouvrira effectivement dans toutes les fenêtres.

Merci !

J'ai implémenté la logique pour que le Conseiller Expert ne reçoive pas le signal d'ouverture des ordres lorsqu'ils s'ouvrent dans plusieurs fenêtres et comprenne que le signal d'achat a été donné pour un tel symbole afin que l'EA n'interfère pas avec les autres.

 
Denis Diakonov:

C'est là ! !! C'était comme ça pour moi))), effacé et oublié))

Merci beaucoup ! !! La paix dans votre maison !

Ou comme ceci au niveau d'une variable globale

#define  AUDUSD "AUDUSD"
 
Alexey Viktorov:

Ou comme ceci au niveau de la variable globale

En fait, c'est cool)) Maintenant, le robot reçoit un signal et ouvre des ordres sur différentes paires dans plusieurs fenêtres à la fois)).

Merci encore !

 
Yerkin Sagandykov:

Le problème n'est pas dans les valeurs de la variable à mon avis. Je viens d'avoir dans mon code uulsovii recalcul à l'apparition d'une nouvelle heure. et il s'avère que le symbole actuel nouvelle barre apparaît et a calculé la valeur de la barre = 1, mais le symbole de signal est une nouvelle barre n'a pas encore été formé ou ce que si et calculé les valeurs de la barre = 2

Le problème est résolu facilement - j'ai juste suivi le début d'une nouvelle barre par le symbole du signal

 if  ( iTime(nameSym, LPeriod, 0 ) == counted_bar || iTime(nameSymSignal, LPeriod, 0 ) == counted_Signalbar) return; 
 
S'il vous plaît, donnez-moi un indice.
Est-il possible de passer plusieurs paramètres de switch case à partir du corps de la fonction ? J'ai des types d'ordres à ouvrir dans le cas d'un switch et j'ai réussi à passer seulement 1 paramètre pour ouvrir un ordre à partir de la fonction définissant le point d'entrée sur le marché, comme je l'ai déjà compris c'est impossible, donc je ne sais pas comment l'implémenter même de manière séquentielle.
 
Denis Diakonov:
Veuillez me conseiller.
Est-il possible de passer plusieurs paramètres de switch case à partir du corps de la fonction ? J'ai des types d'ordres à ouvrir dans le cas d'un switch et j'ai réussi à passer seulement 1 paramètre pour ouvrir un ordre à partir de la fonction définissant le point d'entrée sur le marché, comme je l'ai déjà compris c'est impossible, donc je ne sais pas encore comment l'implémenter même séquentiellement.

Veuillez me montrer dans le code ce qui vous intéresse exactement.

 
Denis Diakonov:
Veuillez me conseiller.
Est-il possible de passer plusieurs paramètres de switch case à partir du corps de la fonction ? J'ai des types d'ordres à ouvrir dans le cas d'un switch et j'ai réussi à passer seulement 1 paramètre pour ouvrir un ordre à partir de la fonction définissant le point d'entrée sur le marché, comme je l'ai déjà compris c'est impossible, donc je ne sais pas comment l'implémenter même séquentiellement

Faites-vous référence à une fourchette de valeurs ?

 
Vitaly Muzichenko:

Montrez au code ce qui vous intéresse exactement

int OpenOrder()                                             
{
   switch(AUDUSD_Analizing)
   {
      case 0 : Alert("Нет условий для открытия ордера. Выход"); break;    
      case 1 : // кейс для открытия Buy по AUD/USD
               if(TimeServer() == true)                                     
               {
                  if(Symbol() == AUDUSD)
                  {
                  RefreshRates();
                  Open_Order = OrderSend("AUDUSD",OP_BUY,lot,Ask,0,0,0); 
                  Alert("Тикет открытого ордера ", Open_Order, GetLastError());
      case 2 : // кейс для открытия Sell по AUD/USD
               if(TimeServer() == true)                                     
               {
                  if(Symbol() == AUDUSD)
                  {
                  RefreshRates();
                  Open_Order = OrderSend("AUDUSD",OP_SELL,lot,Bid,0,0,0); 
                  Alert("Тикет открытого ордера ", Open_Order, GetLastError());
//-------------------------------------------------------------------------------------------------------------
// другая функция
//-------------------------------------------------------------------------------------------------------------

int AUDUSD_Analizing()
{    
   if(AUDUSD_Prices_new > AUDUSD_Prices_old)
   {
      s1 = AUDUSD_Prices1;
      s2 = AUDUSD_Prices2;
      s3 = s1 - s2;    
      if(raznica > s5)
      {
         Alert("--- ВРЕМЯ ОТКРЫВАТЬ ОРДЕР НА ПОКУПКУ ---");

и вот тут я могу либо прописать конкретное открытие ордера или несколько их штук(чем и решил заняться так 
как не нашел решения), либо вернуть номер кейса в первую функцию(что сократило бы код). 
Но мне нужно по условиям открывать сразу несколько сделок. К примеру нужно 2 на бай разом открыть, 
а возвращается только одно значение и исполняется один кейс и дальше уже на новый круг все идет, 
а мне нужно сразу несколько кейсов, допустим 5 выполнить, поставить 5 отложек и вот как передать не пойму, 
или как вызвать срабатывание кейсов в последовательности. Если с кейсами можно как-то придумать, то по
факту код влезет в рамку 400-600 строк, а так полагаю все 1000+ выйдет в лучшем случае
(разбитые по 100-200 строк на .mqh, но и из файлов тоже помойка сложится)

 
Alexey Viktorov:

Voulez-vous dire une gamme de valeurs ?

Non, par exemple passer d'abord le cas 1, puis le cas 2, etc.

les cas exécutent l'ouverture des commandes