philave (Автор тем)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Разница между SERVERTIME и LASTRECORDTIME
 
Как я понимаю SERVERTIME всегда больше или равен LASTRECORDTIME, но иногда разница между ними достигает довольно больших значений. Написал небольшой lua скрипт, который выдает эту разницу и в лог на максимуме записалось, например, такое сообщение:
Код
SERVERTIME=15:04:24, LASTRECORDTIME =15:04:19

Вопросы к поддержке quik:
1) Что означает эта разница в 5 секунд? Я не верю, что с 19 по 24 секунду не было ни одной сделки FORTS или ММВБ.
2) Если мне нужно время гарантирующее, что все сделки, совершенные на бирже ранее этого времени уже учтены в quik, нужно использовать LASTRECORDTIME? Или можно SERVERTIME?
Падение QUIK с 0xC0000005: Access violation
 
Проблема происходит в lua скрипте, который реализует заявки по волатильности для опционов. Скрипт запускает в main() таймер, который срабатывает через 500ms и пересчитывает новые цены лимитных заявок опционов в соответствии с текущей ценой фьючерса. Если цена для опциона изменилась, то заявка передвигается - делается sendTransaction (["ACTION"] = "MOVE_ORDERS"). Коллбэк на таймер срабатывает в том же потоке, что и main().

Также скрипт подписан на коллбэк OnTransReply для получения информации о передвижении заявки.

Для UI используется iup.
Версия QUIK: 7.5.0.72

Это скрипт корректно работает, но не долго. Где-то через 5 -20 минут QUIK падает с ошибкой:
Код
First-chance exception at 0x6D8AEEE2 (qlua.dll) in info.exe: 0xC0000005: Access violation reading location 0x8B0C77A3.

Я сделал трейсинг в скрипте, но проблема в том, что падение происходит в произвольном месте. Т.е. нет определенной точки в коде, которая приводит к ошибке. Падение происходит не в потоке обрабатывающим таймер, а в главном потоке QUIK, который вызывает коллбэки.  Т.е. что-то просто отваливается в самом QLUA.

Могу выслать сам код для того чтобы воспроизвести ошибку.

Фрагмент лога одного из падений (скрипт перед этим минут 20 нормально работал):
Код
main_timer:action_cb():1
main_timer:action_cb():2
recalcOrders():1
recalcOrders():2
recalcOrders():3
recalcOrders():4
recalcOrders():5
recalcOrders():6
recalcOrders():7
recalcOrders():8
recalcOrders():9
recalcOrders():10
recalcOrders():11
recalcOrders():12
recalcOrders():13
recalcOrders():14
recalcOrders():15
recalcOrders():16
recalcOrders():2
recalcOrders():3
recalcOrders():4
recalcOrders():5
recalcOrders():6
recalcOrders():7
recalcOrders():8
recalcOrders():9
recalcOrders():10
recalcOrders():11
recalcOrders():12
recalcOrders():13
recalcOrders():14
recalcOrders():15
recalcOrders():16
recalcOrders():2
recalcOrders():3
recalcOrders():4
recalcOrders():5
recalcOrders():6
recalcOrders():7
recalcOrders():8
recalcOrders():9
recalcOrders():10
recalcOrders():11
recalcOrders():12
recalcOrders():13
recalcOrders():14
recalcOrders():15
recalcOrders():16
recalcOrders():2
recalcOrders():3
recalcOrders():4
recalcOrders():5
recalcOrders():6
recalcOrders():7
recalcOrders():8
recalcOrders():9
recalcOrders():10
recalcOrders():11
recalcOrders():12
OnTransReply():begin
OnTransReply():end
recalcOrders():13
recalcOrders():14
recalcOrders():15
recalcOrders():16
recalcOrders():2
recalcOrders():3
recalcOrders():4
First-chance exception at 0x6D8AEEE2 (qlua.dll) in info.exe: 0xC0000005: Access violation reading location 0x8B0C77A3.
recalcOrders():5
Unhandled exception at 0x6D8AEEE2 (qlua.dll) in info.exe: 0xC000041D: An unhandled exception was encountered during a user callback.
 
The program '[852] info.exe' has exited with code 0 (0x0).



 
Страницы: 1
Наверх