Fragen zu OrderSend() - Seite 6

 
maryan.dirtyn:

Ich zerbreche mir den Kopf... der Anschlag will sich einfach nicht setzen... und eine Menge Fehler. Das ist das, was von dem Experiment übrig ist, und es funktioniert nicht mehr

Wenn ich dies tue, gibt es keine Fehler, aber der Stop-Loss ist immer noch nicht gesetzt

hier beantwortet
 
Yedelkin:

Offensichtlich habe ich das vorherige Problem nicht sehr deutlich erklärt. Lassen Sie es mich noch einmal versuchen.

Im letzten Jahr wurde die Beschreibung der AufzählungswertelisteENUM_ORDER_TYPE_FILLING mindestens dreimal geändert. Die vorherige Beschreibung sah wie folgt aus

ENUM_ORDER_TYPE_FILLING

Kennung

Beschreibung

AUFTRAG_FUELLUNG_FOK

Ein Geschäft kann nur in der angegebenen Menge und zu einem Preis ausgeführt werden, der gleich oder besser als der im Auftrag angegebene ist. Wenn auf dem Markt nicht genügend Angebot für das Auftragssymbol vorhanden ist, wird der Auftrag nicht ausgeführt. Diese Füllungsart wird im Ausführungsmodus SYMBOL_TRADE_EXECUTION_INSTANT oderSYMBOL_TRADE_EXECUTION_REQUESTverwendet .

AUFTRAG_AUFFUELLEN_IOC

Eine Vereinbarung zur Ausführung eines Geschäfts mit dem maximalen am Markt verfügbaren Volumen innerhalb des im Auftrag angegebenen Volumens und zu einem Preis, der gleich oder besser als der im Auftrag angegebene ist. In diesem Fall werden keine weiteren Bestellungen für den fehlenden Band aufgegeben. Diese Befüllungsart kann nur in den Ausführungsmodi SYMBOL_TRADE_EXECUTION_MARKET undSYMBOL_TRADE_EXECUTION_EXCHANGE verfügbar sein , abhängig von den Einstellungen auf dem Handelsserver.

AUFTRAG_AUFFUELLEN_ZURUECK

Vereinbarung, ein Geschäft mit dem maximalen auf dem Markt verfügbaren Volumen innerhalb des im Auftrag angegebenen Volumens und zu einem Preis, der gleich oder besser als der im Auftrag angegebene ist, abzuschließen. In diesem Fall wird eine zusätzliche Bestellung für die fehlende Menge zu dem in dieser Bestellung angegebenen Preis aufgegeben. Diese Ausfüllart wird nur für schwebende Aufträge (TRADE_ACTION_PENDING)verwendet.

Wie man unschwer erkennen kann, besteht eine Eins-zu-Eins-Korrespondenz zwischen ORDER_FILLING_RETURN und schwebenden Aufträgen, nämlich: ORDER_FILLING_RETURN konnte nur auf schwebende Aufträge angewendet werden und das Feld type_filling aller schwebenden Aufträge konnte nur mit dem Wert von ORDER_FILLING_RETURN gefüllt werden.

Bei Market Orders(action==TRADE_ACTION_DEAL) sollte das Feld type_filling in Abhängigkeit von den serverseitig eingestellten Ausführungsmodi ausgefüllt sein.

Wir hatten also ein bestimmtes Paradigma: wenn es einen schwebenden Auftrag gab,ORDER_FILLING_RETURN; wenn es einen Marktauftrag gab, ORDER_FILLING_FOK oder ORDER_FILLING_IOC (je nach Modus).

Jetzt wird alles ein bisschen auf den Kopf gestellt, nämlich:

ENUM_ORDER_TYPE_FILLING

Kennung

Beschreibung

AUFTRAG_FUELLUNG_FOK

Diese Auftragsabwicklungspolitik bedeutet, dass der Auftrag nur bis zu dem angegebenen Volumen abgewickelt werden kann. Wenn das Volumen des Finanzinstruments auf dem Markt derzeit nicht ausreicht, wird der Auftrag nicht ausgeführt. Das benötigte Volumen kann aus mehreren auf dem Markt befindlichen Angeboten zusammengestellt werden.

AUFTRAG_AUFFUELLEN_IOC

Zeigt an, dass man bereit ist, ein Geschäft bis zum maximal verfügbaren Volumen auf dem Markt innerhalb des im Auftrag angegebenen Volumens auszuführen. Wenn eine vollständige Ausführung nicht möglich ist, wird der Auftrag bis zum verfügbaren Volumen ausgeführt, und das nicht ausgeführte Volumen wird storniert.

AUFTRAG_AUFFUELLEN_ZURUECK

Dieser Modus wird nur für ORDER_TYPE_BUY_LIMIT und ORDER_TYPE_SELL_LIMIT Aufträge verwendet. Im Falle einer Teilausführung wird der Limitauftrag mit dem verbleibenden Volumen nicht gelöscht, sondern bleibt bestehen.

Für ORDER_TYPE_BUY_STOP_LIMIT und ORDER_TYPE_SELL_STOP_LIMIT Aufträge wird bei Aktivierung der entsprechende ORDER_TYPE_BUY_LIMIT/ORDER_TYPE_SELL_LIMIT Limitauftrag mit der Ausführungsart ORDER_FILLING_RETURN angelegt.

Die Einschränkung, dass ORDER_FILLING_FOK und ORDER_FILLING_IOC nur bei Marktaufträgen verwendet werden können, wurde aufgehoben. Außerdem gibt es keine Einschränkung bei der Verwendung von ORDER_FILLING_FOK und ORDER_FILLING_IOC mit Marktaufträgen, je nach dem auf dem Server eingestellten Ausführungsmodus. Es gibt eine Einschränkung für die Verwendung von ORDER_FILLING_RETURN nur bei Limit- und Stop_limit-Aufträgen .

Meine Frage lautet also: Ist es akzeptabel, ORDER_FILLING_FOK und ORDER_FILLING_IOC überhaupt für alle Aufträge (sowohl Markt- als auch schwebende Aufträge) einschließlich Limit- und Stop_limit-Aufträgen zu verwenden? Hat jemand die Änderungen herausgefunden?

Ja, in dieser Frage ist es etwas undurchsichtig.

Wenn es eine vollständige Übereinstimmung zwischen ENUM_SYMBOL_TRADE_EXECUTION und ENUM_ORDER_TYPE_FILLING gibt, ist die zweite offensichtlich unnötig.

Es gibt also keine Moral, und höchstwahrscheinlich sind verschiedene Werte vonENUM_ORDER_TYPE_FILLINGfür ein und dasselbeENUM_SYMBOL_TRADE_EXECUTION zulässig . MQ würde hier eine Tabelle von Möglichkeiten beschreiben, aber höchstwahrscheinlich sind diese Daten von den Einstellungen des dealenden Servers abhängig.

Und daher die zweite Moral, die schließlich gebraucht wird:

wird eine Funktion benötigt, die eine Liste gültiger Optionen (ENUM_ORDER_TYPE_FILLING) für den angeforderten Auftragstyp (sofort oder in Bearbeitung)zurückgibt.

Dort gibt es nicht viele Optionen, also können Sie int über "|" einfügen.

Wenn ich falsch liege, geben Sie mir einen Zauberer, wo ich nach dieser Frage suchen kann.



 

Um diese Frage zu lösen, ging ich zur Standardbibliothek (aus Gewohnheit, wenn es nicht klar ist, wie andere es tun).

Die Funktion zur bequemen Vererbung wurde dort angegeben, während in der CTrade-Klasse SetTypeFilling() nicht verwendet wird, das Feld type_filling wird standardmäßig mit Null initialisiert, was gemäß der Aufzählung ORDER_FILLING_FOK entspricht.

Das ist alles, keine Arbeit mehr. Und ich dachte, da dieses Feld in der Schnittstelle nicht vorhanden ist, bedeutet dies, dass das Ausfüllen in der Klasse automatisiert ist.

SZY im Allgemeinen, ich warte auf eine Antwort, wie man das beheben kann :)
 
Im Moment sehe ich nur einen Ausweg: den Server so lange zu bearbeiten, bis er Ihnen die gewünschte Antwort gibt.
 
her.human:
Bislang sehe ich nur eine Lösung: den Server so lange bearbeiten, bis Sie die gewünschte Antwort erhalten.

Eine gute Abendunterhaltung, bei der ich mich schlapp gelacht habe.

Die Chinesen haben sich in den Hauptserver des Pentagons gehackt.

Jeder Chinese hat schon einmal versucht, das Passwort einzugeben.

Alle anderen tippten "Mao Tse Tung" ein.

Bei 5*10^7 Versuchen sagt der Server, das Passwort sei "Mao Tse Tung".

 
her.human:
Im Moment sehe ich nur einen Ausweg: den Server so lange zu bearbeiten, bis man die richtige Antwort erhält.

einen dummen Ausweg.

Sie sollten zuerst mit Ihrem DC sprechen und herausfinden, welche Ausführungsarten sie unterstützen und welche Arten von Metaquot-Listen ihren Ausführungsarten entsprechen.

Denn nur weil metaquotes 3 Arten von Fill und 3 Arten von Time entwickelt hat, bedeutet das nicht, dass sie die Realität bei der Ausführung von Aufträgen bei einem echten Broker widerspiegeln.

 
sergeev:

einen dummen Ausweg.

Sie sollten zuerst mit Ihrem DC sprechen, um herauszufinden, welche Ausführungsarten er unterstützt und welche Metaquote-Listentypen seinen Ausführungsarten entsprechen.

Denn nur weil metaquotes 3 Arten von Fill und 3 Arten von Zeiten entwickelt hat, bedeutet das nicht, dass sie die Realität bei der Ausführung von Aufträgen bei einem echten Broker widerspiegeln.

Das ist, was ich sage, es hängt alles von den Servereinstellungen ab,

Aber es ist auch ein Problem, bei jedem Maklerunternehmen anzuklopfen,

In einer Maklerfirma können Sie zum Beispiel einen Auftrag für eine echte Maklerfirma erhalten,

aber alles zu umgehen und Schalter-Dillings in den Code zu schreiben ist übertrieben.

Wenn Sie der Meinung sind, dass Sie sich bereits bei uns angemeldet haben, können Sie ganz von vorne beginnen,

PS: Sie stimmen zu, dass normaler Code in einer einheitlichen Weise geschrieben wird, für jeden Umgang sind Ausnahmen möglich, aber erstens bestätigen Ausnahmen die Regeln, und zweitens, wenn es Ausnahmen gibt, müssen Sie die Ausnahmen schreiben.

Hier stellt sich eine solche Tautologie heraus.

 
Urain:

Das ist mein Punkt, es hängt alles von den Servereinstellungen ab,

Es wäre jedoch problematisch, bei jedem Maklerunternehmen anzuklopfen,

Wenn Sie den Unterschied zwischen den beiden nicht kennen, denken Sie vielleicht, dass der Auftrag in den richtigen Auftrag kopiert wird,

aber alles zu umgehen und Schalter-Dillings in den Code zu schreiben ist übertrieben.

PS: Sie sollten zustimmen, dass der normale Code in einer einheitlichen Weise geschrieben ist, für jede Art von Handel,

PS: Sie stimmen zu, dass normaler Code auf einheitliche Weise geschrieben wird, für jeden Umgang sind Ausnahmen möglich, aber erstens bestätigen Ausnahmen nur die Regeln, und zweitens, wenn es Ausnahmen gibt, müssen Sie die Ausnahmen schreiben. Hier stellt sich eine solche Tautologie heraus.

Die Sache ist die.

Die Metaquotes sind mit Ausführungsarten und Ausführungszeiten verwechselt worden. Sie sind insofern nicht standardisiert, als sich IOC- und FOK-Aufträge in Wirklichkeit auf Ausführungszeiten beziehen.

Die Ausführungsart des Auftrags hatte früher den passenden Namen AON, wurde dann aber entfernt.

Sehen Sie sich die FIX-Spezifikation an, die FC verwendet und Aufträge ausführt

FIX 4.4 : TimeInForce <59> field

Type: char

Used In
Description

Specifies how long the order remains in effect. Absence of this field is interpreted as DAY. NOTE not applicable to CIV Orders.

Valid values:
0 = Day (or session)
1 = Good Till Cancel (GTC)
2 = At the Opening (OPG)
3 = Immediate or Cancel (IOC)
4 = Fill or Kill (FOK)
5 = Good Till Crossing (GTX)
6 = Good Till Date
7 = At the Close

Ich habe Typen markiert, die sich selbst Meta-Quoten zugewiesen haben, aber wie Sie sehen können, sind sie alle in einer Gruppe des TimeInForce-Tags <59>.

Und nun sagen Sie mir bitte, wie der Broker, der Gebote am Markt abgibt, den Put-Typ IOC und die Zeit GTD in der MT-Order verarbeitet. Denn es handelt sich um ein Feld, nicht um zwei verschiedene.

Daher wird jeder Makler für sich selbst überlegen, was er mit der Füllung macht, welche Art von Auftrag er verwendet und wie er ihn zurückzieht.


Die einzige Rettung ist der Unterschied zwischen Market und Pending Order, d.h. einige Arten der Auftragsausführung werden nur für Pending Orders und andere für Market Orders verwendet. Generell sollten wir uns mit diesem Punkt auseinandersetzen und ihn diskutieren.


Der Name Alles-oder-Nichts steht in einem völlig anderen Tag ExecInst <18>, der in keiner Weise in der MT-Reihenfolge übergeben wird. Es wird (wahrscheinlich) implizit angenommen, dass für den FOK-Typ

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

Alex, übernimm bitte dieses Thema. Leider bin ich in diesen Fragen ein Unentschlossener.

Machen Sie dem SD Vorschläge, sprechen Sie mit ihm.

Wir müssen das Thema in eine Art Ordnung bringen.

Was wir jetzt haben, ist für die professionelle Programmierung überhaupt nicht geeignet.

 
Urain:

Alex, übernimm bitte dieses Thema. Ich schwimme leider in diesen Dingen.
Machen Sie dem sd Vorschläge, sprechen Sie mit ihm.
Wir müssen das Thema in Ordnung bringen.
Ich bin mir nicht sicher, ob das, was wir jetzt haben, für eine professionelle Programmierung geeignet ist.

Ha. Entweder bin ich dumm oder meine Skier laufen nicht.

Sie sehen selbst, dass methaquotes jeden Monat eine Verbindung zu einer neuen Börse oder einem neuen Markt herstellt.
Daraus schließe ich, dass in diesem Zustand ihre Programmierer MT und FIX ohne Probleme andocken (oder mit einiger Anstrengung mit Einschränkung eines von ihnen).
Sie können also FOK- und GTC-Zeitarten kombinieren, was bedeutet, dass sie in absehbarer Zeit wahrscheinlich nichts ändern werden, da die Arbeiten noch im Gange sind.
Zur gleichen Zeit (ich verstehe), dass für den Austausch Brücke von MT können sie nur zwei Arten - AON oder Teilweise eingestellt. Und erfunden in MT Return - geht wahrscheinlich an Partial.

Im Allgemeinen liegen die Probleme der Interaktion FIX-Broker und MT-Server in der Ebene der Geschicklichkeit und Verständnis progeries an den Makler, die Brücken von MT zu ihren Anbietern zu machen. Und ich glaube nicht, dass metaquotes etwas ändern wird, weil sie lange und aktiv fördern die Plattform zu den Märkten, und damit die interne Struktur der MT-Server ganz im Einklang mit den Realitäten.