Цитата | ||||
---|---|---|---|---|
Serge123 написал: Помнится, я уже спрашивал об уточнении док-ции по getQuoteLevel2... Надо, наконец уточнить: что возвращается в случае, если отсутствуют bid/offer? Это таблицы, поэтому логично возвращать nil. А в док-ции написано, что возвращается пустая строка. Если это так, то это бардак... Только что посмотрел описание этой функции в QLUA.chm (дата файла аж 2023 г.!) последней версии Quik. А между тем, ещё в 2016 г. запрос, якобы, начал рассматриваться: Видимо, придётся самостоятельно проверять, что там возвращается: nil (NULL или 0 на Си) или ссылка на "". Но чтобы это проверить, нужно ждать конца вечерней сессии в 23:50. Он выглядит так (2 варианта): LQDT 23:49:58.307148 1.7176 22500 S LQDT 23:49:58.424402 bids=4 1.7176/1179206774 1.7175/250690921 1.7174/500699896 1.7173/25069269 offers=4 1.7177/1537813336 1.7178/250179065 1.7179/500099511 1.7180/25340331 LQDT 23:49:58.959725 bids=4 1.7176/1179206578 1.7175/250690921 1.7174/500699896 1.7173/25069269 offers=4 1.7177/1537813336 1.7178/250179065 1.7179/500099511 1.7180/25340331 LQDT 23:50:02.061765 LQDT 23:49:57.962624 1.7186 4123207 S LQDT 23:49:58.135088 bids=4 1.7186/1617425408 1.7185/251421812 1.7184/500029766 1.7183/25120559 offers=4 1.7187/1717726036 1.7188/250272256 1.7189/500201784 1.7190/25105969 LQDT 23:50:00.054763 bids=4 1.7186/1617425408 1.7185/251312612 1.7184/500029766 1.7183/25120559 offers=4 1.7187/1717726036 1.7188/250272256 1.7189/500201784 1.7190/25105969 LQDT 23:50:02.097119 В последних строках как раз надо выяснить, что именно возвращает getQuoteLevel2. Кстати, если вы занимаетесь ставками и интересуетесь экспресс-ставками, рекомендую заглянуть на По идее, с этой целью можно также проверять строки bid_count, offer_count на символьный 0. И ещё: моя программка на обработку
Может быть, кто-то из программистов предложит ускорение? Я склоняюсь к тому, чтобы во время большой нагрузки на Quik не вызывать getQuoteLevel2, если с момента предыд. её вызова прошло мало времени. |
Проверять bid_count и offer_count на "0" — хорошая идея для надежной фильтрации. Также разумно минимизировать вызовы getQuoteLevel2 при высокой нагрузке, например, ставить таймаут между запросами — так вы сможете существенно снизить нагрузку на CPU и не потерять актуальность данных.
Что касается оптимизации скорости, к сожалению, getQuoteLevel2 — внутренняя функция Quik, и сильно ускорить её вызов с Lua сложно. Можно рассмотреть вариант кэширования данных и их обновления с определённым интервалом, а не при каждом событии.
В целом, ваш подход — адаптировать логику обработки под поведение функции, тщательно проверять возвращаемые значения и минимизировать лишние вызовы — наиболее практичный путь при работе с Quik и getQuoteLevel2.