Fragen von einem "Dummy" - Seite 176

 
Karlson:

3Б. Teilweiser Abschluss durch Eröffnung eines halben Verkaufs - OUT.

Schade :/ Es stellt sich heraus, dass es in der Historie mehrere Trades mit der OUT-Eigenschaft geben kann, während die Position weiterhin besteht.
 
Yedelkin:
Schlecht :/
Warum schlecht? Es ist ganz einfach, wenn ich Sie richtig verstehe. Wenn OUT und eine Position vorhanden ist, hat sich das Volumen verringert. Wenn OUT und keine Position, dann wurde die Position vollständig geschlossen.
 
tol64:
Warum ist das schlecht? Alles ist ganz einfach, wenn ich Sie richtig verstanden habe. Wenn es eine Position und ein OUT gibt, hat sich das Volumen verringert. Wenn OUT und keine Position vorhanden ist, dann wurde die Position vollständig geschlossen.

Das Schlimme daran ist Folgendes. Ihr Ansatz"Wenn OUT und es eine Position gibt, hat es eine Verringerung des Volumens gegeben. Wenn es kein OUT und keine Position gibt, dann wurde die Position vollständig geschlossen" hat eine Funktion, die ich als umständlich empfinde, nämlich die Notwendigkeit, jedes Mal zusätzlich die Informationen über die Position in der Terminaldatenbank zu überprüfen.

Wir alle wissen, dass Informationen im Basis-Terminal mit einer gewissen Verzögerung gegenüber der tatsächlichen Situation ankommen. Daher können wir Situationen nicht ausschließen, in denen das Prüfergebnis lautet"es gibt eine Position und sie ist AUS", die Position aber in Wirklichkeit vollständig geschlossen wurde. Mit anderen Worten, es ist möglich, ungenaue Informationen zu erhalten und auf deren Grundlage falsche Maßnahmen zu ergreifen, oder man muss zusätzliche Kontrollen, Verzögerungen oder was auch immer erfinden.

Aber Sie können auf all diese Tricks verzichten. Insbesondere, ohne die Verfügbarkeit von Positionen zu prüfen. Dazu reicht es aus, eine Eins-zu-Eins-Entsprechung zwischen Bestandsabschluss und DEAL_ENTRY_OUT-Eigenschaft zu belassen (Entsprechung - wie sie jetzt im Handbuch dargestellt wird) und die Reduzierung des Bestandsvolumens einer separaten Eigenschaft des Geschäfts zuzuordnen. Dann reicht es aus, in der Historie (HistorySelectByPosition) ein einzelnes Geschäft mit der Eigenschaft DEAL_ENTRY_OUT zu finden , um sicher zu sein, dass die Position nicht reduziert, sondern exakt geschlossen ist und unter keinen Umständen rückgängig gemacht werden kann.

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

Das Schlimme daran ist Folgendes. Ihr Ansatz"Wenn OUT und es gibt eine Position, hat es eine Verringerung des Volumens. Wenn es kein OUT und keine Position gibt, dann wurde die Position vollständig geschlossen" hat eine Funktion, die ich als umständlich empfinde, nämlich die Notwendigkeit, jedes Mal zusätzlich die Informationen über die Position in der Terminaldatenbank zu überprüfen.

Wir alle wissen, dass Informationen im Basis-Terminal mit einer gewissen Verzögerung gegenüber der tatsächlichen Situation ankommen. Daher können wir Situationen nicht ausschließen, in denen das Prüfergebnis lautet"es gibt eine Position und sie ist AUS", die Position aber in Wirklichkeit vollständig geschlossen wurde. Mit anderen Worten, es ist möglich, ungenaue Informationen zu erhalten und auf deren Grundlage falsche Maßnahmen zu ergreifen, oder man muss zusätzliche Kontrollen, Verzögerungen oder was auch immer erfinden.

