Таблица всех сделок

Страницы: 1
RSS
Таблица всех сделок, Нужно обработать все сделки за последние 30 секунд
 
Добрый день.
Необходимо обработать все сделки за последние 30 секунд. Для этого буду перебирать ТВС с конца таблицы и прерывать цикл при выходе за пределы 30 секунд. Как лучше это реализовать? В каком виде нужно получать время в каждой из строк ТВС и с каким временем его сравнивать?
 
Цитата
sav 312 написал:
Как лучше это реализовать?
Сделать выборку через SearchItems и в функции fn добавить нужное условие.
При этом надо обязательно добавить условие на нужный класс, т.к. время на разных рынках может не совпадать друг с другом.

Цитата
sav 312 написал:
В каком виде нужно получать время в каждой из строк ТВС и с каким временем его сравнивать?
Проще всего перевести время в секунды и сравнить с текущим временем.
А вот с чем сравнивать, это уже сложнее.
Время os.time или os.date это время Вашего компьютера, которое вполне честно может не совпадать с временем биржи.
Время SERVERTIME из getInfoParam это время сервера QUIK, уже лучше, но только если Вы уверены в своем брокере и качестве интернет соединения, если не уверены, лучше не пытаться.
Остается два варианта, либо сравнивать со временем самой последней строки в ТВС, либо максимально точно синхронизировать время Вашего компьютера с временем биржи.
 
Цитата
Sergey Gorokhov написал:
Цитата
sav 312   написал:
Как лучше это реализовать?
Сделать выборку через SearchItems и в функции fn добавить нужное условие.
При этом надо обязательно добавить условие на нужный класс, т.к. время на разных рынках может не совпадать друг с другом.
Цитата
sav 312   написал:
В каком виде нужно получать время в каждой из строк ТВС и с каким временем его сравнивать?
Проще всего перевести время в секунды и сравнить с текущим временем.
А вот с чем сравнивать, это уже сложнее.
Время os.time или os.date это время Вашего компьютера, которое вполне честно может не совпадать с временем биржи.
Время SERVERTIME из getInfoParam это время сервера QUIK, уже лучше, но только если Вы уверены в своем брокере и качестве интернет соединения, если не уверены, лучше не пытаться.
Остается два варианта, либо сравнивать со временем самой последней строки в ТВС, либо максимально точно синхронизировать время Вашего компьютера с временем биржи.
Подскажите пожалуйста как перевести время из строки ТВС в секунды.
 
Цитата
sav 312 написал:
Подскажите пожалуйста как перевести время из строки ТВС в секунды.
Не понятно с чем возникла сложность.
Получить время можно из параметра datetime, там есть hour, min, sec
см документацию QLUA.chm глава "Структуры данных" - "Обезличенные сделки"

Далее умножаете часы на 3600
минуты на 60
и складываете полученную цифру с секундами.
 
Цитата
Sergey Gorokhov написал:
Цитата
sav 312   написал:
Подскажите пожалуйста как перевести время из строки ТВС в секунды.
Не понятно с чем возникла сложность.
Получить время можно из параметра datetime, там есть hour, min, sec
см документацию QLUA.chm глава "Структуры данных" - "Обезличенные сделки"

Далее умножаете часы на 3600
минуты на 60
и складываете полученную цифру с секундами.
Считал что есть более простой способ, чем на каждой строке ТВС делать пересчёт. К примеру os.time() сразу выдаёт время в секундах, вот и предположил, что можно из ТВС вытащить время сразу в нужном формате.
 
Цитата
sav 312 написал:
предположил, что можно из ТВС вытащить время сразу в нужном формате.
можно так:
Код
T = getItem ("all_trades", getNumberOf("all_trades")-1)
x=os.time(T.datetime)
 
Цитата
Sergey Gorokhov написал:
Цитата
sav 312   написал:
предположил, что можно из ТВС вытащить время сразу в нужном формате.
можно так:
Код
  T  =   getItem  ( "all_trades" ,  getNumberOf ( "all_trades" ) -  1 )
x =  os.time (T.datetime)  
Спасибо!  
 
Всем спасибо за подсказки. Все, что хотел - сделал. Сейчас возникает вопрос правильности размещения данного участка кода в самом скрипте.
Написал функцию, в которой при каждом изменениии в стакане сканируется ТВС за последние 30 секунд.
Правильно ли вызывать мою функцию из  OnQuote() или в OnQuote() нужно устанавливать флаг, а по нему вызывать мою функцию из main?
Можно ли использовать цикл в моей функции или его нужно вытаскивать в main?
Прошу не пинать начинающего, за возможно глупые вопросы))
 
sav 312,
По возможности тяжелые циклы лучше не использовать вне main. Т.к. всё кроме main крутится в основном потоке терминала.
А значит пока цикл не закончится новая информация в терминале не обработается.
 
Цитата
Sergey Gorokhov написал:
sav 312  ,
По возможности тяжелые циклы лучше не использовать вне main. Т.к. всё кроме main крутится в основном потоке терминала.
А значит пока цикл не закончится новая информация в терминале не обработается.
Все понял. Спасибо, Сергей.
Страницы: 1
Читают тему
Наверх