Fehler, Irrtümer, Fragen - Seite 1804

 
Kommentare, die sich nicht auf dieses Thema beziehen, wurden nach "Fragen von Neulingen zu MQL4, Hilfe und Diskussion über Algorithmen und Codes" verschoben.
 
fxsaber:
Der Ruhezustand wird nur benötigt, wenn das Symbol nicht in Market Watch ist. Für alle Symbole, die vor (und während) des Indikators in Market Watch sind, werden keine Zettel benötigt.
Ich verstehe.
 

1531 - die Metaquotes-Demo-Bremsen sind nicht verschwunden.

Anfrage und Antwort

Request.action = TRADE_ACTION_DEAL (1)
Request.magic = 0
Request.order = 0
Request.symbol = #KO
Request.volume = 1.0
Request.price = 40.31
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_BUY (0)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment = My Position
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 117613087
Result.order = 133997293
Result.volume = 1.0
Result.price = 40.31
Result.bid = 40.28
Result.ask = 40.31
Result.comment = Request executed 345.781 + 26.356 ms
Result.request_id = 5712
Result.retcode_external = 0

OrderSend dauerte 345 ms, und es dauerte 26 ms, bis der entsprechende Auftrag und das Geschäft in der Historie verfügbar waren. D.h. eine sehr langsame Synchronisation, die ich noch nie gesehen habe.

Standard Log

2017.02.14 22:26:46.767 Trades  '5122740': prices for #KO 1.00
2017.02.14 22:26:46.852 Trades  '5122740': accepted prices for #KO 1.00
2017.02.14 22:26:46.852 Trades  '5122740': answer prices for #KO 1.00 40.28 / 40.31 in 86.046 ms (0.190 ms on server)
2017.02.14 22:26:46.852 Trades  '5122740': request buy 1.00 #KO at 40.31
2017.02.14 22:26:47.107 Trades  '5122740': accepted request buy 1.00 #KO at 40.31
2017.02.14 22:26:47.107 Trades  '5122740': deal #117613087 buy 1.00 #KO at 40.31 done (based on order #133997293)
2017.02.14 22:26:47.107 Trades  '5122740': order #133997293 buy 1.00 / 1.00 #KO at 40.31 done in 345.709 ms (3.022 ms on server)

Das neue Logbuch befindet sich jetzt im Jahr 1531! Bitte erklären Sie in diesem Fall, was was ist.

ZZY log fast unmittelbar nach der Verlangsamung.

2017.02.14 22:26:47.433 Trades  '5122740': prices for #KFT 1.00
2017.02.14 22:26:47.503 Trades  '5122740': accepted prices for #KFT 1.00
2017.02.14 22:26:47.506 Trades  '5122740': answer prices for #KFT 1.00 49.17 / 49.20 in 70.980 ms (4.166 ms on server)
2017.02.14 22:26:47.506 Trades  '5122740': request buy 1.00 #KFT at 49.20
2017.02.14 22:26:47.583 Trades  '5122740': accepted request buy 1.00 #KFT at 49.20
2017.02.14 22:26:47.583 Trades  '5122740': deal #117613092 buy 1.00 #KFT at 49.20 done (based on order #133997299)
2017.02.14 22:26:47.583 Trades  '5122740': order #133997299 buy 1.00 / 1.00 #KFT at 49.20 done in 149.304 ms (3.015 ms on server)

Dies sind angeforderte Zeichen, daher sind die Marktaufträge langsamer als andere.

 

Die Bremsen von TRADE_ACTION_REMOVE.

Request.action = TRADE_ACTION_REMOVE (8)
Request.magic = 0
Request.order = 134003202
Request.symbol =
Request.volume = 0.0
Request.price = 0.0
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 0
Request.type = ORDER_TYPE_BUY (0)
Request.type_filling = ORDER_FILLING_FOK (0)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment =
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 0
Result.order = 134003202
Result.volume = 0.0
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = Request executed 290.089 + 0.005 ms
Result.request_id = 10078
Result.retcode_external = 0
FL      0       23:02:46.797    Trades  '5122740': buy limit 1.00 Si-3.17 at 56288
GG      0       23:02:46.849    Trades  '5122740': accepted buy limit 1.00 Si-3.17 at 56288
PR      0       23:02:46.852    Trades  '5122740': order #134003202 buy limit 1.00 / 1.00 Si-3.17 at market done in 54.423 ms (0.342 ms on server)
PR      0       23:02:46.854    Trades  '5122740': cancel order #134003202 buy limit 1.00 Si-3.17 at 56288
LL      0       23:02:47.142    Trades  '5122740': accepted cancel order #134003202 buy limit 1.00 Si-3.17 at 56288
CE      0       23:02:47.144    Trades  '5122740': cancel #134003202 buy limit 1.00 Si-3.17 at market done in 290.050 ms (1.400 ms on server)
Ein Blick in das Logbuch des Terminals ergab diese Zeilen in keiner Weise. Ich musste sie direkt aus der Datei übernehmen.
 
Fehler [Keine Preise] vor Ort
2017.02.14 23:18:41.442 '5122740': failed instant buy 1.00 EURPLN at 4.30632 (deviation: 100) [No prices]

Wie kann es sein, dass es keinen Preis gibt, dass es sogar einen Preis im Protokoll gibt?!

Abfrage

2017.02.14 23:18:41.442 Request.action = TRADE_ACTION_DEAL (1)
2017.02.14 23:18:41.442 Request.magic = 0
2017.02.14 23:18:41.442 Request.order = 0
2017.02.14 23:18:41.442 Request.symbol = EURPLN
2017.02.14 23:18:41.442 Request.volume = 1.0
2017.02.14 23:18:41.442 Request.price = 4.30632
2017.02.14 23:18:41.442 Request.stoplimit = 0.0
2017.02.14 23:18:41.442 Request.sl = 0.0
2017.02.14 23:18:41.442 Request.tp = 0.0
2017.02.14 23:18:41.442 Request.deviation = 100
2017.02.14 23:18:41.442 Request.type = ORDER_TYPE_BUY (0)
2017.02.14 23:18:41.442 Request.type_filling = ORDER_FILLING_RETURN (2)
2017.02.14 23:18:41.442 Request.type_time = ORDER_TIME_GTC (0)
2017.02.14 23:18:41.442 Request.expiration = 1970.01.01 00:00:00
2017.02.14 23:18:41.442 Request.comment = My Position
2017.02.14 23:18:41.442 Request.position = 0
2017.02.14 23:18:41.442 Request.position_by = 0
2017.02.14 23:18:41.442 Result.retcode = 10021
2017.02.14 23:18:41.442 Result.deal = 0
2017.02.14 23:18:41.442 Result.order = 0
2017.02.14 23:18:41.442 Result.volume = 0.0
2017.02.14 23:18:41.442 Result.price = 0.0
2017.02.14 23:18:41.442 Result.bid = 0.0
2017.02.14 23:18:41.442 Result.ask = 0.0
2017.02.14 23:18:41.442 Result.comment = No prices 0.028 + 0.000 ms
2017.02.14 23:18:41.442 Result.request_id = 0
2017.02.14 23:18:41.442 Result.retcode_external = 0
2017.02.14 23:18:41.442
2017.02.14 23:18:41.442 SymbolInfoDouble(Symb,::SYMBOL_BID) = 4.30151
2017.02.14 23:18:41.442 SymbolInfoDouble(Symb,::SYMBOL_ASK) = 4.30632
 
fxsaber:
Fehler [Keine Preise] vor Ort
2017.02.14 23:18:41.442 '5122740': failed instant buy 1.00 EURPLN at 4.30632 (deviation: 100) [No prices]

Wie kann es sein, dass es keine Preise gibt, nicht einmal im Logbuch?!

Den gleichen Fehler hatte ich vor kurzem bei meinem echten Konto. Ich habe versucht, eine Bestellung aufzugeben, aber der Server hat sie nicht ausgeführt.