Aber Sie können auf all diese Tricks verzichten. Insbesondere, ohne die Verfügbarkeit von Positionen zu prüfen. Dazu reicht es aus, eine Eins-zu-Eins-Entsprechung zwischen Bestandsabschluss und DEAL_ENTRY_OUT-Eigenschaft zu belassen (Entsprechung - wie sie jetzt im Handbuch dargestellt wird) und die Reduzierung des Bestandsvolumens einer separaten Eigenschaft des Geschäfts zuzuordnen. Dann genügt es, in der Historie (HistorySelectByPosition) ein einzelnes Geschäft mit der Eigenschaft DEAL_ENTRY_OUT zu finden und sicher zu wissen, dass die Position nicht reduziert, sondern exakt geschlossen ist und unter keinen Umständen rückgängig gemacht werden kann.

In OnTrade() erhalten wir die Antwort vom Server. Das heißt, wenn wir das Ereignis in OnTrade() überprüfen, wissen wir bereits mit Sicherheit, ob eine Position vorhanden ist oder nicht. Wir können jedoch Standardoptionen wie DEAL_ENTRY_FULLOUT (vollständiger Abschluss) oderDEAL_ENTRY_PARTOUT (teilweiser Abschluss) anbieten, um alles perfekt zu machen.)))

In der Zwischenzeit können Sie separate Funktionen erstellen, damit Sie nicht jedes Mal "umständliche Prüfungen" einführen müssen.

 
tol64:

Sie könnten jedoch Standardoptionen wie DEAL_ENTRY_FULLOUT oderDEAL_ENTRY_PARTOUT einführen, um alles perfekt zu gestalten.)))

Das ist es, worum es geht. Wir müssen nicht einmal zusätzliche Prüfungen in OnTrade durchführen, die im Vergleich zur vorgeschlagenen Lösung (FULLOUT / PARTOUT) zu umständlich wären.
 
Yedelkin:
Das ist der Punkt... Sie müssten nicht einmal zusätzliche Prüfungen in OnTrade durchführen, was im Vergleich zu der vorgeschlagenen Lösung (FULLOUT / PARTOUT) immer noch umständlich wäre.
Versuchen Sie, dem Service Desk einen Vorschlag zu unterbreiten. Vielleicht werden sie es in Erwägung ziehen und eines Tages umsetzen.
 
tol64:
Versuchen Sie, dem Service Desk einen Vorschlag zu unterbreiten. Vielleicht werden sie es in Erwägung ziehen und eines Tages umsetzen.
Das habe ich bereits getan :) Als Sprachfehler ...Wow, ich habe eine Stunde gebraucht, um das zu schreiben.
 
Yedelkin:
Das habe ich bereits getan :) Als Versprecher... Wow, ich habe eine Stunde gebraucht, um das zu schreiben.
Trotzdem kann man es nicht als Fehler bezeichnen. Aber was können Sie tun, wenn Sie schon geschickt worden sind? ))
 
tol64:
Trotzdem kann man es nicht als Fehler bezeichnen. Aber was können Sie jetzt tun, wo Sie hingeschickt wurden? ))
Nun, hier kommen die Bewertungskategorien ein wenig ins Spiel :) Ich habe versucht, die Kategorie "Fehler" zu rechtfertigen :)
 
Yedelkin:

Ja, jeder Zeitraum entspricht einem bestimmten Wert. Jemand hat es vor ein paar Jahren im Forum gepostet. Sie können dies selbst herausfinden, indem Sie eine Zeile wie die folgende ausführen:


Das Skript gibt die ENUM_TIMEFRAMES-Werte für alle Perioden im Dezimalsystem aus:

void OnStart()
  {
//---
   for(int i=(int)PERIOD_CURRENT;i<=(int)PERIOD_MN1;i++)
     {
       ResetLastError();
       string period=EnumToString((ENUM_TIMEFRAMES)i);
       if(GetLastError())
        continue;
       Print(EnumToString((ENUM_TIMEFRAMES)i)+"="+IntegerToString(i));
     }
  }
//+------------------------------------------------------------------+