Здравствуйте! А до того как будет изменена документация, вы можете описать правила определения типа клиента, чтобы было понятно, какое все-таки значение должен содержать client_type для типа клиента МД?
Цитата
могут возникнуть сложности с определением типа клиента (чтобы понять, из какого параметра брать информацию о разрешении коротких продаж): я думал, что в параметре client_type STRING Тип клиента будет возвращено значение "МД", а на самом деле там стоит значение "4". Нигде не сказано, что типу клиента МД соответствует такое значение этого параметра.
То есть, хотелось бы понять - так и должно быть или это ошибка?
Добрый день. Насколько я понимаю, сейчас вся проблема в том, что время на тике указано с недостаточной точностью, чтобы строить таблицу истории с интервалом меньше секунды. Готовы зарегистрировать пожелание на доработку функции T() источника данных. Она будет возвращать кроме времени еще и номер "тика", который случился в эту секунду.
Там же чуть ниже есть Ваше, Сергей Горохов, сообщение:
Цитата
Будет добавлен порядковый номер тика. Как предложил Михаил.
Все это было заявлено вами как планируемая доработка вашего софта для решения проблемы невозможности построения таблицы истории значений двух и более параметров средствами QLua. Заявленная доработка в итоге была реализована и было добавлено поле Count. Однако значения, которые в нем возвращаются, не позволяют решить описанную выше проблему. Поэтому PFelix, я и latrop1 считаем, что данный факт является следствием ошибки в реализации заявленного вами функционала, приводящей к его фактической неработоспособности.
Egor Zaytsev пишет: Можете выложить Ваш код на котором воспроизводится проблема.
Добрый день! Неужели вы хотите поставить под сомнение факт существования данной проблемы? Как видно из всего написанного выше в данной ветке, проблему легко обнаружить даже без использования какого-либо кода. Причем описывалась подобная проблема еще раньше и другими пользователями (на старом форуме): http://forum-archive.quik.ru/forum/iwr/111108/?pagelength=100 Выше (уже в этой ветке нового форума) ваш коллега подтвердил, что попытка решить проблему невозможности точного воссоздания истории изменений двух и более различных параметров путем введения дополнительного поля count оказалась неудачной:
Цитата
Sergey Gorokhov пишет: Дмитрий , Да Вы правы. Боюсь что имеющимися средствами построить таблицу истории из двух и более параметров никак не получится.
latrop1 пишет: Кстати, была уже такая тема давно, но вот что-то не нашел (может еще на старом форуме), по проблеме: Сейчас по полю count невозможно состыковать значения отдельных параметров. Т.к. у разных параметров разное кол-во изменений count в пределах секунды. Если на тиковый график бросить пару параметров, напр, кол-во сделок и цену последней, то графики окажутся не корректно синхронизированными. Можете проверить сами.
latrop1 пишет: Вроде даже регистрировали пожелание на доработку.
Но ведь это тянет на ошибку, особенно в случае с рассинхронизацией графиков. Можете переквалифицировать доработку в ошибки и побыстрее поправить?
Присоединяюсь к пожеланию переквалифицировать доработку на исправление ошибок и побыстрее поправить.
Между тем прошло уже больше месяца с момента регистрации пожелания, а мы до сих пор даже не узнали о результатах его анализа:
Цитата
Sergey Gorokhov пишет: 20.03.2015 09:56:35
Здравствуйте!
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Меню "настройки / основные / сообщения", выбираете "сохранять за последние N дней". После этого при необходимости сообщения за прошлые дни можно будет просмотреть в таблице через меню "сообщения / системные сообщения / таблица сообщений..."
Zoya Vdovina пишет: На данный момент работ в этом направлении не ведётся.
А как же понимать ответ по поводу проблемы, описанной по этой ссылке: https://forum.quik.ru/forum1/topic58/ который был получен мною два месяца назад от вашей службы поддержки (от Егора Зайцева):
Цитата
Для того,чтобы гарантировано работал DDE сервер в вашем случае, необходим 64x разрядный Quik. Над эти мы тоже работаем.
Александр Сержанов пишет: какие настройки необходимо выполнить, чтобы линии, метки, каналы и т.д. сохранялись только для выбранного эмитента и не отображались при выборе другого эмитента
Сергей Радченко пишет: Колбек это способ увидеть нули и проверить данные еще раз
А вы знаете способ как определить с помощью колбэка не только полное отсутствие данных, но и момент окончания их загрузки, то есть когда с сервера получена последняя свеча?
Сергей Радченко пишет: лучше сделать так как правильно и надежно. Мой пример показал, что данные могут не поступать и лучше перестраховываться
А может мой способ и является правильным? Если мне нужны только данные, накопленные до момента вызова CreateDataSource, без последующих обновлений. А использование коллбэков сильно тормозит работу, если речь идет о получении данных по большому числу инструментов. В Вашем же случае проблема была в том, что вы пытались обращаться к данным еще до того, как терминал успел загрузить их с сервера, а использование коллбэков отнюдь не ускорит этот процесс.
Sergey Gorokhov пишет: Если в течении сессии график вообще не открывался, то CreateDataSource вообще не сработает в этом случае нужно заказать данные. Это можно сделать либо открыв окно с графиком, либо вызвав функцию ds:SetEmptyCallbac() один раз.
А я успешно получаю данные с использованием только CreateDataSource, без вызова SetEmptyCallback или SetUpdateCallback. Причем без них работает все гораздо быстрей. И при этом графики в терминале не открыты. Это "ошибка" в реализации QLua? Или все же так и должно быть?
Правда я проверяю эти данные только 1 раз. Вполне возможно, что после загрузки в терминал текущего состояния графика со всей историей, дальше без использования одной из последних двух функций новые свечки уже не будут поступать.
s_mike@rambler.ru пишет: И это тоже невозможно принципиально. Немного поразмыслив, Вы тоже придете к этому заключению.
Над этим размышлял не я один. И почему-то нам кажется, что возможно. Чего в принципе невозможного в том, чтобы зафиксировать количество записей в наиболее важных для пользователей таблицах сервера на момент установления соединения с терминалом и затем передать сведения о количестве этих записей на терминал пользователя?
s_mike@rambler.ru пишет: Поэтому. Склад В НИКАК не может сообщить складу С(курьером, который тоже едет не мгновенно), что ВСЕ помидоры, отгруженные со склада А, достигли склада С.Он просто этого не знает. И никакие технические ухищрения этому не помогут.Помидоры могут быть в пути между А и В. Более того, за время, когда курьер едет с соообщением об окончании помидоров, новая партия может быть уже отправлена.
Это все понятно. Никто не просит сообщать о помидорах, не доехавших до В. Люди хотят знать, сколько помидоров было на складе В (т.е. сколько записей в таблице на сервере брокера) только на момент подключения к нему терминала С. И нужно это потому, что процесс передачи данных от сервера (В) до терминала (С) сразу после подключения занимает некоторое время, причем неопределенное. В это время на терминал передаются в основном данные, накопленные сервером раньше, а не только что приехавшие с биржи. И люди хотят иметь механизм точного определения того, что данные, находившиеся на сервере брокера (В) на момент установления связи с терминалом (С), наконец-то загрузились с сервера на терминал.
Николай Бехтерев, советую вам оформлять свой код с отступами внутри циклов, а чтобы эти отступы не пропадали при размещении сообщения на форуме - пользоваться кнопочкой "оформление текста в виде кода". Иначе бывает трудно сходу вникнуть в логику работы вашего алгоритма.
Господа, вам не жалко времени на эти бесполезные дискуссии с троллем? По-другому я не могу назвать человека, который "подозревает" всех пишущих тут в том, что они работают в ARQA, даже не потрудившись посмотреть их сообщения в других ветках форума (а может все-таки потрудившись...?), из которых видно, что многие из отписавшихся здесь заняты на этом форуме отнюдь не прославлением QUIK'а. Если бы на форуме был модератор, то уже давно бы выставил здесь некоторым предупреждения за оффтоп и переход на личности. И мне, возможно тоже, за это сообщение :) Предлагаю больше не отвечать здесь на послания rozmin
Поскольку нас интересует только изменение текущих значений параметров, то можно наверное вместо тикового задать часовой интервал. Тогда память действительно почти не будет расходоваться.
Только что проверил - расходуется. Как минимум порядка 50 байт на одно изменение параметра. Иногда это может быть незаметно, но если отслеживать много параметров по нескольким фьючерсам, причем таких параметров, значения которых меняются очень часто (до 10 раз в секунду) - то расход памяти может достигать порядка 10 мегабайт на каждый параметр, и эту величину надо будет еще умножить на количество анализируемых фьючерсов.
Серж пишет: Не окажет ли это негативного влияния на производительность?
Сдается мне, что такой метод работы будет отжирать оперативную память на хранение отдельной истории за текущий день по каждому отслеживаемому параметру.
Из всего вышесказанного я понял, что от биржи приходят только значения параметров, по которым были зафиксированы изменения в промежутке между двумя интервалами времени (срезами). Можно ли в таком случае добавить в функцию OnParam(STRING class_code, STRING sec_code) еще один параметр, сообщающий, изменение значений каких именно параметров ТТП привело к вызову этой функции? Ведь в противном случае нам приходится лишний раз вызывать функцию getParamEx для получения значений каждого интересующего нас параметра и последующего анализа их значений. В итоге может оказаться, что интересующие нас параметры не изменились, но мы проделали в скрипте кучу ненужной работы и тем самым создали лишнюю нагрузку на систему.
sam063rus пишет: она получает пропущенные между срезами данные
Цитата
Sergey Gorokhov пишет: Раз в период, с биржи приезжает кучка параметров. Эта кучка отправляется от сервера клиенту.
Значит, в этой кучке содержатся не только текущие значения параметров, но и все их изменения, произошедшие за время с момента прихода предыдущей кучки?
Sergey Gorokhov пишет: Если по простом, например, до среза было 100 заявок, произошел срез он показал в таблице 100 заявок. Потом произошло увеличение стало 101 и тут же уменьшение, опять 100. Для программы это означает что данные изменились значит их нужно показать, вот он и показывает цифру 100.
Это понятно. Непонятно, как программа узнает об этих изменениях, если она получает данные только срезами, а эти изменения произошли в промежутке между срезами и в конечном счете на момент получения второго среза ничего не изменилось.
sam063rus пишет: есть лишь обычная программа-сервер, которая мониторит изменение биржевого потока и выдаёт его клиентам
Это надо понимать так, что когда речь идет о получении значений ТТП срезами, то это касается лишь передачи данных от сервера QUIK в терминал, в то время как сам сервер QUIK получает с биржи и отслеживает абсолютно все изменения этих параметров непрерывно, а не срезами?
Просто непонятно в таком случае, как система вообще узнает об изменении параметра, если она отслеживает значения параметров лишь срезами через определенные промежутки времени.
Дмитрий пишет: Но это произошло в промежутке между получением двух срезов ТТП, поэтому в итоге изменение значения этого параметра мы в терминале не увидим.
То есть получается, что, с одной стороны, в терминале нет данных о том, что параметр изменился. А с другой стороны они вроде бы в терминале есть, раз такая строка попадает в Таблицу истории значений параметров.
Sergey Gorokhov пишет: Таблица истории формируется на сервере QUIK опросом состояния параметров торгов через малые интервалы времени и может пропускать изменения параметров, следующие одно за другим в течение малого промежутка времени (например, несколько последовательных сделок по одному инструменту).
Это я видел. Отсюда лишь следует, что не все изменения значений параметров будут заметны пользователю. Опять же из этого никак не очевидно, что эти оставшиеся незамеченными изменения повлияют на появление новых (одинаковых) строк в Таблице истории значений параметров или Таблице изменений параметров.
Sergey Gorokhov пишет: Также на содержание таблицы и периодичность ее обновления влияют настройки получения данных описанные в п. Подготовка к работе . По умолчанию таблица обновляется 1 раз в секунду.
1) Это про Текущую таблицу параметров 2) Из этого никак явно не следует, что в Таблице истории значений параметров могут идти друг за другом полностью идентичные строки.
Sergey Gorokhov пишет: Если в течении этого периода, произошли изменения которые не изменили фактического значения, то в таблице истории Вы увидитедве визуально одинаковые строки. Банальный пример кто-то выставил заявку и тут же снял.
В документации об этом ничего не сказано, поэтому я и был озадачен...
Если после сделки изменялись другие параметры, а новых сделок не было, то появление нескольких строк с одинаковой информацией о сделке - это нормально. Вы ведь отслеживаете не только параметры сделок, но еще и другие.
Sergey Gorokhov пишет: Ведь никто не гарантирует что данные могут меняться только в сторону увеличения/уменьшения
Ну, если речь идет не о числовых значениях, а, например, о строковых, то да. Но речь ведь шла о полностью совпадающих значениях всех параметров. В таком случае мне непонятен принцип формирования этих таблиц...