Добрый день, прошу помочь с пониманием процесса получения цены.
1) Пробовал использовать getParamEx(class_code, sec_code, "last").param_valueЧем не устроил: выдает цену с задержкой (разнообразной). Я вызываю его раз в секунду, цена на графике уже изменилась, а getParamEx возвращает старое значение. Если запустить на выходных, выдает старую цену игнорируя изменения цены в не торговой сессии. Т.е. на графике инструмента у меня 10,14, но getParamEx выдает 9,98, как было во время торгов. Почему?
Стал разбираться с CreateDataSource. Почитал форум, возникли вопросы и хотелось бы ответов: правильно я понял или нет.
2) Чтобы один раз получить актуальные данные (при закрытых графиках) достаточно только
Код |
---|
ds_sber, error_desc = CreateDataSource("TQBR","SBER", INTERVAL_M5); |
или это не правильно, на удачу?
3) Чтобы в ds_sber ВСЕГДА были актуальные данные, нужно ОДИН РАЗ, именно из main() надо вызвать CreateDataSource+ SetEmptyCallback
Код |
---|
function main()ds_sber, error_desc = CreateDataSource("TQBR","SBER", INTERVAL_M5);ds_sber:SetEmptyCallback();sleep(5000); --ждем пока данные прилетятwhile IsRun doprice_sber=ds_sber:C(ds:Size());-- далее обработка цены-- т.к. подписаны, то будем всегда иметь актуальный набор свечей?sleep(1000);end;ds_sber:Close();end; |
после этого в любой момент работаю с последними данными в ds_sber? Все верно?
4) Какие будут последствия если при завершении скрипта не делать ds_sber:Close()
5) Можно как-то определять для интервала, например М30, что свеча закрылась и началась новая свеча?
6) У меня в цикле 1сек обсчитываются 10-20 инструментов ( массив ), инструменты меняются, т.е. статичные ds не сделать. Как правильно организовать запрос данных (свечей) в таком случае ?