RussianInvestments / invest-api-go-sdk

SDK для работы с API Инвестиций
Apache License 2.0
39 stars 11 forks source link

Неточность таймера #16

Closed poliagos closed 3 months ago

poliagos commented 4 months ago

Таймер ожидает до времени срабатывания событий START и STOP используя отсчет по системным часам, которые неизбежно имеют некоторую неточность. Если в процессе ожидания выполнится синхронизация системного времени с NTP-сервером, то окончится окончание (по локальным часам) уже не точно в заданное время, а немного раньше или позже. В примере ниже событие STOP пришло на несколько миллисекунд раньше, чем нужно, в результате тут же снова незапланированно сработало START (cancelAhead = 1 минута).

2024-04-15T09:59:59.559+0300    INFO    timer   start trading session, remaining time = 8h39m59.4400182s
2024-04-15T09:59:59.559+0300    DEBUG   buy got event = 1 (investgo.START)
2024-04-15T09:59:59.561+0300    INFO    buy MOEX trade session started!
...
2024-04-15T18:38:58.681+0300    DEBUG   buy got event = 2 (investgo.STOP)
2024-04-15T18:38:58.681+0300    INFO    buy MOEX trade session ends
...
2024-04-15T18:38:58.714+0300    INFO    timer   start trading session, remaining time = 1m0.2852115s
2024-04-15T18:38:58.714+0300    DEBUG   buy got event = 1 (investgo.START)
2024-04-15T18:38:58.715+0300    INFO    buy MOEX trade session started!

Пулл реквест для исправления данного бага https://github.com/RussianInvestments/invest-api-go-sdk/pull/15

jstalex commented 3 months ago

Здравствуйте, смержил