Hallo,
hat jemand das gleiche Problem oder kennt eine Lösung?
Ich erstelle mir einen EA, der soll mit der Funktion
Hallo,
hat jemand das gleiche Problem oder kennt eine Lösung?
Ich erstelle mir einen EA, der soll mit der Funktion SetTypeFillingBySymbol den Type der Order Filling setzten, um mit Buy / Sell dann eine Order zu eröffnen.
Die Funktion gibt aber immer false zurück (true – erfolgreiche Ausführung, false – die Ausführungspolitik konnte nicht definiert werden).
Es gibt in ENUM_ORDER_TYPE_FILLING 3 Identifikatoren ORDER_FILLING_FOK, ORDER_FILLING_IOC und ORDER_FILLING_RETURN.
In der Klasse CTrade ist ORDER_FILLING_FOK als standart vorgegeben, SetTypeFillingBySymbol kann aber nur die ersten beiden Identifikatoren einstellen.
Deshalb glaube ich, das hier ein fehler in SetTypeFillingBySymbol vorliegt.
Mein Broker ist GBE Brokers und in der Symbol Spezifikation steht bei Orderfüllung "Nichts".
Bei Google und im Forum konnte ich dazu nichts finden.
Vielen Dank im Voraus
VG
Thorsten
den Type der Order Filling setzten, um mit Buy / Sell dann eine Order zu eröffnen.
Die Funktion gibt aber immer false zurück (true – erfolgreiche Ausführung, false – die Ausführungspolitik konnte nicht definiert werden).
Es gibt in ENUM_ORDER_TYPE_FILLING 3 Identifikatoren ORDER_FILLING_FOK, ORDER_FILLING_IOC und ORDER_FILLING_RETURN.
In der Klasse CTrade ist ORDER_FILLING_FOK als standart vorgegeben, SetTypeFillingBySymbol kann aber nur die ersten beiden Identifikatoren einstellen.
Deshalb glaube ich, das hier ein fehler in SetTypeFillingBySymbol vorliegt.
Mein Broker ist GBE Brokers und in der Symbol Spezifikation steht bei Orderfüllung "Nichts".
Bei Google und im Forum konnte ich dazu nichts finden.
Vielen Dank im Voraus
VG
Thorsten
In der Dok (im Editor F1) steht:
und dort klick mal auf SYMBOL_FILLING_MODE!
Hallo Carl,
was meinst du?
Doku etc. alles gelesen, trotzdem kann die Funktion ja den dritten Wert gar nicht setzten.
Außerdem kommt von der Funktion immer ein false, was ja auf eine nicht korrekte ausführung hindeutet.
true – erfolgreiche Ausführung, false – die Ausführungspolitik konnte nicht definiert werden
vg
Thorsten
Hallo Carl,
was meinst du?
1.) Doku etc. alles gelesen, trotzdem kann die Funktion ja den dritten Wert gar nicht setzten.
2.) Außerdem kommt von der Funktion immer ein false, was ja auf eine nicht korrekte ausführung hindeutet.
true – erfolgreiche Ausführung, false – die Ausführungspolitik konnte nicht definiert werden
vg
Thorsten
1) Es können nur zwei gesetzt werden! Welchen Dritten meinst Du, wenn Du sagst, Du hast die Doks. gelesen?
2) Vielleicht lässt der Broker keine Änderung zu?
Was hast du denn vor? Wie sieht dein code aus?
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.
#include <Trade\Trade.mqh> CTrade TestTrade; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- Print("Start Test"); TestTrade.SetExpertMagicNumber(1234); if(TestTrade.SetTypeFillingBySymbol(Symbol())) Print("True SetTypeFillingBySymbol"); else Print("False SetTypeFillingBySymbol"); if(TestTrade.Buy(0.01)) Print("True Buy"); else Print("False Buy"); //--- return(INIT_SUCCEEDED); }
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
1) Es können nur zwei gesetzt werden! Welchen Dritten meinst Du, wenn Du sagst, Du hast die Doks. gelesen?
2) Vielleicht lässt der Broker keine Änderung zu?
Hallo Carl,
Es geht um die Variable m_type_filling
//+------------------------------------------------------------------+ //| Set order filling type according to symbol filling mode | //+------------------------------------------------------------------+ bool CTrade::SetTypeFillingBySymbol(const string symbol) { //--- get possible filling policy types by symbol uint filling=(uint)SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE); if((filling&SYMBOL_FILLING_FOK)==SYMBOL_FILLING_FOK) { m_type_filling=ORDER_FILLING_FOK; return(true); } if((filling&SYMBOL_FILLING_IOC)==SYMBOL_FILLING_IOC) { m_type_filling=ORDER_FILLING_IOC; return(true); } //--- return(false); }
zu 2) Genau darum geht es ja bei dieser Funktion, vom Broker für die Symbole die entsprechende Einstellung auslesen und dann für die Order richtig setzen.
vg
Thorsten
Welche Version hast Du?
Ich habe MT5 b 2316:
SetTypeFillingBySymbol
Setzt den Typ derAusführung einer Order entsprechend den Einstellungen des angegebenen Symbols.
bool
SetTypeFillingBySymbol( |
Parameter
symbol
[in] Name des Symbols, in welchem SYMBOL_FILLING_MODE zulässige Politiken der Ausführung von Orders beinhaltet.
Rückgabewert
true – erfolgreiche Ausführung, false – die Ausführungspolitik konnte nicht definiert werden.
Hinweis
+Wenn für das Symbol gleichzeitig zwei Politiken der Ausführung SYMBOL_FILLING_FOK und SYMBOL_FILLING_IOC erlaubt sind, wird der Order der Wert ORDER_FILLING_FOK zugewiesen.
bzw:
Welche Version hast Du?
Ich habe MT5 b 2316:
bzw:
Hallo Carl,
Ich habe MT5 2280
Deinen hinweis habe ich auch gelesen, jedoch der Code aus der Klasse CTrade::SetTypeFillingBySymbol kann m_type_filling nur 2 Zustände zuweisen.
Das ist der Orginal Code und es sind nur 2 IF() Anweisungen, also nur 2 zustände.
Beispiel:
Der EA wird bei verschiedenen Brokern benutzt und die wollen über diese Funktion folgende Filling Methode einstellen:
Broker A = ORDER_FILLING_FOK
Broker B = ORDER_FILLING_IOC
Broker C = ORDER_FILLING_RETURN
Durch die fehlerhafte Funktion würde der EA bei Broker C nie eine Order ausführen.
Im moment würde, wenn mein EA fertig wäre, der EA immer abbrechen, da egal welche ORDER_FILLING Methode ich Voreinstelle, ein false zurück gegeben wird, was ja Aussagt: die Ausführungspolitik konnte nicht definiert werden.
vg
Thorsten
Du musst die filling methode gar nicht setzen in der ctrade klasse
probiers mal ohne
was soll ich wo ohne probieren?
Wenn ich die CTrade Klasse benutze, ist ja schon ORDER_FILLING_FOK automatisch gesetzt.
Und wie ich Carl schon geschrieben habe, möchte ich den EA später bei verschiedenen Brokern ausführen und nicht jedesmal das dann Händisch einstellen.
Dafür gibt es ja die Klassen mit Ihren Funktionen, oder ?
vg
Thorsten
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo,
hat jemand das gleiche Problem oder kennt eine Lösung?
Ich erstelle mir einen EA, der soll mit der Funktion SetTypeFillingBySymbol den Type der Order Filling setzten, um mit Buy / Sell dann eine Order zu eröffnen.
Die Funktion gibt aber immer false zurück (true – erfolgreiche Ausführung, false – die Ausführungspolitik konnte nicht definiert werden).
Es gibt in ENUM_ORDER_TYPE_FILLING 3 Identifikatoren ORDER_FILLING_FOK, ORDER_FILLING_IOC und ORDER_FILLING_RETURN.
In der Klasse CTrade ist ORDER_FILLING_FOK als standart vorgegeben, SetTypeFillingBySymbol kann aber nur die ersten beiden Identifikatoren einstellen.
Deshalb glaube ich, das hier ein fehler in SetTypeFillingBySymbol vorliegt.
Mein Broker ist GBE Brokers und in der Symbol Spezifikation steht bei Orderfüllung "Nichts".
Bei Google und im Forum konnte ich dazu nichts finden.
Vielen Dank im Voraus
VG
Thorsten