-Соединение установлено -Скрипт получает каждые данные изменившейся цены и дату/время и упаковывает в свечи по интервалу. -Предположим произошел дисконнект Квика. -Через 5 минут произошел опять коннект и данные опять начали приходить, но прежде, чем принимать после дисконнекта данные - нужно заполнить 5 минутный пропущенный промежуток. -А для этого, нужно как то определить, что произошел ре-коннект.
Quikos, 1. ЕСЛИ "скрипт получает каждые данные изменившейся цены и дату/время" ТО это таблица обезличенных сделок, т.е. один из самых тормознутых и глючных способов определения свечей. 2. ПОФИГ, произошёл ре-коннект или нет, имеем поступление новых данных, которые то ли уже приходили, то ли ещё нет, и определять нужно именно это. 3. На момент закрытия свечи НЕВОЗМОЖНО определить, все ли данные по ней уже поступили или часть их потерялась по дороге и, если так, имеем ещё одну проблему: являются ли пришедшие данные новыми или это дубль тех, которые уже были учтены при формировании свечи. 4. Скрипт по времени, полученным вместе с новыми данными, вполне способен определить, к какой именно свече они относятся, а потому нет никакой разницы между обработкой полученных после дисконнекта новых данных и "заполнением 5 минутного пропущенного промежутка". 5. Тыщу раз уж говорил, что особая точность в определении свечей не нужна, а потому на несколько порядков быстрее, надёжнее и, возможно, даже точнее считать их самостоятельно, периодическим опросом ТТТ, а не заниматься всеми этими глупостями. Ну, допустим, не было разрыва соединения, а там какой-нибудь клиринг идёт. И чего?
Владимир написал: Quikos, 1. ЕСЛИ "скрипт получает каждые данные изменившейся цены и дату/время" ТО это таблица обезличенных сделок, т.е. один из самых тормознутых и глючных способов определения свечей. 2. ПОФИГ, произошёл ре-коннект или нет, имеем поступление новых данных, которые то ли уже приходили, то ли ещё нет, и определять нужно именно это.
Нет - это SetUpdateCallback CreateDataSource.
Поэтому после ре-коннекта - мне нужно будет проверить всю приходящую таблицу на предмет пропущенных свечей - во время отсутствия коннекта и только после проверки и учета пропущенных данных - опять принимать данные изменившейся цены.
Quikos, Я когда-то спрашивал техподдержку, и ответ меня убил наповал: они считают свечи именно из ТОС, биржа транслирует только её. И уже на основании посчитанных ими свечей и работает вся эта глючная и тормознутая лабуда типа SetUpdateCallback или CreateDataSource или что там у них есть.
Повторяю: я считаю все свечи сам, причём не эту японскую дрянь, а как среднее арифметическое значений курса за период, считаю, что это даёт куда более достоверную информацию. Считаю именно опросом ТТТ, для десятков и сотен тикеров, по десятку таймфреймов у каждого, начиная с 10-секундных и кончая часовыми. Просто, быстро, надёжно, информативно, работает как часы вот уже несколько лет, прямо с момента создания, и плевать мне сто раз на все реконнекты и пропущенные данные. Зачем искать на свою задницу приключений?
Повторяю: я считаю все свечи сам, причём не эту японскую дрянь, а как среднее арифметическое значений курса за период, считаю, что это даёт куда более достоверную информацию. Считаю именно опросом ТТТ, для десятков и сотен тикеров, по десятку таймфреймов у каждого, начиная с 10-секундных и кончая часовыми. Просто, быстро, надёжно, информативно, работает как часы вот уже несколько лет, прямо с момента создания, и плевать мне сто раз на все реконнекты и пропущенные данные. Зачем искать на свою задницу приключений?
Вы почти убедили меня использовать таблицу обезличенных сделать и самом формировать временные свечи, но CerateDataSourse - все равно в некоторых случая придется использовать (правда не SetUpdatecallback) - чтобы получить историю свечей в случае, если я к примеру 1-2 дня не запускал терминал.
Владимир написал: Quikos, Я когда-то спрашивал техподдержку, и ответ меня убил наповал: они считают свечи именно из ТОС, биржа транслирует только её. И уже на основании посчитанных ими свечей и работает вся эта глючная и тормознутая лабуда типа SetUpdateCallback или CreateDataSource или что там у них есть.
Ха, вот нашел про Таблицу Обезличенных Сделок и OnAllTrade() - тут:https://forum.quik.ru/forum10/topic1610/ И вроде как это не совпадает с тем, что Вы написали:
Цитата
Nikolay Pavlov 1) Для срабатывания OnAllTrade() не обязательно должна быть открыта таблица обезличенных сделок, достаточно выполнить заказ обезличенных сделок в меню Система/Заказ данных/Поток обезличенных сделок. Сделать это можно вручную, проставив галочки на необходимых классах и отфильтровав инструменты, если это необходимо, или же непосредственно из скрипта Lua создав ТИКОВЫЙ источник данных для обезличенных сделок функцией CreateDataSource() и заказать их трансляцию выполнив метод SetEmptyCallback() для созданного источника данных.
Владимир написал: Quikos, Я когда-то спрашивал техподдержку, и ответ меня убил наповал: они считают свечи именно из ТОС, биржа транслирует только её. И уже на основании посчитанных ими свечей и работает вся эта глючная и тормознутая лабуда типа SetUpdateCallback или CreateDataSource или что там у них есть.
И далее из той же темы:
Цитата
2) Если создавать источник данных функцией CreateDataSource() НЕ по тиковому интервалу, а например по минутному, заказ обезличенных сделок не выполняется, т.к. с сервера QUIK заказываются непосредственно свечки;
Или Вы обманываете или Вас обманули или в той теме обманули.
Quikos, Я?! Да я КАТЕГОРИЧЕСКИ против использования ТОС!
Да, я когда-то хотел иметь дневные, недельные, месячные свечи, но давно отказался от этого - в первую очередь из-за поистине ЧУДОВИЩНОГО сервиса для их получения и, кроме того, они оказались не нужны: эффективность торговли на тяжёлых таймфреймах оказалась значительно ниже, чем на более скоростных. В настоящее время я торгую не дальше, чем на двухминутных свечах, и влияние этой торговли на порядок ниже, чем торговля на 10-секундных. Остальные таймфреймы справочные, для дополнительной информации, и для этой цели часовых свечей вполне достаточно. Раньше считал и более тяжёлые, но потом отменил.
Какая разница, таблица это или те же данные, полученные каким-то иным способом? ТОС и есть ТИКОВЫЙ источник данных.
Я: Как получить свечи без этого идиотского CreateDataSource - я уже предлагал тупо запихнуть их прямо в ТТТ, где им самое место. Roman Azarov: Никак. Свечи текущей торговой сессии генерируются терминалом на основании потока обезличенных сделок (исторические данные же поступают в терминал с сервера в виде архивов), к потоку текущих параметров (таблица текущих торгов) они не имеют никакого отношения. При желании/необходимости, Вы также можете самостоятельно создавать свечи из потока обезличенных сделок в своем скрипте. Я: Как это "никак", если на любом сайте, связанном с торговлей, этих свечей как собак нерезаных, всех мастей и размеров, и хранятся они там годами, если не десятилетиями? И при чём тут "свечи текущей торговой сессии"? А недельные? Месячные? А к ТТТ они имеют самое прямое отношение: перечень тикеров, интересующих юзера, настраивается именно в ТТТ, а Квик всё время ведёт весьма интенсивный обмен данными с сервером. И что, трудно заодно и свечки прихватить? В плане траффика это вообще ничего не стоит! Roman Azarov: Прихватить что и откуда? ТТТ транслируется биржей, свечки строит терминал из обезличенных сделок. Я: А что, ваш CreateDataSource тоже получает свечи, сгенерённые терминалом на основании потока обезличенных сделок"? Я и так сам считаю свечи, до часовых включительно. Но более тяжёлые (а лучше и менее, начиная с M15 и кончая месячными) лучше получать непосредственно от биржи - это надёжнее и не критично к обрывам связи, выключению электричества и т.п. Roman Azarov: Все верно. Биржа не рассылает свечи, биржа рассылает обезличенные сделки. Я: Ох, ни хрена себе! Так свечи считаются НА КЛИЕНТЕ?! И месячные тоже?! Да как же такое возможно? А если даже так - тем более: если вы сами считаете свечи, так и засуньте их в какую-нибудь таблицу! Это же ужас какой-то, доставать свечи из графика! https://forum.quik.ru/messages/forum10/message57611/topic6614/#message57611