Счётчик числа сделок в секунду по одному тикеру

Страницы: 1 2 3 4 След.
RSS
Счётчик числа сделок в секунду по одному тикеру
 
Решил выделить из другой темы: https://forum.quik.ru/forum10/topic536/

Сам код:
Скрытый текст
В общем, бывают моменты - когда он в течении продолжительного времени вполне стабильно и правильно считает, но потом - "всё портится". Такое ощущение, что это как-то связано с кешированием или докачкой данных.
если бы код "был неправильным" - он бы даже частично правильно не считал.

У кого есть какие идеи?
 
хорошо бы увидеть код(алгоритм), а то с нуля как-то лень начинать.
А вот покритиковать  чужой код ( то бишь дать идею) -это пожалуйста.
 
Цитата
Николай Камынин пишет:
хорошо бы увидеть код(алгоритм), а то с нуля как-то лень начинать.
а вы разве не заметили спойлер?
 
в общем, пока приходит на ум, что одно из: "время" или "число сделок" - уже изменилось, а другое - соответственно - нет. В таком случае, как задать правильно условие (с учётом специфики OnParam)?
 
"Программа / Сохранение данных / Получать пропущенные данные" - галочка включена?
 
давайте сразу договоримся: "Без галочек".

Я являюсь последовательным сторонником того, что скрипт должен сам решать и управлять потоком нужных ему данных, а не так как щас - непонятно в какой последовательности и в каком количестве понаставлено куча галок, да ещё и забыта половина. Это не работа.
 
Чтобы устранить проблему нужно сначала понять причину ее возникновения.
 
если уж "арка" с галками ничего не хочет делать по этому поводу: https://forum.quik.ru/messages/forum10/message4992/topic536/#message4992

в таком случае, моя задача обеспечить в своём скрипте, как говорится полны иммунитет от всех этих галочек. -> т.е. добится стабильности, вопреки.
 
если бы задача была такой просецкой - я бы наверно её здесь не приводил.
 
Цитата
Дмитрий пишет:
"Программа / Сохранение данных / Получать пропущенные данные" - галочка включена?
конкретно по этой "галке" - она у меня всегда включена.
 
 
 
Скорей всего изредка приходят опоздавшие обновления ТТП, в которых время или количество сделок отстали от текущих значений.
Попробуйте сделать проверку - если число сделок стало меньше, чем было в предыдущий раз, и время меньше предыдущего или равно ему - то просто не учитывайте пришедшие значения.
 
но мы отклонились:
Цитата
sam063rus пишет:
в общем, пока приходит на ум, что одно и з: "время" или "число сделок" - уже изменилось, а другое - соответственно - нет. В таком случае, как задать правильно условие (с учётом специфики OnParam)?
 
Цитата
Дмитрий пишет:
Скорей всего изредка приходят опоздавшие обновления ТТП, в которых время или количество сделок отстали от текущих значений.
Попробуйте сделать проверку - если число сделок стало меньше, чем было в предыдущий раз, и время меньше предыдущего или равно ему - то просто не учитывайте пришедшие значения.
ну в принципе и я о том же
 
Просто если бы та галка не была включена, то причина проблема скорей всего была бы в чем-то другом.
 
Цитата
sam063rus пишет:
но потом - "всё портится"
А в чём, собственно, выражается это "всё портится"?
Надо делать так, как надо. А как не надо - делать не надо.
 
пояявляются совершенно непонятые взятые "с потолка" отсчёты. Потом, вроде нормализуется, потом - опять.
 
загрузите скрипт - посмотрите. просто листинг здесь приводить - он получится длинным.
 
Приведите часть листинга с
Цитата
sam063rus пишет:
совершенно непонятые взятые "с потолка" отсчёты
Надо делать так, как надо. А как не надо - делать не надо.
 
он выводится у меня в комбобоксе квика функцией: message

поэтому это малось проблематично.
 
"Сообщения / системные сообщения / таблица сообщений", которую можно сохранить в файл или вывести через ДДЕ в эксель
 
сами напросились:
Скрытый текст

Скрытый текст
 
Таблицу Всех Сделок - не привожу - она у вас и так есть. У себя - я её отфильтровал условным форматированием по: Бумага = SiM5
 
последняя редакция скрипта:
Скрытый текст
 
Надо найти отличия?
Цитата
sam063rus пишет:
сами напросились
sam063rus, вы одолжение нам делаете или что? Вы просили помощи. Так извольте привести необходимые данные.
Пока вопрос ваш не понятен.
Надо делать так, как надо. А как не надо - делать не надо.
 
как уже писал ранее - это всего лишь "винтик". никаким "граалем" тут и не пахнет.
Впоследствии, как удастся наладить стабильную реализацию с помощью коллбека - буду пытаться реализовать тоже самое без коллбеков. Что-нибудь на основе CreateDataSource etc.
 
Цитата
Старатель пишет:
Надо найти отличия?
Цитата
sam063rus пишет:
сами напросились
sam063rus , вы одолжение нам делаете или что? Вы просили помощи. Так извольте привести необходимые данные.
Пока вопрос ваш не понятен.
имелось ввиду, что проще было это всё смотреть и анализировать у себя в квике - на то скрипт и дан, а не через форум.
 
Цитата
sam063rus пишет:
имелось ввиду, что проще было это всё смотреть и анализировать у себя в квике - на то скрипт и дан, а не через форум.
Что анализировать-то? Вы можете привести листинг со строками, где "всё портится"?
Сидеть с запущенным скриптом перед терминалом и часами ждать неизвестно чего, как-то не хочется.
Надо делать так, как надо. А как не надо - делать не надо.
 
Что значит портится? Число сделок уменьшается? Или еще какие-то несоответствия, которые можно описать формально?
Тогда выведя в эксель таблицу, которую вы поместили тут в виде картинки, легко можно найти с помощью простой формулы среди множества строк именно те, где видна такая ситуация.
 
в разные промежутки времени, число сделок в ТВС и число сделок в скрипте - не соответствует по времени времени (ни на инкремент по времени ни на декремент)
 
Это нормально, т.к. в скрипте берутся данные из ТТП, а они представляют всего лишь временные срезы информации о числе сделок и прочих параметрах, которые формируются через определенные промежутки времени.
А сделки в ТВС поступают в отдельном потоке, никак не синхронизированном с потоком данных ТТП.
 
остаётся тогда вопрос: Как быть? :))
 
Цитата
Дмитрий пишет:
Это нормально, т.к. в скрипте берутся данные из ТТП, а они представляют всего лишь временные срезы информации о числе сделок и прочих параметрах, которые формируются через определенные промежутки времени.
А сделки в ТВС поступают в отдельном потоке, никак не синхронизированном с потоком данных ТТП.
с другой стороны, тут можно не согласиться - бо как за основу взято именно серверное время
 
Брать информацию либо из ТТП в OnParam, либо из ТВС в OnAllTrade
И не пытаться сопоставлять данные из этих двух источников, тем более на лету.
А если и сопоставлять, то сравнивать их с учетом какой-то заранее заданной допустимой погрешности.
 
чувствуется. что из всего форума к данной теме, интерес ограничивается только тремя людьми, - что печально. Хотя, анализ таких тонкостей позволил бы на порядок повысить понимание QLUA.
 
Цитата
Дмитрий пишет:
А если и сопоставлять, то сравнивать их с учетом какой-то заранее заданной допустимой погрешности.
пробовал и так и так (в предыдущих топиках).
насчётпогрешности - в корне не согласен - это живые деньги и они, как известно: любят счёт.
 
к тому же, интересует - именно "на лету", а не на истории.
 
Цитата
sam063rus пишет:
с другой стороны, тут можно не согласиться - бо как за основу взято именно серверное время
Данные для ТВС и для ТТП с одним и тем же серверным временем могут фактически прийти в терминал в разное время (думаю, рассогласование в секунду, а то и больше, тут не будет редкостью).
Можно пытаться сопоставлять эти данные уже потом, анализируя историю из ТВС и Таблицы изменений параметров, но все равно синхронизировать их будет весьма проблематично, т.к. время записей в Таблице изменений параметров приводится лишь с точностью до целой секунды.
С учетом этого, стоило бы наверное выразить пожелание, чтобы разработчики добавили ко времени записей в Таблице изменений параметров еще и милли- или даже микросекунды.
 
задам провокационный тогда вопрос: серверное время (время в поле "TIME" в ТТП) == биржевое (время заключения сделки)?
 
если "Да" - то, должна быть полная синхронизация по этому параметру между ТТП иТВС (бо как на самом деле - источник один - биржевой шлюз)
 
sam063rus, как я помню, в OnAllTrade вы считаете количество сделок за 1 секунду.
Здесь же вы считаете разницу между двумя неизвестными величинами
Код
act_numTrades - last_numTrades
где единственным условием является то, что, возможно, эти величины относятся к "временным срезам" на разных секундах.
Надо делать так, как надо. А как не надо - делать не надо.
 
Другими словами, между этими величинами не обязательно будеn разница ровно в 1 сек. И не обязательно они будут принадлежать к началу этих секунд, как вы делаете в OnAllTrade
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Старатель пишет:
sam063rus , как я помню, в OnAllTrade вы считаете количество сделок за 1 секунду.
Здесь же вы считаете разницу между двумя неизвестными величинами
Код
 act_numTrades - last_numTrades 
где единственным условием является то, что, возможно, эти величины относятся к "временным срезам" на разных секундах.
просто именно благодаря данной особенности ТТП - я нашёл решение, как попытаться уйти от тех проблем, которые у меня были с OnAllTrade (в ТТП - уже есть счётчик сделок - оставалось только воспользоваться предоставленной возможностью его опроса через фиксированный интервал)
 
Цитата
Старатель пишет:
Другими словами, между этими величинами не обязательно будеn разница ровно в 1 сек. И не обязательно они будут принадлежать к началу этих секунд, как вы делаете в OnAllTrade
будет ровно одна секунда - т.к. в рамках одного тикера - последовательность сохраняется (что ранее было уже проверено в другой теме)
 
скажу по другому, думаю, у меня бы вообще не возникло проблем, используй я и дальше OnAllTrade, если бы сделки на фортс были с микросекундной точностью
 
В любом случае, если у Вас (обращение ко всем пользователям) есть свои примеры кода, как можно сделать счётчик - буду искренне рад.
 
Цитата
sam063rus пишет:
задам провокационный тогда вопрос: серверное время (время в поле "TIME" в ТТП) == биржевое (время заключения сделки)?
Это время последней сделки. Наверняка, это время биржи.
 
Цитата
Дмитрий пишет:
Цитата
sam063rus пишет:
задам провокационный тогда вопрос: серверное время (время в поле "TIME" в ТТП) == биржевое (время заключения сделки)?
Это время последней сделки. Наверняка, это время биржи.
стало быть, сравнение ТВС иТТП по этому параметру имеет место быть.
 
код увидел.
Мне читать все топики лень, поэтому я выскажусь, возможно что кто-то уже это сказал.
1) Работа через onParam - самый плохой вариант. Там и хранилище очень тяжелое и данный колбек на каждый чих срабатывает
при этом если срез не пришел и не актуальный то он вообще потеряется.
Т е через этот колбек Вы обязательно недосчитаетесь сделок когда-нибудь
---------------------------------
2) Поэтому данную задачу полагаю надо решать через onAllTrade
По крайней мере решение через onAllTrade будет полным, но возможно что есть и более быстрое но не полное.
Поэтому  решение через onAllTrade должно быть базовым а остальные,
если они будут быстрее надо сравнивать с базовым.

--------------------------------
Поэтому предлагаю написать вариант через onAllTrade
и изложить претензии к такому решению (желательно с примерами)
Страницы: 1 2 3 4 След.
Читают тему
Наверх