Gemeinsam lernen und schreiben in MQL5 - Seite 34

 
Yedelkin:

Ein einfaches Skript wie dieses liefert seltsame Ergebnisse

Vielleicht kann jemand erklären, woran das liegt? Wenn die Zahl 254 explizit in uchar umgewandelt wird, funktioniert sie wie vorgesehen.

Danke für die Nachricht, wir werden uns das ansehen.
 
Rosh:
Danke für die Nachricht, wir werden uns darum kümmern.

Die gleiche Geschichte mit ushort:

void OnStart()
  {
   for(ushort i=32760;i<32775;i++)
     {
      switch(i>USHORT_MAX-2)
        {
         case   true:  Print(__FILE__," ",__FUNCTION__,": ",i,">(USHORT_MAX-2) - true");   break;
         case  false:  Print(__FILE__," ",__FUNCTION__,": ",i,">(USHORT_MAX-2) - false");  break;
        }
     }
  }
 

Wie kann man es so einrichten, dass die Musik startet, wenn eine Bedingung eintritt? Ha, ha, das ist eine etwas seltsame Anwendung von mql)) Aber das Bild anzuschauen und auf den richtigen Moment zu warten ist langweilig, und die ganze Arbeit dem Roboter zu überlassen irgendwie nicht so sinnvoll. Also habe ich beschlossen, die Musik spielen zu lassen, wenn ich es will, und dann mache ich es selbst))

Ich habe das Nachschlagewerk durchgeblättert, oder vielleicht habe ich auch zu sehr gesucht, aber ich konnte es nicht finden.)

 
Sehen Sie sich die Funktion PlaySound() an.
 
Rosh:
Sehen Sie sich die Funktion PlaySound() an.

Ich danke Ihnen vielmals).
 

Frage zur Verfolgung von Neuanmeldungen.

In der Beschreibung der Funktion OrderSend() heißt es, dass "bei der Platzierung einer Marktorder der erfolgreiche Abschluss der Methode OrderSend() nicht immer eine erfolgreiche Transaktion bedeutet. Sie müssen die ... den Retcode-Wert". D. h., wenn OrderSend()==true ist, können wir immer noch eine Rückmeldung erhalten. Gut.

Im Beispiel ("Senden eines Handelsauftrags mit Ergebnisbehandlung") zum Abschnitt"Struktur des Handelsauftragsergebnisses" wird die Meldung über einen Requote jedoch nur geprüft, wenn OrderSend() ==false ist.

In welchen Fällen prüfen wir also auf Requotes: bei jedem von OrderSend() zurückgegebenen Wert oder nur, wenn OrderSend() ==false ist?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса - Документация по MQL5
 
Yedelkin:

Frage zur Verfolgung von Neuanmeldungen.

In der Beschreibung der Funktion OrderSend() heißt es, dass "bei der Platzierung einer Marktorder der erfolgreiche Abschluss der Methode OrderSend() nicht immer eine erfolgreiche Transaktion bedeutet.

Die erfolgreiche Ausführung von OrderSend() bedeutet lediglich, dass die Anfrage auf ihre Korrektheit geprüft und zur Ausführung in die Warteschlange gestellt wird. Ihr weiteres Schicksal ist jedoch nicht garantiert - der Auftrag kann während seiner Bearbeitung storniert werden, zum Beispiel aufgrund einer Befüllungspolitik.

Aber im Allgemeinen ist OrderSend() eindeutig fehlgeschlagen, wenn es eine Rückfrage gab.

 
Rosh:

Die erfolgreiche Ausführung von OrderSend() bedeutet lediglich, dass die Anfrage auf Korrektheit geprüft und zur Ausführung in die Warteschlange gestellt wurde. Ihr weiteres Schicksal ist jedoch nicht garantiert - die Bestellung kann während ihrer Bearbeitung storniert werden, z. B. aufgrund der Füllungspolitik.

Aber im Allgemeinen ist OrderSend() eindeutig fehlgeschlagen, wenn es eine Rückfrage gab.

Mit anderen Worten, ein Requote bedeutet, dass die Anfrage zunächst die Korrektheitsprüfung nicht bestanden hat?
 
Yedelkin:
Mit anderen Worten, ein Requote bedeutet, dass die Anfrage zunächst die Korrektheitsprüfung nicht bestanden hat?

Nun, ja, der in der Anfrage angegebene Preis passte nicht und Sie werden aufgefordert, die neuen Preise zu berücksichtigen, die aus der Antwortstruktur des MqlTradeResult-Servers entnommen werden können:

struct MqlTradeResult
  {
   uint     retcode;          // Код результата операции
   ulong    deal;             // Тикет сделки, если она совершена
   ulong    order;            // Тикет ордера, если он выставлен
   double   volume;           // Объем сделки, подтверждённый брокером
   double   price;            // Цена в сделке, подтверждённая брокером
   double   bid;              // Текущая рыночная цена предложения (цены реквота)
   double   ask;              // Текущая рыночная цена спроса (цены реквота)
   string   comment;          // Комментарий брокера к операции (по умолчанию заполняется расшифровкой)
  };

 
Rosh:

Nun ja, der in der Anfrage angegebene Preis stimmt nicht überein, und Sie werden aufgefordert, die neuen Preise zu berücksichtigen, die Sie aus der Antwortstruktur des MqlTradeResult-Servers erhalten können:

OK!

Wahrscheinlich übertreibe ich, aber hier ist eine andere Frage. Bevor ich eine Anfrage zur Platzierung einer Marktorder (zur Eröffnung einer Position) sende, setze ich das Handelsticket auf Null zurück, d.h. ich mache result.deal=0. Können wir erwarten, dass der Server in der MqlTradeResult-Antwortstruktur ein Null-Handels-Ticket zurückgibt, aber etwas später wird der Handel ausgeführt und die Position eröffnet? Oder garantiert die Rückgabe eines Null-Handels-Tickets durch den Server, dass die Position nicht eröffnet werden konnte und dass sie auf der Grundlage dieser Anfrage nicht weiter eröffnet werden wird?