Und was hat Ihr Code mitENUM_SYMBOL_CALC_MODE zu tun?
Es wird sofort geprüft, wie der Margin-Wert für die Futures gefüllt wird. Warum aber für verschiedene Futures unterschiedliche Füllmodi auf dem Handelsserver eingestellt sind, ist eine Frage für den Broker. Alles (für Futures) sollte gleich sein.
Karputov Vladimir: Ich habe sofort überprüft, wie die Futures ausgefüllt werden, um den Besicherungsbetrag zu berechnen. Warum aber für verschiedene Futures unterschiedliche Füllmodi auf dem Handelsserver eingestellt sind, ist eine Frage für den Broker. Alles (für Futures) sollte gleich sein.
Die gleichen Vertragsarten müssen die gleichen Eigenschaften haben. Und hier ist die Antwort auf die Frage, warum manche Symbole andere Fülltypen haben als andere:
//+------------------------------------------------------------------+//| Test.mq5 |//| Copyright 2012, CompanyName |//| http://www.companyname.net |//+------------------------------------------------------------------+voidOnStart()
{
for(int i=0;i<SymbolsTotal(false);i++)
{
//ENUM_SYMBOL_CALC_MODE calc_mode=(ENUM_SYMBOL_CALC_MODE)SymbolInfoInteger(Symbol(),SYMBOL_TRADE_CALC_MODE);string name=SymbolName(i,false);
//--- получим значение свойства, описывающего режим заполнения int filling=(int)SymbolInfoInteger(name,SYMBOL_FILLING_MODE);
if(IsFillingTypeAllowed(name,SYMBOL_FILLING_FOK) && IsFillingTypeAllowed(name,SYMBOL_FILLING_IOC) &&
IsFillingTypeAllowed(name,NULL))
{
//---
}
else
{
//Print(name,": ",// ", filling: ",filling,// ", SYMBOL_FILLING_FOK: ",IsFillingTypeAllowed(name,SYMBOL_FILLING_FOK),// ", SYMBOL_FILLING_IOC: ",IsFillingTypeAllowed(name,SYMBOL_FILLING_IOC),// ", Идентификатор отсутствует: ",IsFillingTypeAllowed(name,NULL));SymbolSelect(name,true);
}
}
}
//+------------------------------------------------------------------+ //| проверяет разрешенность указанного режима заполнения | //+------------------------------------------------------------------+ bool IsFillingTypeAllowed(string symbol,int fill_type)
{
//--- получим значение свойства, описывающего режим заполнения int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- вернем true, если режим fill_type разрешен return((filling&fill_type)==fill_type);
}
//+------------------------------------------------------------------+
Im Fenster Market Watch wird eine Liste mit "defekten" Symbolen erstellt. Es hat sich herausgestellt, dass alle diese "defekten Symbole" den Handel deaktiviert haben.
Wenn Sie zum Beispiel eine Bestellung mit dem Befehl OrderSend(...) senden, erhalten Sie eine Antwort true und ein Ticket,
und dann den Befehl OrderSelect(ticket) aufrufen, wird als Antwort false zurückgegeben
(in diesem Fall erscheint der Auftrag dann genau unter den aktiven Aufträgen).
Meine Frage ist: Ich hatte einen aktiven Auftrag. Ich habe eine falsche Antwort mit dem Befehl OrderSelect(ticket) erhalten,
Dann habe ich den Befehl HistoryOrderSelect(ticket) ausgeführt und wieder eine falsche Antwort erhalten (d. h. die Bestellung konnte nicht in der Historie erscheinen).
Wenn Sie zum Beispiel eine Bestellung mit dem Befehl OrderSend(...) senden, erhalten Sie eine Antwort true und ein Ticket,
und dann den Befehl OrderSelect(ticket) aufrufen, wird als Antwort false zurückgegeben
(in diesem Fall erscheint der Auftrag dann genau unter den aktiven Aufträgen).
Meine Frage ist: Ich hatte einen aktiven Auftrag. Ich habe eine falsche Antwort mit dem Befehl OrderSelect(ticket) erhalten,
Dann habe ich den Befehl HistoryOrderSelect(ticket) ausgeführt und wieder eine falsche Antwort erhalten (d. h. die Bestellung konnte nicht in der Historie erscheinen).
Der Kaufstopp wird nicht an die Börse ausgegeben, sondern "dienstlich" auf dem MT5-Server, also,
Wenn es auf dem Wettmarkt eine starke Bewegung gibt, kann es zu einem Ausrutscher kommen.
nur Limitaufträge zum angegebenen Preis ausgeführt werden?
Ja, zu einem Preis, der nicht schlechter ist als der im Optionsschein angegebene, wenn nicht rechtzeitig, dann
wird nichts gekauft (verkauft).
In diesem Fall sollte die Methode der Auftragserfüllung IOC angewendet werden (so viel Zeit wie möglich).
request.type_filling=ORDER_FILLING_IOC;Ja, zu einem Preis, der nicht schlechter ist als der im Optionsschein angegebene, wenn nicht rechtzeitig, dann
wird nichts gekauft (verkauft).
In diesem Fall sollte die Füllmethode des Auftrags IOC anwenden (so viel Zeit wie möglich).
Dieser Ansatz ist falsch, da verschiedene Zeichen unterschiedliche Fülltypen haben können.
Dieser Ansatz ist falsch, denn verschiedene Zeichen können verschiedene Arten von Füllungen haben.
Und?
Auf Charakteren mit hohem Füllstand wird FOK überhaupt nicht funktionieren (sie haben einfach keine Zeit).
Und was hatENUM_SYMBOL_CALC_MODE mit Ihrem Code zu tun?
Sie müssen nur nachsehen:
Das Ergebnis:
...
Und was hat Ihr Code mitENUM_SYMBOL_CALC_MODE zu tun?
Ich habe sofort überprüft, wie die Futures ausgefüllt werden, um den Besicherungsbetrag zu berechnen. Warum aber für verschiedene Futures unterschiedliche Füllmodi auf dem Handelsserver eingestellt sind, ist eine Frage für den Broker. Alles (für Futures) sollte gleich sein.
Und warum?
Die gleichen Vertragsarten müssen die gleichen Eigenschaften haben. Und hier ist die Antwort auf die Frage, warum manche Symbole andere Fülltypen haben als andere:
Im Fenster Market Watch wird eine Liste mit "defekten" Symbolen erstellt. Es hat sich herausgestellt, dass alle diese "defekten Symbole" den Handel deaktiviert haben.
Hallo,
Ich habe eine Frage zu dem Endgerät.
Wenn Sie zum Beispiel eine Bestellung mit dem Befehl OrderSend(...) senden, erhalten Sie eine Antwort true und ein Ticket,
und dann den Befehl OrderSelect(ticket) aufrufen, wird als Antwort false zurückgegeben
(in diesem Fall erscheint der Auftrag dann genau unter den aktiven Aufträgen).
Meine Frage ist: Ich hatte einen aktiven Auftrag. Ich habe eine falsche Antwort mit dem Befehl OrderSelect(ticket) erhalten,
Dann habe ich den Befehl HistoryOrderSelect(ticket) ausgeführt und wieder eine falsche Antwort erhalten (d. h. die Bestellung konnte nicht in der Historie erscheinen).
Hallo,
Ich habe eine Frage zu dem Endgerät.
Wenn Sie zum Beispiel eine Bestellung mit dem Befehl OrderSend(...) senden, erhalten Sie eine Antwort true und ein Ticket,
und dann den Befehl OrderSelect(ticket) aufrufen, wird als Antwort false zurückgegeben
(in diesem Fall erscheint der Auftrag dann genau unter den aktiven Aufträgen).
Meine Frage ist: Ich hatte einen aktiven Auftrag. Ich habe eine falsche Antwort mit dem Befehl OrderSelect(ticket) erhalten,
Dann habe ich den Befehl HistoryOrderSelect(ticket) ausgeführt und wieder eine falsche Antwort erhalten (d. h. die Bestellung konnte nicht in der Historie erscheinen).