Wodurch soll OnTradeTransaction() in mql4 ersetzt werden? - Seite 6

 
Vitaly Muzichenko:

Nein, aber vielleicht reden wir über unterschiedliche Dinge.

Das wird immer funktionieren.

Trotzdem musste ich das Terminal öffnen und prüfen... Hier sind drei Durchläufe des gleichen Skripts und drei Ergebnisse.

Es gibt nur eine Zeile im Drehbuch.

  Print("OrdersHistoryTotal ", OrdersHistoryTotal());
2020.01.27 18:28:51.063 Script 00 EURGBP,H4: removed
2020.01.27 18:28:51.063 00 EURGBP,H4: uninit reason 0
2020.01.27 18:28:51.063 00 EURGBP,H4: OrdersHistoryTotal 48
2020.01.27 18:28:51.063 00 EURGBP,H4: initialized
2020.01.27 18:28:51.043 Script Test\00 EURGBP,H4: loaded successfully
2020.01.27 18:28:38.203 Script 00 EURGBP,H4: removed
2020.01.27 18:28:38.193 00 EURGBP,H4: uninit reason 0
2020.01.27 18:28:38.193 00 EURGBP,H4: OrdersHistoryTotal 47
2020.01.27 18:28:38.193 00 EURGBP,H4: initialized
2020.01.27 18:28:38.183 Script Test\00 EURGBP,H4: loaded successfully
2020.01.27 18:28:16.443 Script 00 EURGBP,H4: removed
2020.01.27 18:28:16.443 00 EURGBP,H4: uninit reason 0
2020.01.27 18:28:16.443 00 EURGBP,H4: OrdersHistoryTotal 4
2020.01.27 18:28:16.443 00 EURGBP,H4: initialized
2020.01.27 18:28:16.423 Script Test\00 EURGBP,H4: loaded successfully

Ich meine, dass, wenn ein EA arbeitet und ein Benutzer beschlossen, den Bereich der Geschichte Anzeige mit seinen frechen Händen zu ändern, wird der EA während der zweiten Schalter verrückt. Jetzt wird sie kleiner sein, jetzt wird sie größer sein, jetzt wird sie anders sein als die, die man sich gemerkt hat. Und selbst wenn die Linie

  if(HT!=__TotalHist)

> anstelle von != einsetzen, ändert sich die Situation nicht. Wenn der EA läuft, wenn die Einstellung auf "Heute" gesetzt ist und auf "Alle Historien" umgeschaltet wird... was passiert dann?

 
Aleksandr Volotko:

Ich würde nicht im Traum daran denken, OrderHistoryTotal() zu berühren, warum sollte ich?

Nur für den Fall:))))

 
Alexey Viktorov:

Nur für den Fall:))))

:))) OrdersTotal() ist gut genug für mich

Vielleicht zwei Timer zu machen? eine vergleicht OrdersTotal() Werte sogar einmal in 100 ms, und die zweite für die Sicherheit einmal in einer Minute (oder weniger häufig) in einer Schleife - keine Maus kann dort verpassen, wenn einer von zwei Dutzend Trades schließt/öffnet einmal in 100500 mal eine Minute später - ich werde sicherlich nicht sterben, ich nehme an, die Kaution auch.

 
Aleksandr Volotko:

:))) OrdersTotal() ist für mich ausreichend

Vielleicht sollte ich zwei Timer machen? einer von ihnen vergleicht OrdersTotal() Werte sogar einmal in 100 ms, und der zweite - einmal in einer Minute (oder seltener) geht durch die Schleife - keine einzige Maus kann dort durchkommen, wenn einer von zwei Dutzend Aufträgen eine Minute später schließt/öffnet, als 100500 mal - ich werde sicher nicht sterben und ich nehme an, so wird mein Depot.

Und wie viele Aufträge gleichzeitig offen sind, gibt der Algorithmus vor?

 
Alexey Viktorov:

Trotzdem musste ich das Terminal öffnen und prüfen... Hier sind drei Durchläufe des gleichen Skripts und drei Ergebnisse.

Es gibt nur eine Zeile im Skript

Was ich meine, ist, dass, wenn der EA funktioniert und ein Benutzer beschlossen, den Bereich der Geschichte Anzeige mit seinen frechen Händen zu ändern, wird der EA während der zweiten Schalter verrückt werden. Jetzt wird sie kleiner sein, jetzt wird sie größer sein, jetzt wird sie anders sein als die, die man sich gemerkt hat. Und selbst wenn die Linie

Die Situation ändert sich nicht, wenn wir > anstelle von != einsetzen. Wenn der Expert Advisor bei der Einstellung "Heute" ausgeführt wird und auf "Alle Historien" umschaltet... was passiert dann?

In jedem Fall wird es nicht gleich sein, und der Code wird weiter gehen. Aber wenn wirif(HT >__TotalHist) setzen, dann werden wir Probleme bekommen.

 
Alexey Viktorov:

Und wie viele offene Aufträge sieht der Algorithmus insgesamt vor?

Höchstens zwei oder drei Dutzend.

 
Vitaly Muzichenko:

In jedem Fall wird es nicht gleich sein und der Code wird weitergehen. Aber wenn (HT >__TotalHist)dann gibt es ein Problem

Vitaly, es wird auf jeden Fall Probleme geben. Wie auch immer man es betrachtet, wenn der EA auf Änderungen in der Anzahl der Aufträge in der Historie reagieren soll, wird er unabhängig davon reagieren, wie sich die Anzahl der Aufträge geändert hat. In der Tat kann die Zahl der Aufträge in der Geschichte nur zunehmen, deshalb habe ich vorgeschlagen, dass es weniger gefährlich ist, aber das Problem wird dadurch nicht gelöst. Auch wenn Sie es nur für sich selbst geschrieben haben, können Sie die Möglichkeit eines manuellen Wechsels nicht ausschließen. Man weiß nie, welche Art von Textnachricht einem in den Sinn kommt)))

 
Aleksandr Volotko:

Höchstens 2-3 Dutzend

Bei einer solchen Zahl wäre es einfacher, ein Array von Tickets oder sogar ein Array von Strukturen mit Auftragseigenschaften zu erstellen und die Änderung des Typs und der Schlusszeit bei jedem Tick zu überprüfen. Dies ermöglicht es uns, die Aktivierung eines schwebenden Auftrags oder die Schließung einer Position zu verfolgen. Und unmittelbar nach dem Senden von OrderSend() öffnen, fügen Sie die Größe des Arrays hinzu und legen Sie alles, was Sie brauchen, hinein.

 
Das ist es ja, man kann Bestellungen 86400 Mal am Tag abschütteln, aber man wollte es nicht.
 
Aleksandr Volotko:
Das ist es ja, man kann Bestellungen 86400 Mal am Tag abschütteln, aber man wollte es nicht.

In diesem Fall wäre es schwer, ohne die Bibliothek von Artem zu leben.