Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1915

 
Koldun Zloy #:

Niemand kann es benutzen. Ihr Code weist grobe Fehler auf. Und es hat keinen Sinn, sie zu korrigieren.

Sie machen sich nicht einmal die Mühe, die Grundlagen der Sprache zu lernen, und Sie versuchen, etwas zu schreiben.

Entweder man nimmt es ernst oder man gibt es auf.

Bitte erklären Sie, worin seine Fehler bestehen. Kurz und bündig, was Sie beachten sollten. Und wenn der Code funktioniert, was sind seine "Fehler"?

 
Ivan Butko #:

Bitte erklären Sie, worin seine Fehler bestehen. Können Sie kurz zusammenfassen, worauf Sie achten sollten? Und wenn der Code funktioniert, was sind dann seine "Fehler"?

//+------------------------------------------------------------------+
//| Функция IsMainPendingOrder (установлен отложенный ордер):        |
//| возвращает истину, если в советнике не установлен отложенный     |
//| ордер, в противном случае возвращает ложь.                       |
//| Применим для функции тип данных bool, чтобы хранить              |
//| логические значения true (истина) или false (ложь).              |
//+------------------------------------------------------------------+
bool IsMainPendingOrder()
  {
   int orders_total=OrdersTotal(); // количество установленных отложенных ордеров
//--- перебираем все установленные отложенные ордера
   for(int i=orders_total-1; i>=0; i--)
     {
      ulong  order_ticket=OrderGetTicket(i); // тикет ордера
      /* если отложенного ордера нет, значит и у нашего советника отложенного ордера нет */
      if(OrderSelect(i)==false)
         return true; // поэтому возвращаем значение истина
      else // в противном случае
         return false; // возвращаем значение ложь
     }
   /* если отложенный ордер уже есть и его мэджик совпадает с мэджиком нашего советника */
   if(OrderGetInteger(ORDER_MAGIC)==Magic_Number)
      return true;  // то возвращаем истину
   /* в противном случае, если отложенный ордер уже есть, но его мэджик не совпадает с мэджиком нашего советника */
   else
      return false; // значит это чужой ордер, поэтому возвращаем значение ложь

Aus der Dokumentation... der Posteingang sollte ein Ticket haben, nicht einen Index

bool  OrderSelect( 
   ulong   ticket      // тикет ордера 
   );

Wenn wir mehrere Aufträge für verschiedene Symbole haben und das gesuchte Symbol an zweiter Stelle in der Liste steht, werden wir es nicht finden. Oder es gibt nur eine Magie, aber wir müssen sie durch ein anderes Symbol finden, dann erhalten wir eine falsche Antwort von der Funktion...

 
Alexey Viktorov #:

aus der Dokumentation... der Posteingang sollte ein Ticket haben, nicht einen Index

Danke Alexey für den Tipp! Das nächtliche Sitzen vor dem Computer hat einen sehr schlechten Einfluss auf mich. Ich dachte, ich hätte gestern mit dem Bestellschein begonnen und bereits eine Zeile in den Code geschrieben:

ulong  order_ticket=OrderGetTicket(i); // тикет ордера

und dann von ihm "weggezogen".

Alexey, kann diese Variante des Codes akzeptiert werden?

//+------------------------------------------------------------------+
//| Функция IsMainPendingOrder (установлен отложенный ордер):        |
//| возвращает истину, если установлен отложенный ордер,             |
//| в противном случае возвращает ложь.                              |
//| Применим для функции тип данных bool, чтобы хранить              |
//| логические значения true (истина) или false (ложь).              |
//+------------------------------------------------------------------+
bool IsMainPendingOrder()
  {
   int orders_total=OrdersTotal(); // количество установленных отложенных ордеров
//--- перебираем все установленные отложенные ордера
   for(int i=orders_total-1; i>=0; i--)
     {
      ulong order_ticket=OrderGetTicket(i); // тикет ордера
      /* если отложенного ордера нет, значит и у нашего советника отложенного ордера нет */
      if(order_ticket==0)
         return false; // поэтому возвращаем значение ложь
      else // в противном случае
         return true; // возвращаем значение истина
     }
   /* если отложенный ордер уже есть и его мэджик совпадает с мэджиком нашего советника */
   if(OrderGetInteger(ORDER_MAGIC)==Magic_Number)
      return true;  // то возвращаем истину
   /* в противном случае, если отложенный ордер уже есть, но его мэджик не совпадает с мэджиком нашего советника */
   else
      return false; // значит это чужой ордер, поэтому возвращаем значение ложь
  }

Ich habe Magic noch nicht berührt, weil der Code für einen Ein-Zeichen-EA gedacht ist.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin #:

Danke, Alexej, für den Tipp! Das nächtliche Sitzen vor dem Computer hat einen sehr schlechten Einfluss auf mich. Ich dachte, ich hätte gestern mit dem Bestellschein angefangen und bereits eine Zeile in den Code geschrieben:

und dann von ihm "weggezogen".

Alexey, kann diese Variante des Codes akzeptiert werden?

Ich habe Magic noch nicht berührt, weil der Code für einen Ein-Zeichen-EA gedacht ist.

Mit freundlichen Grüßen, Vladimir.

Dieser Ansatz ist für mich nicht akzeptabel. Fügen Sie einen Check für Magik und ein Symbol hinzu, zwei Zeilen Code, und Sie erhalten im Gegenzug einen normalen Ansatz zur Lösung einer Aufgabe. Und wenn Sie meine Grundsätze ignorieren, ist der Code nicht ganz richtig.

Das ist logischer.

//+------------------------------------------------------------------+
//| Функция  IsMainPendingOrder (установлен отложенный ордер):        |
//| возвращает истину, если установлен отложенный ордер,             |
//| в противном случае возвращает ложь.                              |
//| Применим для функции тип данных bool, чтобы хранить              |
//| логические значения true (истина) или false (ложь).              |
//+------------------------------------------------------------------+
bool IsMainPendingOrder()
  {
   int orders_total=OrdersTotal(); // количество установленных отложенных ордеров
//--- перебираем все установленные отложенные ордера
   for(int i=orders_total-1; i>=0; i--)
     {
      ulong order_ticket=OrderGetTicket(i); // тикет ордера
      /* если отложенный ордер есть */
      if(order_ticket > 0)
         return true; // поэтому возвращаем истину
     }
      return false; // если нет открытого отложенного ордера…
  }

Und in diesem Code müssen Sie nur den Blankoscheck ersetzen

      if(order_ticket > 0)

nach einem Zauberer und einer Figur zu suchen

      if(OrderGetString(ORDER_SYMBOL) == _Symbol && OrderGetInteger(ORDER_MAGIC) == Magic_Number)

und es ist bereits eine universellere Funktion...

 
Alexey Viktorov #:

aus der Dokumentation... der Posteingang sollte ein Ticket haben, nicht einen Index

Wenn wir mehrere Aufträge für verschiedene Symbole haben und das gesuchte Symbol an zweiter Stelle in der Liste steht, werden wir es nicht finden. Oder es gibt nur eine Magie, aber wir müssen sie durch ein anderes Symbol finden, dann ist die Antwort wieder falsch...

Danke

 
Alexey Viktorov #:

Dieser Ansatz ist für mich inakzeptabel. Fügen Sie einen Zauberer und eine Symbolprüfung hinzu, zwei Zeilen Code und im Gegenzug einen normalen Ansatz zur Lösung des Problems. Und wenn Sie meine Grundsätze ignorieren, ist der Code nicht ganz richtig.

Das ist logischer.

Und in diesem Code müssen Sie nur den Blankoscheck ersetzen

nach einem Zauberer und einer Figur zu suchen

und es ist bereits eine vielseitigere Funktion...

Guten Morgen allerseits und gute Laune!

Ein GROSSES DANKESCHÖN, Alexey, für dein geduldiges Vorgehen und die klare Erklärung meiner Fehler.

Mit freundlichen Grüßen, Vladimir.

 
Ivan Butko #:

Bitte erklären Sie, worin seine Fehler bestehen. Können Sie kurz zusammenfassen, worauf Sie achten sollten? Und wenn der Code funktioniert, was sind dann seine "Fehler"?

Die Fehler liegen im Missverstehen elementarer Dinge.

Wenn Sie sie nicht selbst sehen, dann gilt auch für Sie: Lernen, lernen und lernen!

 
Koldun Zloy #:

Fehler, die darin bestehen, dass man elementare Dinge nicht versteht.

Wenn Sie sie nicht selbst sehen, dann auch Sie: Lernen, lernen und lernen!

Halt! Dies ist ein Thread mit Fragen von Neulingen. Beantworten Sie also entweder die in diesem Thema gestellten Fragen oder verzichten Sie auf Ihre Moralpredigten.

Wozu haben Sie sich gezeigt? Die Menschen wollen Antworten auf Fragen sehen, nicht ein hübsches Gesicht auf einem Bild.

 
Artyom Trishkin #:

Halt! Dies ist ein Thread mit Fragen von Neueinsteigern. Beantworten Sie also entweder die in diesem Thema gestellten Fragen oder verzichten Sie auf Ihre Moralpredigten.

Wozu haben Sie sich gezeigt? Die Menschen wollen Antworten auf Fragen sehen, nicht den gutaussehenden Mann auf dem Bild.

Ich wollte nur herausfinden, ob die Person etwas lernen wollte, dann konnte ich helfen.

 
Koldun Zloy #:

Ich wollte nur herausfinden, ob die Person etwas lernen wollte, dann konnte ich helfen.

Gut. Schon die Art und Weise, wie man den Wunsch herausfand, erschien seltsam: "Du weißt nicht, wie man etwas macht, du musst lernen und lernen".

Aber sei's drum...