Ich kommuniziere derzeit mit dem technischen Support eines sehr bekannten Unternehmens auf L... Im Moment chatte ich mit dem technischen Support einer sehr bekannten Firma L. (unsere Korrespondenz ist vertraulich, ich werde sie nicht so nennen), sie erklären, dass die Ausführungszeit auf ihrem Handelsserver die gleiche ist für ausgehende Aufträge von MT4 (sie haben MT4), die über FIX gesendet werden und etwa 1-6ms beträgt. Dann fragte ich sie, was ist die Zeit auf 40-50 ms verbracht. beim Handel von MT4, da von dem Moment des Sendens der Bestellung und eine Antwort über 40-60 ms. Sie zucken tolerant mit den Schultern, als ob sie auf die Netzwerklatenz achten würden, ich sage ihnen, dass der Ping 1-2ms beträgt, und sie zucken wieder mit den Schultern. Die Schlussfolgerung ist, dass der Serverteil von MT4/5 langsam ist. Jetzt zeigen es neue Protokolle. Ich verstehe, dass die Zeit nicht "sauber" sein kann wie FIX, aber zumindest sollte sie in der gleichen Reihenfolge sein.
 
Andrey Dik:
SZY: Im Moment spreche ich mit dem technischen Support eines sehr bekannten Unternehmens in L... (Ich weiß nicht, warum ich sie nicht anrufe, sie erklären, dass die Ausführungszeit auf ihrem Handelsserver die gleiche ist wie für Aufträge, die von MT4 ausgehen (sie haben MT4), die über FIX gesendet werden, und etwa 1-6 ms beträgt. Dann fragte ich sie, was ist die Zeit auf 40-50 ms verbracht. beim Handel von MT4, da von dem Moment des Sendens der Bestellung und eine Antwort über 40-60 ms. Sie zucken tolerant mit den Schultern, als ob sie auf die Netzwerklatenz achten würden, ich sage ihnen, dass der Ping 1-2ms beträgt, und sie zucken wieder mit den Schultern. Die Schlussfolgerung ist, dass der Serverteil von MT4/5 langsam ist. Jetzt zeigen es neue Protokolle. Ich verstehe, dass die Zeit nicht "sauber" sein kann wie FIX, aber zumindest sollte sie in der gleichen Reihenfolge sein.

IN L... hatten im Hinterkopf, dass die Ausführungszeit im System selbst und bei der Rücksendung eines Auftrags verschwindend gering ist, wenn er in ihrem System eingeht. Sie können die Order vom MT4-Server oder über FIX und ihre anderen APIs erhalten. Der MT4-Server selbst verwendet viele Dutzend ms für seine interne Verarbeitung, die in keiner Weise mit der Ausführung verbunden ist.

Es gab eine Zeit, da betrug die Mindestzeit auf MT4 150 ms. Es scheint, dass etwas ernsthaft verändert wurde, denn es ist 40-60 geworden. Aber MT5 ist spürbar schneller. Jetzt kann ich in den Protokollen sehen, wie viel Zeit der Server gearbeitet hat. Jetzt muss man nur noch verstehen, wofür die meiste Zeit aufgewendet wird.

 
Kommentare, die für dieses Thema nicht relevant sind, wurden nach "CopyClose why an error?".
 

Kompilierungsfehler: kein Zugriff auf f() //2

typedef void (*fn)();
#import "Test.ex5"
        void f(); //1
#import
void f() {} //2
void OnStart()
{
        fn g1 = Test::f; //нормально
        fn g2 =       f; //Error: 'f' - cannot resolve function address
}
 
@Slawa, bitte klären, gibt es irgendwelche Einschränkungen für das Schreiben der Indikatorpuffer außerhalb der Funktion OnCalculate()? Wird beim Schreiben von Puffern in den Funktionen OnTimer(), OnBookEvent(), OnChartEvent() alles korrekt geschrieben?