Sergey Gorokhov (Все сообщения пользователя)

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 77 След.
Объемы с плавающей запятой в Quik 8 ?, Вопрос в техподдержку Quik.
 
Цитата
DVN написал:
Вопрос к техподдержке: это баг или это зачем-нибудь нужно?
Это особенность работы функции tostring, которую кстати Вы легко обнаружите в описании изменения на lua 5.3
И этот вопрос же много раз обсуждался на форуме
например
https://forum.quik.ru/messages/forum10/message45530/topic5479/#message45530
Изменился тип лимита depo_limits.limit_kind
 
Цитата
Олег написал:
Вопрос: как отследить данное изменение

никак не отследить, это брокер поменял схему лимитирования.
По идее он должен был как-то уведомить своих клиентов.

Цитата
Олег написал:
или может вообще обойтись без строгой проверки по limit_kind. Брать допустим все limit_kind>0 по бумаге и искать текущий остаток не равный 0. Будет так работать или есть подводные камни?

работать будет, но ведь не все режимы торгов лимитируются в Т+, это следует учесть в логике.
Createsource и смена сессии
 
Цитата
Старатель написал:
К сожалению, у вас так и останутся вопросы пока, наконец, вы не поймёте, что ds:Size() не обращается напрямую к серверу, а возвращает количество свечей на рабочем месте.

Вот именно что ds:Size() не обращается напрямую к серверу.
И как раз таки именно Вам надо это понять.
ds:Size смотрит что в терминале и как раз таки для решения задачи проверки полученных данных ее и надо использовать, ровно это Вы и делаете.
Вы же предлагаете добавить не проверку полученных данных, а того что есть на сервере, даже Ваша функция так названа "Чё_Есть_На_Сервере_Брокера"
А теперь еще раз прочитайте что я Вам сказал:
Цитата
Функция которая лезет на сервер для проверки того что есть на сервере, никак не может одновременно смотреть на клиента.

очевидно, что раз мы говорим про сервер, то функция производит к нему обращение типа "запрос есть чо?" и ей абсолютно все равно что есть на клиенте.
Вы же говорите о том что "nil должен возвращаться до того, как клиент получил информацию с сервера."
от куда функция должна знать получил что то клиент или нет?
Сервер совершенно точно не сможет ей ответить, ибо биты, они, ведь, не мгновенно передаются, понимаете?

В связи с чем возникает резонный вопрос, в какой ситуации сервер (именно сервер а не терминал) должен ответить nil функции "Чё_Есть_На_Сервере_Брокера" на ее запрос?
И Вы так и не дали вразумительного ответа на этот вопрос.

забудьте вообще про клиента, поставьте себя на место сервера.
К серверу пришел запрос на data_source, он отправляет клиенту ответ в виде кучи запрашиваемых свечек или пусто если свечей нет.
Понятно что отправка занимает время, но со стороны сервера это сотые доли секунд, дальше весь путь занимает сеть до клиента и т.п.
Допустим до клиента весь пакет еще не дошел и сервер получил запрос "Чё_Есть_На_Сервере_Брокера", по Вашей логике он должен вернуть nil т.к. до клиента полный пакет еще не дошел.
Но от куда сервер должен знать что до клиента пакет не дошел? Да ни от куда, потому что клиент не сообщает серверу что он получил пакет. Связь в этом месте односторонняя.
Следовательно сервер не сможет в описанной ситуации ответить nil.

Ровно это и имелось ввиду под фразой из моей цитаты.
ну не может запрос на сервер одноременно смотреть на клиента.
Обновление пользовательской таблицы/окна
 
Цитата
Старатель написал:
Я давно заприметил функцию UpdateRow в QLua. Что это за функция такая, что она делает?
Это старая не публичная функция которая появилась в терминале версии 6.6.
К сожалению зачем она была добавлена уже никто не вспомнит, возможно для каких-то специфичных проектов.
Раз релиза ее не было, значит и использовать ее не следует.
Createsource и смена сессии
 
Старатель,
Простите но Вы говорите ерунду и перемешиваете одни ситуации с другими вообще не понимая между ними разницы.
Это так к слову.
Если по делу, у Вас есть конкретное предложение по введению функции.
И суть этого предложения как раз и вызывает вопросы.
В том числе, чем оно отличается от предложения зарегистрированного 3года назад.
Если ничем, то и регистрировать повторное пожелание не имеет смысла.
Createsource и смена сессии
 
Цитата
Nikolay написал:
Мы же сейчас говорим не про аналоговое телевидение, а про асинхронную передачу дискретного потока данных.В момент заказа данных есть историчесике данные, это все что есть до этого момента времени. Это срез данных на момент времени. Он один.Мы начинаем отдавать этот массив. Да, параллельно появляются новые данные. Но в какой-то момент времени мы будем в окрестности границы множества, и в этот момент вы отдаете остаток исторических данных и пришедшее новое (с момента начала передачи) до конца выборки всего массива данных. Опять, это момент, срез времени, с точки зрения наблюдателя он один. Пока не посмотрим на новые данные для наблюдателя их еще нет.Если Вы говорите, что именно в этот момент пришли новые данных и как-бы данные уже не все, то это как раз не проблема, т.к. это будет уже колбек по новым данным, истрия уже загружена.

В данном случае, телевидение как раз таки больше всего подходит под пример.
допустим сайт первого канала, там идет online поток трансляции в реальном времени. Вот Вы вдруг захотели скачать от туда информацию.
Сразу возникает проблема того что скачка будет идти вечно.  т.е. нет такого понятия как "все данные загружены"
Если же говорить про архивные данные, то Вы и так уже сейчас можете определить что "все архивные данные загружены" без каких-либо доработок
Createsource и смена сессии
 
Цитата
Старатель написал:
nil - это, когда вы запрашиваете DS:Чё_Есть_На_Сервере_Брокера() до того, как клиент получил информацию с сервера. Биты, они, ведь, не мгновенно передаются, понимаете?
В самом определении уже видна логическая ошибка.
Функция которая лезет на сервер для проверки того что есть на сервере, никак не может одновременно смотреть на клиента.
Функция такая взяла залезла на сервер, посмотрела что там есть и вернула клиенту какой-то результат, без какого-либо участия клиента.
false - понятно, на сервере инструмент есть но по нему нет данных
true - тоже понятно, на сервере инструмент есть и по нему данные есть
nil - все еще не понятно, допустим "во всех остальных случаях", включая "инструмента нет", но сразу возникает вопрос, а если инструмент спустя мгновение возьмет и появится? Инструменты же добавляются на сервер не сразу с ходу, а по мере подключения шлюзов
И даже более того, на западных шлюзах инструменты могут появиться прям посреди сессии.
как быть?
Createsource и смена сессии
 
Nikolay,
давайте еще раз.
Мы говорим про условия постоянного появления свежих данных
Постоянного, понимаете? Как телевизор который непрерывно показывает разные программы.
Там нет такого понятия как "последний" пакет данных.
Createsource и смена сессии
 
Старатель,
Вы сейчас про "все данные загружены" или про nil?
Createsource и смена сессии
 
Nikolay,
дайте определение фразе "все данные загружены" в условиях непрерывного поступления данных, тогда подумаем над реализацией.
А если серьезно то этому вопросу уже десятки лет, никто так и не смог нормально ответить, то такое "все данные загружены"
Вот вы заказали свечки, на момент их заказа было 100шт, а когда получили последнюю 100 свечку, уже появилась 101 шт, это считается "все данные загружены"?
Установка QUIK на Linux под Wine, Проблемы с актуальными на сегодняшний день версиями
 
Цитата
Евгений написал:
multipurpose
на сколько нам известно multipurpose  не работает на Linux
Как очистить данные в setCell, Как очистить данные в setCell по условию и как правильно прочитать данные из getClassSecurities("SPBFUT"),используя getParamEx.На ум приходить только {"RIM0","SiM0"}
 
InsertRow(t_id, -1)
Createsource и смена сессии
 
Цитата
Старатель написал:
Последние два поста я вам пишу о ситуации, когда задан валидный инструмент, но графика нет по нему.
В такой ситуации должен возвращать пустые значения.

т.е. сейчас пустые значения возвращаются и по делу и не по делу
когда исправим это, ожидается что пустые значения будут только по делу, т.е. как раз когда инструмент валиден, а данных нет.
это и будет Ваше false - нет свечей
если значение не пустые, начит true - свечи есть
про nil не понятно, при каких обстоятельствах он по Вашему должен проявляться.
и не понятно, как сервер должен понять что информация "обязательно" будет, ведь Вы сами сказали что мы не про машину времени.
Createsource и смена сессии
 
Цитата
Старатель написал:
А как понять, что сервер уже вернул эти пустые значения? Они ведь у вас по дефолту и так возвращаются. Пусть, скажет, что у него нет свечей, чтоб не ждать понапрасну.
Было же сказано что это ошибка
Createsource и смена сессии
 
Старатель,
По идее он должен вернуть пустые значения, разве нет?
Createsource и смена сессии
 
s_mike@rambler.ru,
Михаил,
Да и сейчас мы надеемся что большая часть этих кейсов или даже все будут закрыты.
Не могу ответить уверенно т.к. исправление еще не вышло.
Createsource и смена сессии
 
Цитата
s_mike@rambler.ru написал:
сейчас, когда терминал не может внятно сказать, удачно ли он подписался на котировку,
Да и это ошибка, которую мы уже изучили и уже признали.

Цитата
s_mike@rambler.ru написал:
нет возможности отследить, почему нет котировок. Или нет свечей в принципе,
да такой возможности нет, и сам сервер этого не знает.
От куда серверу знать будут ли торги по инструменту или трейдеры вообще ничего сегодня не купят?
никто этого знать не может
и сервер тоже не может.

Цитата
s_mike@rambler.ru написал:
или они ещё не получены, или подписка не прошла.
Это та же тема что и первый пункт про неправильный статус createdatasource?
Если так то ответ уже был.
Createsource и смена сессии
 
s_mike@rambler.ru,
Не понятно причем тут это, речь же была про подписку а не про свечи.
Свечи да могут быть обрезаны с лева, нумерация при этом сдвинется.
Createsource и смена сессии
 
Цитата
Сергей написал:
По размышлению возник вопрос, а зачем вообще при дисконнекте закрывать потоки, созданные createdatasource()? Они автоматом разве не закроются? Что вообще произойдет с открытым потоком, если соединение разорвется, а затем восстановится?

Терминал QUIK автоматом закроет поток если он не используется.
При реконнекте подписка не теряется.
Отладка QUIK 8.6
 
Антон (band),
Вообще то вопрос был к Андрей, а не к Вам.
Отладка QUIK 8.6
 
Андрей,
Вы же сами пишите "Аналогичная ошибка" к теме про падения.
Если у Вас терминал не падает, это уже далеко совсем не "аналогичная" ошибка
К сожалению, по описанию проблемы, нам не удалось воспроизвести ситуацию.
Просьба добавить логирование событий в Ваш код.
При повторении проблемы прислать нам архив всей папки с терминалом QUIK (без ключей доступа), Ваш скрипт, и полученный лог файл
индикатор Price Channel, не могу получить корректные данные., верхняя линия - "upper", нижняя "lower"?
 
Максим,
Уточните о каком инструменте идет речь и какая версия терминала QUIK?
У нас проблема (на нашем коде) не воспроизводится
Как очистить данные в setCell, Как очистить данные в setCell по условию и как правильно прочитать данные из getClassSecurities("SPBFUT"),используя getParamEx.На ум приходить только {"RIM0","SiM0"}
 
psih,

Если вопрос в том как строку разбить по частям и перебрать эти части по очереди, то используйте следующий цикл:
Код
      for sec_code in string.gmatch(sec_list, "([^,]+)") do --перебираем инструменты по очереди.

      end   
Как очистить данные в setCell, Как очистить данные в setCell по условию и как правильно прочитать данные из getClassSecurities("SPBFUT"),используя getParamEx.На ум приходить только {"RIM0","SiM0"}
 
psih,

Вопрос не понятен.
Вы хотите удалить строку в GUI таблице? (тут речь про таблицу которую Вы видите глазами в терминале)
Или удалить значение из массива? (тут речь НЕ про визуальную таблицу, а про Lua таблицы table)
Или удалить значение из середины строки? (getClassSecurities ведь возвращает строку)
Createsource и смена сессии
 
Проблема изучается. Постараемся в ближайшее время дать ответ.
Отладка QUIK 8.6
 
Антон (band),
и
Андрей,

Если у Вас терминал падает с дампом, нам требуется получить этот самый дамп на адрес quiksupport@arqatech.com
Quik 8.5 не освобождается память
 
Anton,
Проблема изучается. Постараемся в ближайшее время дать ответ.
Как очистить данные в setCell, Как очистить данные в setCell по условию и как правильно прочитать данные из getClassSecurities("SPBFUT"),используя getParamEx.На ум приходить только {"RIM0","SiM0"}
 
Здравствуйте,
Для очистки значения в ячейке, нужно передать ему пустое значение соответствующее типу данных.
Для строковых типов, пустым является "", для числовых 0.
Пример:
SetCell(t_id, row, 1, "")
SetCell(t_id, row, 2, tostring(""),0)
Quik 8.5 не освобождается память
 
Цитата
Anton написал:
Однако, если бросить ошибку в теле скрипта или в OnInit, по-прежнему выпадем без очистки. С этим можно жить, конечно, отложить ошибку до мейна ровно три строчки, но непорядочек все же. Тем более, в отличие от ошибок в колбеках, в этот момент мейн еще не создан, следовательно, жестко прибивать поток мейна не придется, тут теоретически можно допилить до красоты.
Можете привести пример кода на котором проблема воспроизводится?
lua 5.3 не открывает заявки...
 
Здравствуйте,
Для уточнения причин отклонения транзакции Вы можете посмотреть ответ на транзакцию.
Догадываемся что причина в неверно указанной цене
данный вопрос уже обсуждался на нашем форуме:
https://forum.quik.ru/messages/forum10/message44474/topic5319
https://forum.quik.ru/messages/forum10/message45530/topic5479
Уведомление о необходимости обновления торговых терминалов в связи с изменениями на срочном рынке Московской биржи, Список проблем при работе устаревших версий QUIK после обновления торговой системы срочного рынка МБ
 
Цитата
Futurum написал:
Раньше, например, при перемещении заявки в sendTransaction в качестве "FIRST_ORDER_NUMBER" можно было передать переведенный в строку полученный из таблицы заявок номер order_num. Когда номер заявки станет 19-значным, что-то надо поменять в этой схеме?

На старых терминалах Вы просто не сможете передать номер по указанному способу.
Требуется либо обновить терминал до 8.5 или выше
Либо брать номер не из таблицы заявок, а из ответа на транзакцию, вырезав его из текста самого ответа.

Цитата
Futurum написал:
А если просто отправить заявку, ничего в старом коде менять не нужно, поскольку в этом случае номер заявки не используется?
Да верно
Ограничение 50 транзакций в секунду
 
Цитата
Михаил Е написал:
Возможно Sergey Gorokhov - сможете объяснить как хотят транзакции между квиком и сервером
Вопрос слишком общий для того чтобы можно было дать на него предметный ответ.
Легко можем ответить что они ходят по TCP протоколу, и ответ будет вписываться в вопрос.
Однако, что-то подсказывает что вы не это хотите услышать, тогда что?
Цитата
Михаил Е написал:
и как замеряется этот интервал - 50 транзакций в секунду?
Интервал замеряется сервером QUIK по времени получения транзакций.
Ключевая особенность как раз в том что время получения транзакции это далеко не то же самое что время ее отправки до сервера.
И да swerg, прав, проблема может возникать при буферизации.
Почтой ответили более подробно.
Скрипт прекращает работу, а не должен, Скрипт прекращает работу по непонятной причине, как ее выявить?
 
Sergey Denegin,
Приведите пример кода.
И уточните версию терминала на которой воспроизводится проблема.
Скрипт прекращает работу, а не должен, Скрипт прекращает работу по непонятной причине, как ее выявить?
 
Цитата
Иван Ру написал:
Как в такой ситуации определить причину неожиданной остановки скрипта?

Добавить в скрипт логирование всего, и по факту остановки смотреть что было последним.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Сергей,

Цитата
The vararg system changed from the pseudo-argument arg with a table with the extra arguments to the vararg expression. (See compile-time option LUA_COMPAT_VARARG in luaconf.h.)

т.е. надо заменить arg
например так:
Код
function ConvertValue(...)
   local arg = {...}
   arg.n = select('#', ...)
   for i = 1, arg.n do
      -- do something arg[i]
   end
end
Хочу уточнить по поводу функции OnCleanUp
 
Цитата
Александр написал:
Не понятно, что значит приходит новый класс.
Например если брокер запустил шлюз, он отправляет классы на сервер.
Вы к тому времени уже давно подключены к серверу.
В результате к Вам приедут классы которых при подключении еще не было.

Цитата
Александр написал:
По логике после прихода колбека OnCleanUp в системе нет инструментов, значит и нет классов.
А причем тут OnCleanUp? вопрос же был про onConnected.

Цитата
Александр написал:
И при приходе нового класса, должен вызываться колбек onConnected с флагом = false? Я это так понял. Или я не верно понимаю?

Вам привели конкретную цитату из документации где ровно это и сказано.
Хочу уточнить по поводу функции OnCleanUp
 
Цитата
Александр написал:
1. Можно в будущих версиях добавить колбек для мониторинга изменения в таблице инструметов (securities), OnSecurity?
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.

Цитата
Александр написал:
2. Объясните назначение flag=false в OnConnected?

А что не понятно из документации?
Цитата
Если в течение торгового дня терминал получает новый класс, то функция вызывается еще раз, при этом параметр вызова flag принимает значение «false».
Хочу уточнить по поводу функции OnCleanUp
 
Александр,

Таблица инструментов (securities) грузится самой первой, в связи с чем время ее загрузки минимально.
Определить точно когда она загружена не представляется возможным т.к. сервер не передает такого признака.
Проверить количество инструментов в таблице можно функцией getNumberOf, если количество перестало обновляться можно судить о том что имеющаяся информация загружена.
Однако, новые инструменты могут появиться и после подключения к серверу, даже посреди торгов, так что этот метод нельзя назвать надежным.
Узнать будут ли такие появления или нет, тоже нельзя, т.к. нет способа увидеть что будет в будущем.
Хочу уточнить по поводу функции OnCleanUp
 
Да
Хочу уточнить по поводу функции OnCleanUp
 
Цитата
Александр написал:
1. Означает ли это, что после вызова функции OnCleanUp все таблицы очищены, в том числе таблица инструментов?
Да.

Цитата
Александр написал:
2. Какие действия необходимо предпринять, когда происходит событие OnCleanUp
Это зависит от логики Вашего скрипта.

Цитата
Александр написал:
3. При смене сервера квик происходит перезагрузка всех данных? Или некоторых таблиц?

Происходит перезаказ всех торговых данных и данных о клиенте.
Если говорить про историю графиков, то она не обнуляется.

Цитата
Александр написал:
4. Смена пользователя ведет к перегрузке всех данных? Или некоторых таблиц?
всех торговых данных и данных о клиенте.

Цитата
Александр написал:
5. Что происходит при смене сессии?
Меняется сессия. Простым языком можно считать что все начинается с нуля.
Прошу пояснений про получение цены
 
Александр,
На самом деле, заказ данных  после CreateDataSource  происходит независимо от заданного коллбэка.
Для данных на основании обезличенных сделок будут получаться все данные,
Для данных ТТТ в зависимости от настроек терминала для получения ТТТ, т.е. если получение пропущенных данных выключено, то будут доступны только новые данные ТТТ.
Запись в файл с одновременным чтением из другой программы?
 
PF,
Присланной части кода не достаточно для понимания.
Пришлите нам полный код на quiksupport@arqatech.com
Вопрос про Сallback-и и их потерю
 
Иван,
не слушайте тех кто не знает что говорит.
Индикатор уровней совпадения цен
 
Здравствуйте,

При типе графика "линия" рисуется непрерывная линия. а в местах где нет значений она не прерывается, просто рисуется до следующей точки.
Варианта два:
Укажите тип графика - точка, тогда будете видеть точки там где они действительно есть
рисуйте несколько разных линий.
Запись в файл с одновременным чтением из другой программы?
 
PF,

Здравствуйте,
Уточните версию терминала,
Приложите код описывающий запись в файл
Функция getCandlesByIndex() и закрытие свечки
 
Иван,
Для этого нужно понять что сделок больше не будет.
А этого никто не может знать, т.к. в будущее никто смотреть не умеет.

Нужно либо ждать появления новой свечи, либо проверять текущее время.
Либо использовать оба варианта сразу.
Библиотека lua выгружается раньше чем dll
 
Александр,
Проблема изучается. Постараемся в ближайшее время дать ответ.
Предопределенные значения в Настройках
 
Цитата
Максим написал:
не работают


такой возможности нет
Идентификатор для метки
 
Цитата
Иван написал:
Как понял из документации можно создать только метку, нельзя добавить горизонтальную линию к пример...?
Метка может быть не только текстом, но и картинкой, что мешает нарисовать картинку в виде линии?

Цитата
Иван написал:
Как отследить и как их не дублировать?
Можно конечно сделать какой-нибудь файл куда сохранять ID меток, а потом при запуске эти параметры считывать, но проще удалять все метки и рисовать по новой при каждом запуске скрипта.

Цитата
Иван написал:
2) - можно ли в созданном индикаторе добавить две линии на график с возможностью их перетаскивания вверх/вниз как стоп-лосс?,  
Количество меток на графике не ограничено, если речь об этом.
Метки двигать можно, считывать их положение тоже.
так что ничего не мешает реализовать задуманное
Библиотека lua выгружается раньше чем dll
 
Цитата
Александр написал:
Да последняя версия, которая на ftp находится.
"последняя" это какая?
Просьба ответить четко какой номер версии у Вас сейчас, посмотреть можно в заголовке главного окна терминала.
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 77 След.
Наверх