Questions des débutants MQL5 MT5 MetaTrader 5 - page 1480

 
Artyom Trishkin #:
Peut. Deux valeurs seront alors reçues - uniquement dans les variables passées par référence. En d'autres termes, la fonction renvoie trois valeurs

Par souci d'intérêt, j'ai supprimé la variable d. Je n'ai laissé que la fonction. Le résultat de l'impression n'a pas changé. Pour être honnête, je ne comprends pas du tout les trois valeurs.

Cordialement, Vladimir.

 
MrBrooklin #:

Pour des raisons d'intérêt, j'ai supprimé la variable d. Je n'ai laissé que la fonction. Le résultat de l'impression n'a pas changé. Pour être honnête, je ne comprends pas du tout les trois valeurs.

Cordialement, Vladimir.

Le résultat n'a pas changé parce que cette valeur n'a pas été imprimée.

Il suffit d'ajouter l'impression et vous verrez.

 
Alexey Viktorov #:

Non modifié car cette valeur n'a pas été imprimée.

Il suffit d'ajouter print et vous verrez.

Je l'ai imprimée. Elle est restée la même.

2023.11.22 19:48:24.110 10 (EURUSDrfd,H1)       a и b перед вызовом:14 8
2023.11.22 19:48:24.110 10 (EURUSDrfd,H1)       a и b после вызова:28 4

Peut-être ai-je encore mal compris quelque chose ? Ou bien avez-vous besoin d' imprimer lavariabled? Est-ce de cela que nous parlions ?

Cordialement, Vladimir.

 
MrBrooklin #:

Imprimé. Tout reste inchangé.

Avec mes salutations, Vladimir.

Imprimé où ?

//+------------------------------------------------------------------+
//| передача параметров по ссылке                                    |
//+------------------------------------------------------------------+
double SecondMethod(int &i,int &j)
  {
   double res;
//---
   i*=2;
   j/=2;
   res=i+j;
//---
   return(res);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---.
   int a=14,b=8;
   Print("a и b перед вызовом:",a," ",b);
   double d=SecondMethod(a,b);
   Print("Результат выполнения функции ", d);
   Print("a и b после вызова:",a," ",b, " ",d);// или здесь. А можно и там и тут…
  }
//+------------------------------------------------------------------+
 
Alexey Viktorov #:

Où l'a-t-on imprimé ?

Maintenant, j'ai tout compris. )) Merci à tous !

Bien à vous, Vladimir.

 
Bonjour et bonne humeur à tous ! Je continue à étudier le langage de programmation MQL5. J'ai écrit un petit script pour calculer le nombre total de positions ouvertes et imprimer certains de ses paramètres, y compris les codes d'erreur, le cas échéant :
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   ResetLastError(); // установим значение предопределенной переменной _LastError в ноль
   int pos_total = PositionsTotal(); // объявим переменную для хранения количества открытых позиций
   if(pos_total > 0) // если есть открытые позиции
     {
      for(int i=0; i<pos_total; i++) // запустим цикл и переберём все открытые позиции
        {
         if(PositionGetSymbol(i) == _Symbol) // выберем все открытые позиции по текущему символу
           {
            ulong  pos_id = PositionGetInteger(POSITION_IDENTIFIER);
            double pos_price = PositionGetDouble(POSITION_PRICE_OPEN);
            double pos_tp = PositionGetDouble(POSITION_TP);
            double pos_sl = PositionGetDouble(POSITION_SL);
            PrintFormat("Позиция #%d цена = %G тейк-профит = %G стоп-лосс = %G", pos_id, pos_price, pos_tp, pos_sl);
           }
         else // если выбрать позицию не удалось
           {
            PrintFormat("Не удалось выбрать позицию по символу %s. Ошибка = ", _Symbol, GetLastError());
           }
        }
     }
  }
//+------------------------------------------------------------------+

Je l'ai exécuté sur un symbole, où il y a des positions ouvertes. Il fonctionne correctement, les informations sont imprimées correctement. Suivant. J'ai démarré sur le symbole où il n'y a pas de positions ouvertes. L'information sur le fait qu'il n'y a pas de positions ouvertes s'affiche correctement, mais le code de la cause de l'erreur, pour une raison quelconque, ne s'affiche pas. Pouvez-vous m'aider à comprendre pourquoi le code d'erreur n'est pas affiché ?

Cordialement, Vladimir.

 
MrBrooklin #:

Je l'ai lancé sur un symbole avec des positions ouvertes. Il fonctionne correctement, les informations s'affichent correctement. Ensuite, je l'ai lancé sur un symbole qui n'a pas de positions ouvertes. Je l'ai lancé sur un symbole sans positions ouvertes. L'information sur le fait qu'il n'y a pas de positions ouvertes s'affiche correctement, mais le code de la cause de l'erreur, pour une raison quelconque, ne s'affiche pas. Pouvez-vous m'aider à comprendre pourquoi le code d'erreur n'est pas affiché ?

D'où vient le code d'erreur s'il n'y a pas d'erreur ? Il s'agit simplement du mauvais symbole pour la position.

 
JRandomTrader #:

Pourquoi y aurait-il un code d'erreur s'il n'y a pas d'erreur ? Il s'agit simplement du mauvais symbole pour la position.

Merci de votre réponse ! Je m'attendais à ce qu'au moins ce code d'erreur soit affiché :

ERR_TRADE_POSITION_NOT_FOUND

4753

Position non trouvée


Je ne suis pas d'accord sur le symbole. Le symbole est exactement celui sur le graphique duquel ce script a été lancé. Je n'ai pas de positions ouvertes sur le symbole GBPUSDrfd maintenant, mais il n'y a pas d'erreur non plus. Ce n'est pas clair !

2023.11.23 13:27:26.385 7 (GBPUSDrfd,H1)        Не удалось выбрать позицию по символу GBPUSDrfd. Ошибка = 
2023.11.23 13:27:26.385 7 (GBPUSDrfd,H1)        Не удалось выбрать позицию по символу GBPUSDrfd. Ошибка = 

Cordialement, Vladimir.

 
MrBrooklin #:

Merci de votre réponse ! Je m'attendais à ce qu'au moins ce code d'erreur soit affiché :

ERR_TRADE_POSITION_NOT_FOUND

4753

Position non trouvée


Je ne suis pas d'accord sur le symbole. Le symbole est exactement celui, sur le graphique duquel ce script a été lancé. Je n'ai pas de position ouverte sur le symbole GBPUSDrfd, mais je n'ai pas d'erreur non plus. Je ne comprends pas !!!

Cordialement, Vladimir.

Toutes les positions ont été trouvées ! Mais aucune des positions trouvées n'a le symbole dont nous avons besoin.

 
JRandomTrader #:

Toutes les positions sont trouvées ! Mais aucun des postes trouvés n'a le symbole dont nous avons besoin.

Je l'ai maintenant. Merci !!! Il s'avère que s'il y a au moins une position ouverte, le code d'erreur 4753 n'apparaîtra jamais.

Cordialement, Vladimir.

Raison: