не соответствует время

Страницы: 1
RSS
не соответствует время
 
Перед выставлением ряда заявок запоминаю время t = os.time().
Далее после делаю "проверку" всех сделок из табл Сделок, время которых позже t :

for e = 0,getNumberOf("trades") - 1 do
    if os.time(getItem("trades",e).datetime)>= t and getItem("trades",e).sec_code ==name then

Так вот: скрипт не находит некоторые сделки, т.к. время в таблице Сделок меньше, чем t , которое было сделано ранее (перед выставлением заявки).
Вопрос: 1) какое отличие между t = os.time() и временем в таблице сделок.
2) постоянная ли это величина
3) как  это обойти? (
 
если я не ошибаюсь, os.time Это локальное время вашего компа.
а время в таблице сделок это время сервера брокера.
а есть еще время сервера биржи
 
А как их можно синхронизовать?
 
Цитата
Юрий пишет:
А как их можно синхронизовать?
Узнать смещение часового пояса можно так

Рассинхронизация времени вашего компьютера с вреенем биржи или брокера обозримыми способами не лечится.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
извиняюсь, что непотеме )))
но я перед торгами, каждый день провожу синхронизацию локального времени - с московским штатными средствами Windows.
 
Цитата
Юрий пишет:
А как их можно синхронизовать?
и намного время не совпадает?
 
Да нет: 1-2 сек
 
всё уже придумано до нас (или вас...  :) )) ):

Ask to GOOGLE:

site:moex.com синхронизация времени

<на случай если непонятно: наберите поисковый запрос выделенный жирным шрифтом в гугле>
 
Сделал по совету sam063rus (синхронизация времени причем с разных серверов пробовал). На глаз видно разница 0,5 сек Квика и компа. А потом еще ИНТЕРЕСНЕЕ: на компе стоит 2 платформы Квика одного брокера и у них тоже секунды тикают в разницу пол секунды. Вот прикол! Жаль, придется решать задачи другими способами.
К разработчикам: зарегистрируйте пожелание получения времени (типа os.time() ) именно платформы (конечно если это время будет совпадать со временем в таблице сделок)
 
Вы выбрали какой-то удивительный способ поиска необработанных сделок (по локальному времени).  Понятно же, что это будет глючить. Используйте номер сделки для поиска последней обработанной сделки.
 
Я конечно не силен в программировании, да и логика насколько позволяет, так задачи и решаю. Просто у меня идет серия сделок и через номер сделки приходится создавать кучу доп кода (а оно же может лень, а может не хватает знаний). Понятно что все проблемы можно решить разными способами и я их решаю, но не иметь возможности получить точное время, согласно которого я могу ориентироваться для меня не понять.
 
Очень просто все можно понять, бирж - более чем одна, у каждой свое время, у сервера квика - свое. С чем и чего синхронизировать? С какой точностью (и почему именно с такой)?  
Допустим, у вас есть время сервера квика. Там забыли время перевести (осеннее / зимнее) , потом вспомнили, и перевели прямо во время торгов. И у вас робот позицию потерял, или что-то типа того? Ну смешно же ведь?
 
Спасибо за подсказку. Значит копать надо в другом месте.
 
Ну вот развели демагогию, а умный человек подсказал, что все действительно придумано до нас:
getInfoParam("SERVERTIME") - время сервера, а с миллисекундами:
в таблице «Таблица сделок» («trades») в datetime есть поле с миллисекундами и поле с микросекундами, т.е.
getItem(«trades»,e).datetime.ms и getItem(«trades»,e).datetime.mcs соответственно.
Вот и все.
 
Цитата
Юрий пишет:
Ну вот развели демагогию, а умный человек подсказал, что все действительно придумано до нас:
getInfoParam("SERVERTIME") - время сервера, а с миллисекундами:
в таблице «Таблица сделок» («trades») в datetime есть поле с миллисекундами и поле с микросекундами, т.е.
getItem(«trades»,e).datetime.ms и getItem(«trades»,e).datetime.mcs соответственно.
Вот и все.
Вам  это только кажется.

servertine - это время сервера. Время сделок идет по времени биржи. Они похожи, но не равны. А еще есть время доставки данных от брокера до вас.

Например, когда вы спрашиваете сервертиме, то получаете время в момент прихода запроса на сервер. Далее оно возвращается вам. Ничто не мешает его вам получить уже в следующей секунде.

Путь тупиковый. В идеальных условиях все будет более-менее нормально, чуть посложнее - и все рассыплется.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru пишет:
когда вы спрашиваете сервертиме, то получаете время в момент прихода запроса на сервер. Далее оно возвращается вам.
Никакой запрос никуда не отправляется. "SERVERTIME" вы получаете вместе с приходом параметров из ТТП. И оно корректируется на разницу времени, прошедшего с момента его прихода. А в остальном всё верно.
В этом легко убедиться, убрав из списков принимаемых параметров все "галки". Время сервера продолжит тикать синхронно с вашими часами. Но после переподключения к серверу "SERVERTIME" уже не отображается.
Надо делать так, как надо. А как не надо - делать не надо.
 
хорошо. Еще подскажите в таком случае:
1) скрипт запоминает время getInfoParam("SERVERTIME"), как я понимаю время последней сделки и т.д. из ТПП перед моими действиями
2) далее я что-то делаю
3) я обращаюсь к данным из таблицы, пусть Сделок (ведь моя сделка все равно будет не раньше чем придут данные из ТПП даже если это будет моя сделка), ссылаясь на время равное или более того, что запомнил SERVERTIME.

В этом случае все равно могут возникнуть проблемы из-за разницы времени биржи и сервера?

Если да, то может мне тогда брать из ТПП время последней сделки, ведь это уже будет время биржи?
 
Создать ярлык с параметрами:
%windir%\system32\w32tm.exe /resync /rediscover
Добавить в "Назначенные задания"
Страницы: 1
Читают тему
Наверх