ФОРТС. Вопросы по исполнению - страница 64

 

Если посмотреть лог терминала на модификацию UJPY, то видим:

2016.01.14 14: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.00
2016.01.14 14: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 in 8 ms
2016.01.14 14: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.00
2016.01.14 14: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 in 8 ms

А в логе советника:

2016.01.14 14:31:08.354 Forts_trader (UJPY-3.16,H1)     OnTradeTransaction: Sell ордер был модифицирован за 0 ms
2016.01.14 14:31:09.377 Forts_trader (UJPY-3.16,H1)     OnTradeTransaction: Sell ордер был модифицирован за 15 ms
 

Т.е время 14:31:08.354 - 14:31:08.339  = 15 мс, а не 0

Соответственно вторая модификация:

 14:31:09.377 - 14:31:09.363 = 14 мс (в логе советника 15 мс)

 
Mikhail Filimonov:

Может кто-нибудь объяснить как может быть такое, что время установки/модификации может быть = 0 ???

Похоже на ошибку в логике.

А из кода не понятно, с какими именно "BuyOrder" и "SellOrder" вы работаете в OnTradeTransaction.

 

А еще есть погрешность GetTickCount() в 16 мс.

Откажитесь от нее в пользу микро-секунд (есть аналогичная функция). 

 
Andrey Khatimlianskii:

Похоже на ошибку в логике.

А из кода не понятно, с какими именно "BuyOrder" и "SellOrder" вы работаете в OnTradeTransaction.

В советнике олько один BuyOrder и один SellOrder

Да и в начале номер билета проверяется... 

if ( ( BuyOrder.ticket != 0 ) && ( trans.order == BuyOrder.ticket ) ) 

 
Andrey Khatimlianskii:

А еще есть погрешность GetTickCount() в 16 мс.

Откажитесь от нее в пользу микро-секунд (есть аналогичная функция). 

Андрей, а о какой погрешности Вы говорите?

Renat Fatkhullin 2012.05.31 23:18     RU

Для информации: у GetTickCount погрешность сильно меньше 16 мс, не Windows 95 же используете. 

P/S щас попробую с GetMicrosecondCount(); 

 

Андрей! Спасибо. 

Вы оказались правы - погрешность GetTickCount()

2016.01.14 15:37:02.535 Forts_trader (UJPY-3.16,H1)     OnTradeTransaction: Sell ордер был установлен за 17466 mcs
2016.01.14 15:37:02.916 Forts_trader (UJPY-3.16,H1)     OnTradeTransaction: Sell ордер был модифицирован за 27860 mcs
2016.01.14 15:37:27.744 Forts_trader (UCHF-3.16,H1)     OnTradeTransaction: Buy ордер был установлен за 15879 mcs
2016.01.14 15:37:27.834 Forts_trader (UCHF-3.16,H1)     OnTradeTransaction: Buy ордер был модифицирован за 17645 mcs
2016.01.14 15:37:27.890 Forts_trader (UCHF-3.16,H1)     OnTradeTransaction: Buy ордер был модифицирован за 17926 mcs
2016.01.14 15:37:29.161 Forts_trader (UCAD-3.16,H1)     OnTradeTransaction: Buy ордер был установлен за 22780 mcs
2016.01.14 15:37:29.252 Forts_trader (UCAD-3.16,H1)     OnTradeTransaction: Buy ордер был модифицирован за 18094 mcs
2016.01.14 15:37:40.291 Forts_trader (TATN-3.16,H1)     OnTradeTransaction: Buy ордер был установлен за 2795167 mcs
2016.01.14 15:37:40.295 Forts_trader (TRNF-3.16,H1)     OnTradeTransaction: Buy ордер был установлен за 1734401 mcs
2016.01.14 15:37:40.410 Forts_trader (TRNF-3.16,H1)     OnTradeTransaction: Buy ордер был модифицирован за 26514 mcs
2016.01.14 15:37:41.402 Forts_trader (TRNF-3.16,H1)     OnTradeTransaction: Buy ордер был модифицирован за 17583 mcs
2016.01.14 15:38:00.597 Forts_scalper (RTS-3.16,M1)     OnTradeTransaction: Сделка совершена. Билет = 25818639
2016.01.14 15:38:31.216 Forts_scalper (RTS-3.16,M1)     OnTradeTransaction: Сделка совершена. Билет = 25818664
2016.01.14 15:38:31.252 Forts_scalper (RTS-3.16,M1)     OnTradeTransaction: Сделка совершена. Билет = 25818665
2016.01.14 15:38:31.644 Forts_scalper (RTS-3.16,M1)     OnTradeTransaction: Сделка совершена. Билет = 25818666
2016.01.14 15:38:31.647 Forts_scalper (RTS-3.16,M1)     OnTradeTransaction: Сделка совершена. Билет = 25818666
2016.01.14 15:38:36.818 Forts_trader (GOLD-3.16,M1)     OnTradeTransaction: Sell ордер был установлен за 15058 mcs
2016.01.14 15:38:37.104 Forts_trader (SNGP-3.16,H1)     OnTradeTransaction: Sell ордер был установлен за 17065 mcs
2016.01.14 15:38:43.401 Forts_trader (AUDU-3.16,H1)     OnTradeTransaction: Sell ордер был установлен за 18336 mcs
2016.01.14 15:38:44.280 Forts_trader (AUDU-3.16,H1)     OnTradeTransaction: Sell ордер был модифицирован за 22194 mcs
2016.01.14 15:38:45.282 Forts_trader (AUDU-3.16,H1)     OnTradeTransaction: Sell ордер был модифицирован за 18528 mcs
2016.01.14 15:39:49.657 Forts_scalper (RTS-3.16,M1)     OnTradeTransaction: Сделка совершена. Билет = 25818744
2016.01.14 15:39:50.465 Forts_trader (ROSN-3.16,H1)     OnTradeTransaction: Buy ордер был установлен за 606665 mcs
2016.01.14 15:39:50.579 Forts_trader (ROSN-3.16,H1)     OnTradeTransaction: Buy ордер был модифицирован за 66626 mcs
2016.01.14 15:40:28.718 Forts_trader (UJPY-3.16,H1)     OnTradeTransaction: Sell ордер был модифицирован за 21332 mcs
2016.01.14 15:40:33.802 Forts_trader (BR-2.16,M1)       OnTradeTransaction: Buy ордер был установлен за 15558 mcs
 
Mikhail Filimonov:

В советнике олько один BuyOrder и один SellOrder

Да и в начале номер билета проверяется... 

if ( ( BuyOrder.ticket != 0 ) && ( trans.order == BuyOrder.ticket ) ) 

Это не очевидно, а гадать смысла нет.

 

Mikhail Filimonov:

Андрей, а о какой погрешности Вы говорите?

Renat Fatkhullin 2012.05.31 23:18     RU

Для информации: у GetTickCount погрешность сильно меньше 16 мс, не Windows 95 же используете. 

P/S щас попробую с GetMicrosecondCount(); 

Тем не менее, погрешность постоянно проявляется. Для таких замеров лучше использовать мкс.

 
Andrey Khatimlianskii:

Это не очевидно, а гадать смысла нет.

 

Тем не менее, погрешность постоянно проявляется. Для таких замеров лучше использовать мкс.

Я же уже написал, что вы правы с погрешностью ( см. мой предыдущий пост)
 
Mikhail Filimonov:
Я же уже написал, что вы правы с погрешностью ( см. мой предыдущий пост)
Я увидел, мы просто одновременно их писали.
Причина обращения: