Ein Blick auf das Terminal-Log für die UJPY-Modifikation zeigt:
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
Und im EA-Protokoll:
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
Ein Blick auf das Terminal-Log für die UJPY-Modifikation zeigt:
Und im EA-Protokoll:
D.h. Zeit14:31:08.354 -14:31:08.339= 15 ms, nicht 0
Dementsprechend die zweite Änderung:
14:31:09.377 -14:31:09.363 = 14 ms (im EA-Protokoll 15 ms)
Kann jemand erklären, wie es sein kann, dass die Installations-/Modifizierungszeit = 0 sein kann?
Es sieht nach einem Logikfehler aus.
Und aus dem Code geht nicht klar hervor, mit welchen "BuyOrder" und "SellOrder" Sie inOnTradeTransaction arbeiten.
Und dann ist da noch derGetTickCount() -Fehler von 16ms.
Verwerfen Sie sie zugunsten von Mikrosekunden (es gibt eine ähnliche Funktion).
Es sieht nach einem Fehler in der Logik aus.
Aus dem Code geht nicht hervor, mit welchen "BuyOrder" und "SellOrder" Sie in OnTradeTransaction arbeiten.
Es gibt nur eine BuyOrder und eine SellOrder im Expert Advisor
Die Ticketnummer wird zu Beginn überprüft
if( ( BuyOrder.ticket != 0 ) && ( trans.order == BuyOrder.ticket ) )
Und dann ist da noch der GetTickCount()-Fehler von 16ms.
Verwerfen Sie sie zugunsten von Mikrosekunden (es gibt eine ähnliche Funktion).
Andrey, von welchem Fehler sprechen Sie?
Zur Info: GetTickCount hat einen Fehler, der viel kleiner als 16 ms ist, Sie benutzen also nicht Windows 95.
P / S Ich werde versuchen,GetMicrosecondCount();
Andrei! Danke.
Sie hatten Recht - der Fehler von GetTickCount()
Es gibt nur eine BuyOrder und eine SellOrder im EA
Zu Beginn wird die Ticketnummer überprüft...
if( ( BuyOrder.ticket != 0 ) && ( trans.order == BuyOrder.ticket ) )
Es ist nicht offensichtlich, und es hat keinen Sinn, zu raten.
Andrey, von welchem Fehler sprechen Sie?
Zur Information: GetTickCount hat einen Fehler, der viel kleiner als 16 ms ist, Sie benutzen also nicht Windows 95.
P/S Ich werde es mitGetMicrosecondCount() versuchen;
Trotzdem tritt der Fehler immer wieder auf. Es ist besser, für solche Messungen µs zu verwenden.
Es ist nicht offensichtlich, und es hat keinen Sinn, zu raten.
Dennoch ist die Fehlermarge immer vorhanden. Es ist besser, für solche Messungen µs zu verwenden.
Ich habe bereits geschrieben, dass Sie mit der Fehlermarge Recht haben (siehe meinen vorherigen Beitrag).