Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Also ich bin mal raus, du willst ja nicht verstehen das du den filling type nicht brauchst und hast es nicht mal versucht.
da ist hilfe zwecklos
Hallo amando,
du mußt es schon mal lesen, ich habe oben geschrieben das ich diese benötige und :
Was keinen unterschied zu meiner Variante ist, da Buy als minimum das Volumen benötigt.
Buy gibt mir in beiden fällen ein "invalid fill" zurück.
Also habe ich es getestet. Aber ich muss mich korrigieren, Buy gibt mir natürlich ein false zurück da ja Bool Rückgabe.
Buy --> PositionOpen füllt die m_request und ruft die Funktion FillingCheck auf, die dann mit false beendet wird und dadurch auch PositionOpen --> Buy mit false beendet.
In m_result steht dann "invalid fill".
vg
Thorsten
Hallo Carl,
ich dachte immer ein Forum ist für das Besprechen von Fehlern, Problemen, Verbesserung oder sonstigen Veränderungen da.
Wenn ich da falsch liege, sage mir bescheid, dann meide ich das Deutsche Forum.
Ich möchte nur einen Funktionierenden Code bzw. den Code richtig verstehen und dem entsprechend anwenden.
vg
Thorsten
oder Dir inzwischen die Beta-Version selber herunter lädst, dann löst sich Dein Problem
von selber auf, weil dann die dritte Option auch in der Dok. nicht mehr existiert.
Wir alle müssen mit dem zufrieden sein, was uns MQ (kostenlos) anbietet.
Wenn nicht, könnte man auch vermuten, er kann es nicht, weil es die dritte Option nicht (mehr?) gibt.
Hallo amando,
jetzt erstmal Buy und Sell Order ohne fehler ausführen.
Die Trade Klasse stellt dafür ja einiges an Funktionen zur Verfügung.
Über die Funktion SetTypeFillingBySymbol soll unabhängig vom Broker und Symbol die richtige Filling Methode benutzt/gesetzt werden.
Das ist die Ausgabe im Experten-Tab:
2020.02.10 19:10:19.739 Trade-Buy (EURUSDc,M1) Start Test
2020.02.10 19:10:19.739 Trade-Buy (EURUSDc,M1) False SetTypeFillingBySymbol
2020.02.10 19:10:19.739 Trade-Buy (EURUSDc,M1) False Buy
vg
Thorsten
2020.02.11 12:33:08.139 332422 (EURUSD,M1) False SetTypeFillingBySymbol
2020.02.11 12:33:08.139 332422 (EURUSD,M1) SetTypeFillingBySymbol forced to ORDER_FILLING_RETURN
2020.02.11 12:33:08.139 332422 (EURUSD,M1) CTrade::OrderSend: exchange buy 0.01 EURUSD [auto trading disabled by server]
2020.02.11 12:33:08.139 332422 (EURUSD,M1) False Buy
Auto-Trading ist auf meiner Seite deaktiviert, ist es auf Ihrer Seite erlaubt?
2020.02.11 12:33:08.139 332422 (EURUSD,M1) False SetTypeFillingBySymbol
2020.02.11 12:33:08.139 332422 (EURUSD,M1) SetTypeFillingBySymbol forced to ORDER_FILLING_RETURN
2020.02.11 12:33:08.139 332422 (EURUSD,M1) CTrade::OrderSend: exchange buy 0.01 EURUSD [auto trading disabled by server]
2020.02.11 12:33:08.139 332422 (EURUSD,M1) False Buy
Auto-Trading ist auf meiner Seite deaktiviert, ist es auf Ihrer Seite erlaubt?
Hallo Alain,
Auto Trading ist auch bei mir disabled by Server. Deswegen habe ich eine E-Mail an GBE geschrieben.
Der Broker hat mir geschrieben das er nicht SYMBOL_FILLING_FOK und SYMBOL_FILLING_IOC setzt.
So mit bleibt No identifier Fill Policy Return übrig.
Bei der Abfrage wird 0 in filling zurück gegeben.
Mit folgender Änderung funktioniert die Abfrage mit SetTypeFillingBySymbol richtig.
VG
Thorsten
Hallo Alain,
Auto Trading ist auch bei mir disabled by Server. Deswegen habe ich eine E-Mail an GBE geschrieben.
Der Broker hat mir geschrieben das er nicht SYMBOL_FILLING_FOK und SYMBOL_FILLING_IOC setzt.
So mit bleibt No identifier Fill Policy Return übrig.
Bei der Abfrage wird 0 in filling zurück gegeben.
Mit folgender Änderung funktioniert die Abfrage mit SetTypeFillingBySymbol richtig.
VG
Thorsten
Ich stimme zu, das scheint ein Fehler in der Standardbibliothek zu sein. Es ist jedoch das erste Mal, dass ich einen Broker / ein Symbol sehe, bei dem weder FILLING_FOK noch FILLING_IOC verfügbar sind.
Wie auch immer, wenn der automatisierte Handel auf der Serverseite deaktiviert ist, spielt das alles keine Rolle. Dieser GBE-Server scheint falsch konfiguriert zu sein, EURUSD mit "Exchange" -Ausführung und FILLING_RETURN ergeben nur keinen Sinn.
Ich stimme zu, das scheint ein Fehler in der Standardbibliothek zu sein. Es ist jedoch das erste Mal, dass ich einen Broker / ein Symbol sehe, bei dem weder FILLING_FOK noch FILLING_IOC verfügbar sind.
Wie auch immer, wenn der automatisierte Handel auf der Serverseite deaktiviert ist, spielt das alles keine Rolle. Dieser GBE-Server scheint falsch konfiguriert zu sein, EURUSD mit "Exchange" -Ausführung und FILLING_RETURN ergeben nur keinen Sinn.
Hallo Alain,
bist du Programmierer für MQ ?
Ich habe bei GBE angefragt ob ich den Screenshot und die anderen Angaben veröffentlichen darf, ich warte noch auf eine Antwort.
Aber ich kann dir sagen, das in dem Tab "Trade" in dem Feld "Filling " kein hacken bei FOK und auch keiner bei IOC ist und somit None im Feld steht.
Wegen dem anderen Thema (Server) habe ich auch nachgefragt und warte noch auf eine Antwort.
Gruß
Thorsten
oder Dir inzwischen die Beta-Version selber herunter lädst, dann löst sich Dein Problem
von selber auf, weil dann die dritte Option auch in der Dok. nicht mehr existiert.
Wir alle müssen mit dem zufrieden sein, was uns MQ (kostenlos) anbietet.
Wenn nicht, könnte man auch vermuten, er kann es nicht, weil es die dritte Option nicht (mehr?) gibt.
Hallo Carl,
zu 1. Bei meinem Problem kann mir nur ein MQ Programmierer helfen, Lösung habe ich gerade an Alain Verleyen (oben) gesendet.
zu 2. Ich habe mich bei deiner Aussage zu deiner Version geirrt. Deine Angabe "Ich habe MT5 b 2316" hatte ich das b als Beta interpretiert, aber du meintest build.
Ich habe mir von MQ die neuste Version runtergeladen und installiert. Siehe da gleicher Fehler es hat sich nichts geändert, weder am Programm Code noch an der Doku.
Und es sind überall genau dieselben Bezeichnungen.
zu 3. Ich gebe dir ja Recht das wir mit dem Leben müssen was MQ uns Programmiert. Aber wir müssen ja nicht Fehlerhaften Code fehlerhaft belassen.
Helfen kann jeder, der die Beiträge auch richtig liest und nicht nur überfliegt.
zu 4. Ich hab meinen Broker gefragt und er hat mir das Bestätigt was ich vermutet hatte. Es gibt 3 Varianten sowohl bei der SYMBOL_FILLING_... als auch ORDER_FILLING_...
Die 3. Variante ist die wenn ich weder die 1. noch die 2. habe. So ist es ja auch in der Doku beschrieben.
Also Carl, du bist doch Moderator, wie bekommt man den Fehler jetzt beseitigt. An wen oder wo muss man sich hin wenden?
VG
Thorsten
Hallo Alain,
bist du Programmierer für MQ ?
Ich habe bei GBE angefragt ob ich den Screenshot und die anderen Angaben veröffentlichen darf, ich warte noch auf antwort.
Aber ich kann dir sagen, das in dem Tab "Trade" in dem Feld "Filling " kein hacken bei FOK und auch keiner bei IOC ist und somit None im Feld steht.
Wegen dem anderen habe ich auch nachgefragt.
Gruß
Thorsten
Nein, ich habe nichts mit Metaquotes zu tun.
Ich weiß, es gibt "None" an (ich habe ein Demokonto), was, wie gesagt, für ein Symbol wie EURUSD oder Forex im Allgemeinen seltsam ist.
Du wirfst zwei Dinge durcheinander!
1.)
SymbolInfoInteger()
Kennt nur 2 Optionen:
https://www.mql5.com/de/docs/marketinformation/symbolinfointeger und
https://www.mql5.com/de/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_integer
https://www.mql5.com/de/docs/constants/environment_state/marketinfoconstants#symbol_filling_mode
Beim Senden der Order kann die Politik der Ausfüllung des im Handelsbefehl gemeldeten Volumens angegeben werden. Zulässige Varianten der Ordererfüllung für Volumen werden für jedes Symbol in der Tabelle angegeben. Für jedes Instrument kann nicht einen, sondernmehrere Modi durch Kombination der Flaggen gestellt werden. Kombination der Flaggen wird durch Operation der logischen ODER (|) ausgedrückt, ZB, SYMBOL_FILLING_FOK|SYMBOL_FILLING_IOC. für Prüfung der Zulässigkeit bestimmtes Modus für Instrument muss das Ergebnis der logischen UND (&) mit der Flagge des Modus verglichen werden.
Ausfüllungspolitik
Identifikator
Wert
Beschreibung
Alles/Nichts
SYMBOL_FILLING_FOK
1
Diese Ausfüllungspolitik bedeutet, dass der Order nur in der angegebenen Volumen ausgefüllt werden kann. Wenn die ausreichende Menge eines Finanzinstruments sich auf dem Markt derzeit nicht präsentieren, wird der Order nicht ausgeführt werden. Das erforderliche Volumen kann aus mehreren Vorschlägen, die derzeit auf dem Markt erhältlich sind, bestehen.
Alles/Teil
SYMBOL_FILLING_IOC
2
In diesem Fall verpflichtet sich der Händler, einen Deal mit dem maximalen Volumen, das auf dem Markt erhältlich ist, im Bereich in der angegebenen Reihenfolge zu machen. Wenn die volle Ausführung unmöglich ist, wird der Order auf das verfügbare Volumen ausgeführt werden und das übrige Volumen wird storniert. Erlaubnis zur Nutzung von IOC Aufträge wird auf dem Trading-Server bestimmt.
Abrufen
Kein Identifier
Dieser Modus ist für Markt (Buy und Sell), Limit- und Stop-Limit-Aufträge verwendet, und nur in der Modi "Market execution" und "Exchange execution". Im Falle von Teilausfüllung wird ein Markt- oder Limit-Order mit dem Restvolumen nicht entfernt und arbeitet weiter.
In "Auf Anfrage" und "Sofort" Modi der Ausführung wird für Markt-Orders immer Ausfüllungspolitik Alles/nichts, und für Limit-Orders "Return" verwendet. In diesem Fall, wenn die Funktionen OrderSend oder OrderSendAsync Order senden, ist Eingabe der Ausfüllungstyp für sie nicht erforderlich.
In Ausführungsmodi "Market" und "Exchange" ist die Ausfüllungspolitik "Return" immer für alle Arten von Orders erlaubt. Erlaubnis von anderen Arten wird durch Eigenschaften SYMBOL_FILLING_FOK und SYMBOL_FILLING_IOC überprüft.
Beispiel:
//+------------------------------------------------------------------+
//| prüft Zulässigkeit des angegebenen Modus der Ausfüllung |
//+------------------------------------------------------------------+
bool IsFillingTypeAllowed(string symbol,int fill_type)
{
//--- erhalten wir den Wert der Eigenschaft, die Modus der Ausfüllung beschreibt
int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- geben wir true zurück, wenn Modus fill_type erlaubt ist
return((filling & fill_type)==fill_type);
}
OrderSend hingegen kennt 3 Modi:
https://www.mql5.com/de/docs/constants/tradingconstants/orderproperties#enum_order_property_integer
Beim Senden einer Handelsanforderung durch die Funktion OrderSend() kann für Order Ausfüllungspolitik im Feld type_filling in der speziellen Struktur MqlTradeRequest vorgegeben werden, zulässig sind Werte aus der Enumeration ENUM_ORDER_TYPE_FILLING. Für Erhaltung des Werte dieser Eigenschaft verwenden Sie die Funktion OrderGetInteger() oder HistoryOrderGetInteger() mit dem Modifikator ORDER_TYPE_FILLING.
ENUM_ORDER_TYPE_FILLING
Identifikator
Beschreibung
ORDER_FILLING_FOK
Diese Ausfüllungspolitik bedeutet, dass eine Order nur in der angegebenen Menge gefüllt werden kann. Wenn die notwendige Menge eines Finanzinstruments ist auf dem Markt derzeit nicht verfügbar, wird die Order nicht ausgefüllt werden. Das erforderliche Volumen kann mit mehreren Angeboten, die im Moment auf dem Markt verfügbar sind, gefüllt werden.
ORDER_FILLING_IOC
Dieser Modus bedeutet, dass der Trader mit einem Deal mit dem maximalen auf dem Markt verfügbaren Volumen innerhalb der Order einverstanden ist. Falls das gesamte Volumen einer Order nicht gefüllt werden kann, wird das verfügbare Volumen davon gefüllt werden und das restliche Volumen wird abgebrochen.
ORDER_FILLING_RETURN
Dieses Modus wird für die Markt- (ORDER_TYPE_BUY undORDER_TYPE_SELL), Limit- und Stop-Limit-Orders (ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP_LIMIT und ORDER_TYPE_SELL_STOP_LIMIT) und nur in Modi "Markt Ausführung " und "Börse Ausführung" verwendet. Im Falle einer teilweisen Ausführung wird die Markt- oder Limit-Order mit verbleibende Volumen nicht annulliert, sondern weiter verarbeitet.
Für die Aktivierung der Ordern ORDER_TYPE_BUY_STOP_LIMIT und ORDER_TYPE_SELL_STOP_LIMIT wird eine entsprechende Limit-Order ORDER_TYPE_BUY_LIMIT/ORDER_TYPE_SELL_LIMIT mit Ausfüllungstyp ORDER_FILLING_RETURN erstellt werden.
Die Enums können nicht 'ausgetauscht' werden!!Du wirfst zwei Dinge durcheinander!
1.)
Kennt nur 2 Optionen:
https://www.mql5.com/de/docs/marketinformation/symbolinfointeger und
https://www.mql5.com/de/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_integer
https://www.mql5.com/de/docs/constants/environment_state/marketinfoconstants#symbol_filling_mode
OrderSend hingegen kennt 3 Modi:
https://www.mql5.com/de/docs/constants/tradingconstants/orderproperties#enum_order_property_integer
Die Enums können nicht 'ausgetauscht' werden!!Hallo Carl,
zu 1) genau hier ist dein Gedankenfehler, int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
liefert in filling eine 1 zurück wenn der Broker SYMBOL_FILLING_FOK setzt
liefert in filling eine 2 zurück wenn der Broker SYMBOL_FILLING_IOC setzt
liefert in filling eine 0 zurück wenn der Broker keins der beiden setzt
Ist bei mir so und auch von meinem Broker bestätigt, das er keins der beiden Signale setzt.
Außerdem werden doch auch 3 Optionen beschrieben, allerdings werden nur für 2 die Werte angegeben.
Und vergleiche die Beschreibungstexte von SYMBOL_FILLING_... und ORDER_FILLING_... dann siehst du das es jeweils 3 Varianten sind.
Die Enums sollen nicht ausgestauscht werden. Vielleicht siehst du es besser in der Englischen Doku :
Das was fehlt ist lediglich in der oberen Doku, das bei Return die Value 0 stehen müsste. Wie schon gesagt, bei mir und
meinem Broker liefert filling eine 0 zurück. Unten ein Screenshot von meinem Brocker in der Einstellmaske und die
Aussage das sie None = nichts von beidem Ausgewählt haben.
Und ich wiederhole mich hier schon wieder. Du mußt auch das unter 4. aus meiner letzten Antwort lesen. Da habe genaug das beschrieben.
Und ich wiederhole auch meine Frage an dich als Moderator nochmal:
Also Carl, du bist doch Moderator, wie bekommt man den Fehler jetzt beseitigt. An wen oder wo muss man sich hin wenden?
Gibt es sowas wie Bugzilla oder etwas vergleichbares?
VG
Thorsten