Si nous regardons le journal du terminal pour la modification UJPY, nous voyons :
2016.01.1414:31:08.339 Trades 'xxxxx': modify order #25815313 sell limit 5.00 UJPY-3.16 at 118.23 sl: 0.00 tp: 0.00 -> 118.21, sl: 0.00 tp: 0.002016.01.1414:31:08.347 Trades 'xxxxx': modify order #25815313 sell limit 5.00 UJPY-3.16 at 118.23 sl: 0.00 tp: 0.00 -> 118.21, sl: 0.00 tp: 0.00 placed for execution in8 ms
2016.01.1414:31:09.363 Trades 'xxxxx': modify order #25815313 sell limit 5.00 UJPY-3.16 at 118.21 sl: 0.00 tp: 0.00 -> 118.03, sl: 0.00 tp: 0.002016.01.1414:31:09.370 Trades 'xxxxx': modify order #25815313 sell limit 5.00 UJPY-3.16 at 118.21 sl: 0.00 tp: 0.00 -> 118.03, sl: 0.00 tp: 0.00 placed for execution in8 ms
Et dans le journal de l'EA :
2016.01.1414:31:08.354 Forts_trader (UJPY-3.16,H1) OnTradeTransaction: Sell ордер был модифицирован за 0 ms
2016.01.1414:31:09.377 Forts_trader (UJPY-3.16,H1) OnTradeTransaction: Sell ордер был модифицирован за 15 ms
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Si nous regardons le journal du terminal pour la modification UJPY, nous voyons :
Et dans le journal de l'EA :
C'est-à-dire que le temps14:31:08.354 -14:31:08.339= 15 ms, et non 0.
En conséquence, la deuxième modification :
14:31:09.377 -14:31:09.363 = 14 ms (dans le journal d'EA 15 ms)
Quelqu'un peut-il expliquer comment il est possible que le temps d'installation/modification soit = 0 ? ??
Ça ressemble à une erreur de logique.
Le code n'indique pas clairement avec quels "BuyOrder" et "SellOrder" vous travaillez dansOnTradeTransaction.
Et puis il y a l'erreurGetTickCount() de 16ms.
Jetez-la au profit des micro-secondes (il existe une fonction similaire).
Ça ressemble à une erreur de logique.
Le code n'indique pas clairement avec quels "BuyOrder" et "SellOrder" vous travaillez dans OnTradeTransaction.
Il n'y a qu'un seul ordre d'achat et un seul ordre de vente dans le conseiller expert.
Le numéro du ticket est vérifié au début
si( ( BuyOrder.ticket != 0 ) && ( trans.order == BuyOrder.ticket ) )
Et puis il y a l'erreur GetTickCount() de 16ms.
Jetez-la au profit des micro-secondes (il existe une fonction similaire).
Andrey, de quelle erreur parlez-vous ?
Pour info : GetTickCount a une erreur bien plus petite que 16 ms, vous n'utilisez pas Windows 95.
P / S Je vais essayerGetMicrosecondCount();
Andrei ! Merci.
Vous aviez raison - l'erreur de GetTickCount()
Il n'y a qu'un BuyOrder et un SellOrder dans l'EA.
Et le numéro du ticket est vérifié au début...
si( ( BuyOrder.ticket != 0 ) && ( trans.order == BuyOrder.ticket ) )
Ce n'est pas évident, et il ne sert à rien de deviner.
Andrey, de quelle erreur parlez-vous ?
Pour information : GetTickCount a une erreur bien inférieure à 16 ms, vous n'utilisez pas Windows 95.
P/S Je vais essayer avecGetMicrosecondCount();
Néanmoins, l'erreur apparaît constamment. Il est préférable d'utiliser des µs pour de telles mesures.
Ce n'est pas évident, et il ne sert à rien de deviner.
Néanmoins, la marge d'erreur est toujours présente. Il est préférable d'utiliser des µs pour de telles mesures.
J'ai déjà écrit que vous avez raison au sujet de la marge d'erreur (voir mon message précédent).