Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 12

 
Leo59:
Vielen Dank!
So wie ich es verstehe, bezieht sich "aktiver Auftrag" auf KAUF- und/oder VERKAUFS-Positionen sowie auf schwebende (vom Makler akzeptierte) Aufträge.
Wenn ich: Long- und Short-Positionen eröffnet habe und Buy Limit und Sell Stop gesetzt habe, dann wird OrdersTotal() den Wert =4 zurückgeben, richtig?

Es kann eine offene KAUF-Position und ein aktiver KAUF-Auftrag vorliegen. Ich habe oben einen Beispielcode angegeben, aber es ist wahrscheinlich einfacher, die Finger zu benutzen. Wie wird TP bei einer offenen Position ausgelöst?

  • Der Kurs erreicht den TP der BUY-Position.
  • Der Handelsserver erstellt einen entsprechenden aktiven SELL-Auftrag.
  • Dann hat das Terminal gleichzeitig eine KAUF- und eine VERKAUFsorder.
  • Der SELL-Auftrag wird ausgeführt, indem man in die Historie einsteigt und dort ein Geschäft erzeugt.
  • Die anfängliche BUY-Position wird auf der Grundlage dieses Geschäfts geschlossen, das nirgendwo erfasst wird - es ist indirekt in der Geschäftshistorie vorhanden.

 
Leo59:
Alles ist längst akzeptiert, und es ist wahrscheinlich nicht unvernünftig, das Tutorial von Sergei Kovalev zu lesen (es ist in MQL4 integriert), bevor man die Dokumentation schreibt:
Lesen Sie den Titel des Threads. Alle dachten, es ginge um MQL5. Für MQL4 und MT4 gibt es einen entsprechenden Bereich hier im Forum. Wenn Sie Ihre Frage dort gestellt hätten, wäre die Antwort eine andere gewesen.
 
Leo59:
Alles ist seit langem akzeptiert, und bevor Sie eine Dokumentation schreiben, wäre es wahrscheinlich lohnenswert, das Tutorial von Sergei Kovalev zu lesen (es ist in MQL4 integriert):


So kann ein Block aufgebaut werden, in dem Markt- und Pending-Aufträge analysiert werden:

   for (int i=1; i<=OrdersTotal(); i++)       //Цикл по всем ордерам,..
     {                                        //отражённым в терминале
      if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
        {                                    
         // Здесь должен выполняться ..
         // ..анализ характеристик ордеров
        }
     }                                        //Конец тела цикла

Der Anfangswert i=1 wird im Kopf der Schleifenanweisung angegeben, und die Bedingung für das Ende der Schleife ist der Ausdruck i<=OrdersTotal(). Die Funktion OrdersTotal() gibt die Gesamtzahl der Market- und Pending-Orders zurück, d.h. die Orders, die im Terminal auf der Registerkarte Trade angezeigt werden. Daher ist die Anzahl der Iterationen in der Schleife gleich der Anzahl der Aufträge im Handel.

Bitte fügen Sie den Code korrekt ein:Fügen Sie den Code korrekt in das Forum ein(ich habe bereits korrigiert, was Sie eingefügt haben - und siehe da: Sie haben nur Text eingefügt, und jetzt ist es CODE, mit Syntaxhervorhebung).
 
Vitaly Muzichenko:

Es gibt keinen Grund, sich aufzuregen)

Dies ist ein MT4-Code und es gibt keine Unterteilung von Aufträgen und Positionen - alles wird zusammengemischt

Ist die Funktion OrdersTotal() in MQL4 und MQL5 unterschiedlich? Der Compiler scheint derselbe zu sein ....
 
Leo59:
Alles ist seit langem akzeptiert, und bevor Sie eine Dokumentation schreiben, wäre es wahrscheinlich lohnenswert, das Tutorial von Sergei Kovalev zu lesen (es ist in MQL4 integriert):


So kann ein Block aufgebaut werden, in dem Markt- und Pending-Aufträge analysiert werden:

   for (int i=1; i<=OrdersTotal(); i++)       //Цикл по всем ордерам,..
     {                                        //отражённым в терминале
      if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
        {                                    
         // Здесь должен выполняться ..
         // ..анализ характеристик ордеров
        }
     }                                        //Конец тела цикла

Der Anfangswert i=1 wird im Kopf der Schleifenanweisung angegeben, und die Bedingung für das Ende der Schleife ist der Ausdruck i<=OrdersTotal(). Die Funktion OrdersTotal() gibt die Gesamtsumme der Market- und Pending-Orders zurück, d.h. die Orders, die im Terminal auf der Registerkarte "Trade" angezeigt werden. Daher ist die Anzahl der Iterationen in der Schleife gleich der Anzahl der Aufträge im Handel.

Du sprichst nicht nur von mql4 und zeigst Code aus mql4 (und in diesem Thread geht es um Funktionen und Feinheiten der Programmierung in mql5), sondern du hast auch die Schleife falsch geschrieben - du musst bei Null anfangen, sonst verpasst du immer eine Reihenfolge.
 
Leo59:
Sind OrdersTotal() unterschiedliche Funktionen in MQL4 und MQL5? Der Compiler scheint derselbe zu sein ....
Ja, das sind sie.
 
Leo59:
Sind OrdersTotal() unterschiedliche Funktionen in MQL4 und MQL5? Der Compiler scheint derselbe zu sein ....

Was die Handelsfunktionen betrifft, so gibt es Unterschiede. MQL4 wurde bereits oben erwähnt:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Eigenheiten der Sprache mql5, Tipps und Tricks

Vitaly Muzichenko, 2017.02.28 19:25

... MT4, und es gibt keine Unterteilung von Aufträgen und Positionen - alles ist vermischt

Während in MQL5, OrdersTotal() die Anzahl der ausstehenden Aufträge zurückgibt. In MQL5 wird also alles auf einer höheren Ebene systematisiert: Koteletts sind getrennt, Fliegen sind getrennt.
 
Artyom Trishkin:
Ja, anders.
Worin besteht der Unterschied?
 
Leo59:
Was ist der Unterschied?

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Eigenheiten von mql5, Tipps und Tricks

Wladimir Karputow, 2017.02.28 19:44

Was die Handelsfunktionen betrifft, so gibt es Unterschiede. Sie haben bereits MQL4 erwähnt:

während in MQL5 OrdersTotal() die Anzahl der ausstehenden Aufträge zurückgibt. In MQL5 wird also alles auf einer höheren Ebene systematisiert: Koteletts getrennt, Fliegen getrennt.

 
Leo59:
Was ist der Unterschied?

BestellungenGesamt()

Gibt die Anzahl der aktiven Aufträge zurück.

intOrdersTotal();

Zurückgegebener Wert

Wert vom Typ int.

Hinweis

Die aktiven schwebenden Aufträge sind nicht mit den Positionen zu verwechseln, die ebenfalls auf der Registerkarte "Handel" des Bereichs "Toolbox" angezeigt werden. Ein Auftrag ist eine Anweisung zur Ausführung eines Geschäfts, während eine Position das Ergebnis eines oder mehrerer Geschäfte ist.

Beim "Netting" von Positionen (ACCOUNT_MARGIN_MODE_RETAIL_NETTING und ACCOUNT_MARGIN_MODE_EXCHANGE) kann für jedes Symbol zu jedem Zeitpunkt nur eine Position eröffnet werden, die das Ergebnis eines oder mehrerer Geschäfte ist. Positionen und aktive schwebende Aufträge, die auch in der Registerkarte "Handel" des "Toolbox"-Panels angezeigt werden, sind nicht miteinander zu verwechseln.

Bei unabhängiger Darstellung von Positionen (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) können für jedes Symbol mehrere Positionen gleichzeitig eröffnet werden.


PositionenGesamt()

Gibt die Anzahl der offenen Positionen zurück.

intPositionenGesamt();

Zurückgegebener Wert

Wert vom Typ int.

Hinweis

Beim "Netting" von Positionen (ACCOUNT_MARGIN_MODE_RETAIL_NETTING und ACCOUNT_MARGIN_MODE_EXCHANGE) kann für jedes Symbol zu jedem Zeitpunkt nur eine Position eröffnet werden, die aus einem oder mehreren Geschäften resultiert. Positionen und aktive schwebende Aufträge, die auch in der Registerkarte "Handel" des "Toolbox"-Panels angezeigt werden, sind nicht miteinander zu verwechseln.

Bei unabhängiger Darstellung von Positionen (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) können für jedes Symbol mehrere Positionen gleichzeitig eröffnet werden.