Erreurs, bugs, questions - page 1804

 
fxsaber:
Le sommeil n'est nécessaire que lorsque le symbole n'est pas dans Market Watch. Pour tous les symboles qui sont dans Market Watch avant (et pendant) l'indicateur, aucun glissement n'est nécessaire.
Je vois.
 

1531 - les freins de Metaquotes-Demo n'ont pas disparu.

Demande et réponse

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 a pris 345 ms, et il a fallu 26 ms pour que la commande et l'offre correspondantes soient disponibles dans l'historique. C'est-à-dire une synchronisation très lente que je n'ai jamais vue auparavant.

Journal standard

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)

Le nouveau journal est maintenant en 1531 ! S'il vous plaît, expliquez dans ce cas, ce qui est quoi.

ZZY log presque immédiatement après le ralentissement.

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)

Ce sont des caractères demandés, donc les ordres de marché sont plus lents que les autres.

 

Les freins au 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)
HH L'examen du journal de bord du terminal n'a en rien donné ces lignes. J'ai dû les prendre directement dans le dossier.
 
Erreur [Pas de prix] sur place
2017.02.14 23:18:41.442 '5122740': failed instant buy 1.00 EURPLN at 4.30632 (deviation: 100) [No prices]

Comment se fait-il qu'il n'y ait pas de prix, il y a même un prix dans le journal ? !

Requête

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:
Erreur [Pas de prix] sur place
2017.02.14 23:18:41.442 '5122740': failed instant buy 1.00 EURPLN at 4.30632 (deviation: 100) [No prices]

Comment peut-il n'y avoir aucun prix, même dans le journal ? !

J'ai eu la même erreur récemment sur mon compte réel. J'ai essayé de passer un ordre mais le serveur ne l'a pas exécuté.

Je suis actuellement en communication avec le support technique d'une très célèbre entreprise sur L... (En ce moment je discute avec le support technique d'une société très connue L. (notre correspondance est confidentielle, je ne l'appellerai pas ainsi), ils m'expliquent que le temps d'exécution de leur serveur est le même pour les ordres venant de MT4, ils ont MT4, ils ont FIX et c'est environ 1-6 ms. Ensuite, je leur ai demandé quel est le temps passé sur 40-50 ms. lors de la négociation à partir de MT4, puisque du moment de l'envoi de l'ordre et d'obtenir une réponse environ 40-60 ms. Ils haussent les épaules de manière tolérante, comme s'ils cherchaient la latence du réseau, je leur dis que le ping est de 1 à 2 ms, et ils haussent à nouveau les épaules. La conclusion est que la partie serveur de MT4/5 est lente. Maintenant, de nouveaux journaux le montrent. Je comprends que le temps ne peut pas être "propre" comme FIX, mais au moins il devrait être du même ordre.
 
Andrey Dik:
SZY. En ce moment, je parle au support technique d'une très célèbre compagnie sur L... (Je ne sais pas pourquoi je ne les appelle pas, ils m'expliquent que le temps d'exécution sur leur serveur commercial est le même que pour les ordres sortant de MT4 (ils ont MT4) qui sont envoyés par FIX et est d'environ 1-6ms. Ensuite, je leur ai demandé quel est le temps passé sur 40-50 ms. lors de la négociation à partir de MT4, puisque du moment de l'envoi de l'ordre et d'obtenir une réponse environ 40-60 ms. Ils haussent les épaules de manière tolérante, comme s'ils cherchaient la latence du réseau, je leur dis que le ping est de 1 à 2 ms, et ils haussent à nouveau les épaules. La conclusion est que la partie serveur de MT4/5 est lente. Maintenant, de nouveaux journaux le montrent. Je comprends que le temps ne peut pas être "propre" comme FIX, mais au moins il devrait être du même ordre.

EN L... n'ont pas oublié que lorsqu'ils reçoivent un ordre dans leur système, le temps d'exécution dans le système lui-même et le renvoi de l'ordre sont minuscules. Ils peuvent obtenir l'ordre à partir du serveur MT4 ou via FIX et leurs autres API. Le serveur MT4 lui-même consacre plusieurs dizaines de ms à son traitement interne, qui n'est en aucun cas lié à l'exécution.

Il fut un temps où le temps minimum sur MT4 était de 150 ms. Il semble que quelque chose ait été sérieusement modifié, car il est devenu 40-60. Mais MT5 est nettement plus rapide. Maintenant je peux voir dans les journaux combien de temps le serveur a travaillé. Il ne reste plus qu'à comprendre à quoi est consacré l'essentiel du temps.

 
Les commentaires non pertinents pour ce sujet ont été déplacés vers "CopyClose : pourquoi une erreur ?".
 

Erreur de compilation : impossible d'accéder à 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, veuillez clarifier, y a-t-il des restrictions sur l'écriture des tampons de l'indicateur en dehors de la fonction OnCalculate() ? Tout sera-t-il écrit correctement en cas d'écriture de tampons dans les fonctions : OnTimer(), OnBookEvent(), OnChartEvent() ?

 
Alexey Kozitsyn:
@Slawa, veuillez clarifier, y a-t-il des restrictions sur l'écriture des tampons de l'indicateur en dehors de la fonction OnCalculate() ? En cas d'écriture de tampons dans les fonctions OnTimer(), OnBookEvent(), OnChartEvent(), tout sera-t-il toujours écrit correctement ?

Il n'y a pas de restrictions explicites. Vous pouvez l'essayer.

Mais vous pouvez rencontrer un problème de redistribution des tampons au moment de l'ajout d'une nouvelle barre (la redistribution est effectuée avec une réserve, donc pas à chaque nouvelle barre).

Tous les traitements sont effectués dans un seul fil, il ne devrait donc pas y avoir de collisions. Essayez
Raison: