Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1480

 
Artyom Trishkin #:
kann. Dann werden zwei Werte empfangen - nur in den per Referenz übergebenen Variablen. Das heißt, die Funktion gibt drei Werte zurück

Aus Gründen des Interesses habe ich die Variable d entfernt. Ich habe nur die Funktion gelassen. Das Ergebnis des Ausdrucks hat sich nicht geändert. Um ehrlich zu sein, verstehe ich das mit den drei Werten überhaupt nicht.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin #:

Aus Gründen des Interesses habe ich die Variable d entfernt. Ich habe nur die Funktion belassen. Das Ergebnis des Ausdrucks hat sich nicht geändert. Um ehrlich zu sein, verstehe ich das mit den drei Werten überhaupt nicht.

Mit freundlichen Grüßen, Vladimir.

Es hat sich nicht geändert, weil dieser Wert nicht gedruckt wurde.

Fügen Sie einfach den Druck hinzu und Sie werden sehen.

 
Alexey Viktorov #:

Nicht geändert, da dieser Wert nicht gedruckt wurde.

Fügen Sie einfach print hinzu und Sie werden sehen.

Ich habe ihn gedruckt. Es ist alles beim Alten geblieben.

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

Vielleicht habe ich wieder etwas missverstanden? Oder mussten Sie dieVariabled drucken? Ist es das, worüber wir gesprochen haben?

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin #:

Ich habe es ausgedruckt. Es bleibt alles beim Alten.

Mit freundlichen Grüßen, Vladimir.

Wo ausgedruckt?

//+------------------------------------------------------------------+
//| передача параметров по ссылке                                    |
//+------------------------------------------------------------------+
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 #:

Wo wurde es gedruckt?

Jetzt habe ich es herausgefunden. )) Ich danke Ihnen allen!

Mit freundlichen Grüßen, Vladimir.

 
Guten Morgen und gute Laune an alle! Ich fahre fort, die Programmiersprache MQL5 zu studieren. Ich habe ein kleines Skript geschrieben, um die Gesamtzahl der offenen Positionen zu berechnen und einige seiner Parameter auszudrucken, einschließlich Fehlercodes, falls vorhanden:
//+------------------------------------------------------------------+
//| 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());
           }
        }
     }
  }
//+------------------------------------------------------------------+

Ich habe es auf einem Symbol ausgeführt, auf dem es offene Positionen gibt. Es funktioniert einwandfrei, die Informationen werden korrekt ausgedruckt. Weiter. Ich habe mit einem Symbol begonnen, bei dem es keine offenen Positionen gibt. Die Informationen über die Tatsache, dass es keine offenen Positionen gibt, werden korrekt angezeigt, aber der Code der Fehlerursache aus irgendeinem Grund nicht. Können Sie mir bitte helfen zu verstehen, warum der Fehlercode nicht angezeigt wird?

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin #:

Ich habe es mit einem Symbol mit offenen Positionen gestartet. Es funktioniert einwandfrei, die Informationen werden korrekt angezeigt. Weiter. Ich habe es mit einem Symbol ohne offene Positionen gestartet. Die Information, dass es keine offenen Positionen gibt, wird korrekt angezeigt, aber der Code für die Fehlerursache aus irgendeinem Grund nicht. Können Sie mir bitte helfen zu verstehen, warum der Fehlercode nicht angezeigt wird?

Woher kommt der Fehlercode, wenn es keinen Fehler gibt? Es ist einfach das falsche Symbol für die Position.

 
JRandomTrader #:

Warum sollte es einen Fehlercode geben, wenn es keinen Fehler gibt? Es ist einfach das falsche Symbol für die Position.

Vielen Dank für die Antwort! Ich hatte erwartet, dass zumindest dieser Fehlercode angezeigt werden würde:

ERR_TRADE_POSITION_NOT_FOUND

4753

Position nicht gefunden


Ich bin mit dem Symbol nicht einverstanden. Das Symbol ist genau das, auf dessen Chart dieses Skript ausgelöst wurde. Ich habe jetzt keine offenen Positionen auf dem Symbol GBPUSDrfd, aber es gibt auch keinen Fehler. Es ist nicht klar!!!

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

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin #:

Vielen Dank für die Antwort! Ich hatte erwartet, dass zumindest dieser Fehlercode angezeigt wird:

ERR_TRADE_POSITION_NOT_FOUND

4753

Position nicht gefunden


Ich stimme nicht mit dem Symbol überein. Das Symbol ist genau dasjenige, auf dessen Chart dieses Skript geworfen wurde. Ich habe keine offenen Positionen auf dem Symbol GBPUSDrfd, aber ich habe auch keinen Fehler. Ich verstehe das nicht!!!

Mit freundlichen Grüßen, Vladimir.

Alle Positionen sind gefunden worden! Aber keine der gefundenen Positionen hat das Symbol, das wir brauchen.

 
JRandomTrader #:

Alle Positionen gefunden! Aber keine der gefundenen Positionen hat das Symbol, das wir brauchen.

Jetzt habe ich es. Vielen Dank!!! Es stellt sich heraus, dass der Fehlercode 4753 nie erscheint, wenn es mindestens eine offene Position gibt.

Mit freundlichen Grüßen, Vladimir.