Как заполняется размер таблицы исторических свечей ?

Страницы: 1
RSS
Как заполняется размер таблицы исторических свечей ?
 
Подскажите пожалуйста, когда я запрашиваю таблицу исторических свечей через CreateDataSource, то таблица сразу приходит заполненная окончательным размером или размер меняется по мере заполнения ?

Теоретически таблица сразу должна заполнится итоговым размером. Правильно ?
 
это легко посмотреть при помощи ds:Size() в цикле.
 
Цитата
Kolossi написал:
это легко посмотреть при помощи ds:Size() в цикле.
Это не достоверный результат, может цикл не успеет выловить когда размер таблицы условно нулевой.
 
Я обычно делаю цикл, который ждёт, пока ds:Size() не станет положительным, после чего работаю с данными, которые там появились. На практике кажется, что приходят сразу все свечи, которые есть в наличии у терминала.
 
Цитата
Quikos написал:
Подскажите пожалуйста, когда я запрашиваю таблицу исторических свечей через CreateDataSource, то таблица сразу приходит заполненная окончательным размером или размер меняется по мере заполнения ?

Теоретически таблица сразу должна заполнится итоговым размером. Правильно ?
Нет.
Начнем опять от печки.
Сервер посылает терминалу квик(клиенту) запрошенные данные пакетами.
Когда терминал принимает пакет данных он начинает их раскладывать по архивам(таблицам).
Вы запросили свечи .
сервер послал вам столько, сколько уместилось в пакет.
Терминал вытаскивает по одной из пакета и кладет их в таблицу,
при этом в Size вы получите текущее число элементов в таблице.
----------------
Если Вы принимаете свечи через колбек, то номер свечи будет равен номеру последней вытащенной терминалом.
Иначе может быть так, что Вы получите результат лишь после того как терминал разберет весь пакет.
-----------------
если число свечей много и все они не уместились в стандартный пакет , то сервер может посылать их несколькими пакетами
и тогда терминал будет принимать их также  несколько раз.
в итоге Вы можете получить несколько значений size.
-----------------------------------
Но так скорее всего не будет, либо будет пр первом подключении к серверу.
---------------------
Если Вам очень важно знать все ли свечи Вы приняли,
то просто проверьте дату и время последней и сравните с текущем временем и датой.
 
Цитата
Quikos написал:
Цитата
Kolossi написал:
это легко посмотреть при помощи ds:Size() в цикле.
Это не достоверный результат, может цикл не успеет выловить когда размер таблицы условно нулевой.
На мелких таймфреймах вполне себе достоверный
 
Цитата
nikolz написал:
Если Вам очень важно знать все ли свечи Вы приняли,
то просто проверьте дату и время последней и сравните с текущем временем и датой.
nikolz,  а как для ds с тиковым интервалом?
 
Цитата
Kolossi написал:
Цитата
nikolz написал:
Если Вам очень важно знать все ли свечи Вы приняли,
то просто проверьте дату и время последней и сравните с текущем временем и датой.
nikolz,  а как для ds с тиковым интервалом?
Тики, если не ошибаюсь,  это таблица обезличенных сделок.
С ними проще работать используя колбек onAllTrade.
Можно также использовать дату время  сделки, и дату время сервера ну и текущую дату время.
 
но с тиками проблема в том, что они уж точно придут пакетом сразу куча сделок и все в один текущий момент
физически терминал будет перелопачивать "вчерашний день", так как куча сделок уже прошла.
Полагаю что тики как правило пытаются использовать начинающие, но реально они имеют ценность лишь в HFT и в дата центре и скорее всего не в терминале КВИК.
 
Цитата
nikolz написал:
но с тиками проблема в том, что они уж точно придут пакетом сразу куча сделок и все в один текущий момент
физически терминал будет перелопачивать "вчерашний день", так как куча сделок уже прошла.
Полагаю что тики как правило пытаются использовать начинающие, но реально они имеют ценность лишь в HFT и в дата центре и скорее всего не в терминале КВИК.
Тут не соглашусь. Я не практически не пользуюсь индикаторами после десятка лет экспериментов. Не буду сейчас освещать причины.
Но использую ряд параметров которые делают расчет "от текущего времени назад" Например "изменение объема за последние пять минут"
или "скорость изменения спроса/предложения за последний час. Для этого не подходят пятиминутные или часовые свечи.
Повторю свой вопрос: как узнать что тиковая база получила все исторические данные и идет прием текущих. По первому onAllTrade?
 
Я использую метод "догнать время последней сделки". Заказываем все сделки, далее ожидаем когда время из таблицы обезличенных сделок (или если угодно тика) равно времени последней сделки из ТТТ. Ждать надо, т.к. от заказа до прихода "последней" не одна минута может пройти. Также при восстановлении связи после обрыва тоже надо подождать. Ожидание точно не стоит делать блокирующим.
 
Цитата
Kolossi написал:
Цитата
nikolz написал:
Если Вам очень важно знать все ли свечи Вы приняли,
то просто проверьте дату и время последней и сравните с текущем временем и датой.
nikolz,  а как для ds с тиковым интервалом?
Таблица ds тиков - заполняется вся не сразу, только что проверил в цикле с паузой 3 мс.
Сначала 0,736, 775, 993, 1057, 5697, 7099, 11184... кстати да встает вопрос, как определить, когда таблица то в итоге заполнилось полностью.

С интервалом начиная от 1 минуты - вроде бы размер приходить сразу полностью заполненный окончательно.
 
Цитата
Kolossi написал:
Цитата
nikolz написал:
но с тиками проблема в том, что они уж точно придут пакетом сразу куча сделок и все в один текущий момент
физически терминал будет перелопачивать "вчерашний день", так как куча сделок уже прошла.
Полагаю что тики как правило пытаются использовать начинающие, но реально они имеют ценность лишь в HFT и в дата центре и скорее всего не в терминале КВИК.
Тут не соглашусь. Я не практически не пользуюсь индикаторами после десятка лет экспериментов. Не буду сейчас освещать причины.
Но использую ряд параметров которые делают расчет "от текущего времени назад" Например "изменение объема за последние пять минут"
или "скорость изменения спроса/предложения за последний час. Для этого не подходят пятиминутные или часовые свечи.
Повторю свой вопрос: как узнать что тиковая база получила все исторические данные и идет прием текущих. По первому onAllTrade?
Полагаю, что решить Вашу задачу для оценки изменения параметров на интервале в 5 минут вполне хватило бы и 1 минутных свечей.
Но спорить не буду, Ваше право считать по тикам.
 
Для тиков проблема решается просто.
Есть два варианта приема данных
В первом случае принимаем всю таблицу от начала до текущей
Во втором принимаются  пропущенные данные.
-----------------
В обоих случаях проверяем время либо номер принятой колбеком сделки и сравниваем его с последним в таблице и текущим временем сервера
 
не мог понять, почему Вас волнует кончили заполнять таблицу или нет.
Но последнее сообщение о расчете изменения параметров взад внесло ясность.
---------------------
поясняю почему.
проблема в том , что для расчета параметров большинство из посетителей этого форума использует цикл назад в историю.
К сожалению это классическая ошибка в построении систем реального времени , к которым относятся торговые роботы, большинства пишущих и не только начинающих.
-----------------
Ранее говорил, что циклы в таких системах - это очень плохо.
Если вы научитесь мыслить (писать свои алгоритмы без таких циклов) то Вас не будет волновать когда же все данные поступят.
 
nikolz, Лапуль, где Вы нахватались этих бредней? Циклы в системах реального времени (как и во всех остальных, впрочем) это очень хорошо. А уж относить к ним несчастных торговых роботов просто язык не поворачивается.
 
Цитата
nikolz написал:
Цитата
Kolossi написал:
 Тут не соглашусь. Я  практически не пользуюсь индикаторами после десятка лет экспериментов. Не буду сейчас освещать причины.
Но использую ряд параметров которые делают расчет "от текущего времени назад" Например "изменение объема за последние пять минут"
или "скорость изменения спроса/предложения за последний час. Для этого не подходят пятиминутные или часовые свечи.
Повторю свой вопрос: как узнать что тиковая база получила все исторические данные и идет прием текущих. По первому onAllTrade?
Полагаю, что решить Вашу задачу для оценки изменения параметров на интервале в 5 минут вполне хватило бы и 1 минутных свечей.
Вы серьезно это предлагаете? Вычисления с точностью +/- 20% ? Спасибо, не надо ))
Но.
Если мне еще расскажете как получить значение количества сделок "по рынку" не используя ленту сделок я обещаю подумать.

P.S. Только про начинающих и циклы притормозите, перебор слегка.
 
Цитата
Kolossi написал:
значение количества сделок "по рынку"
А что это такое ?
 
Quikos, если я поставлю заявку на покупку и она в итоге сработает, а потом куплю выставленную кем-то на продажу, т.е. совершу две покупки - одну лимитную, одну по рынку, то в ленте сделок эти две сделки будут обозначены одна как "покупка" другая как "продажа".
Потому что в любой сделке присутствует и покупка и продажа в равных долях,  а в ленте отражается та часть сделки которая "по рынку". Как-то так.
 
Цитата
Kolossi написал:
Quikos, если я поставлю заявку на покупку и она в итоге сработает, а потом куплю выставленную кем-то на продажу, т.е. совершу две покупки - одну лимитную, одну по рынку, то в ленте сделок эти две сделки будут обозначены одна как "покупка" другая как "продажа".
Потому что в любой сделке присутствует и покупка и продажа в равных долях,  а в ленте отражается та часть сделки которая "по рынку". Как-то так.
Так совершение сделки "по рынку" - это по сути такое же выставление заявки на покупку к примеру, просто сразу совпадающее с предложением. Навряд ли это где то это отдельно фиксируется.
 
Цитата

Так совершение сделки "по рынку" - это по сути такое же выставление заявки на покупку к примеру, просто сразу совпадающее с предложением. Навряд ли это где то это отдельно фиксируется.
Это фиксируется в ленте сделок.  В сделке всегда одна часть по рынку другая лимитная, по другому не получится. И если лимитная стояла на продажу то сделка маркируется как "покупка" и наоборот.
На практике, если например стадо трейдеров начинают хватать бумагу как караси перловку, то в ленте резко подскакивает частота сделок "покупка". Т.е.
в большей части сделок лимитная часть на продажу, а рыночная на покупку.
 
Цитата
Kolossi написал:
Цитата
nikolz написал:
 
Цитата
Kolossi  написал:
 Тут не соглашусь. Я  практически не пользуюсь индикаторами после десятка лет экспериментов. Не буду сейчас освещать причины.
Но использую ряд параметров которые делают расчет "от текущего времени назад" Например "изменение объема за последние пять минут"
или "скорость изменения спроса/предложения за последний час. Для этого не подходят пятиминутные или часовые свечи.
Повторю свой вопрос: как узнать что тиковая база получила все исторические данные и идет прием текущих. По первому onAllTrade?
 Полагаю, что решить Вашу задачу для оценки изменения параметров на интервале в 5 минут вполне хватило бы и 1 минутных свечей.
 Вы серьезно это предлагаете? Вычисления с точностью +/- 20% ? Спасибо, не надо ))
Но.
Если мне еще расскажете как получить значение количества сделок "по рынку" не используя ленту сделок я обещаю подумать.

P.S. Только про начинающих и циклы притормозите, перебор слегка.
Я не заставляю Вас что-то делать иначе,
просто рассказал Вам свой опыт решения проблем при создании систем РВ для обработки данных.
--------------------------
Например, могу вычислить по тикам любые параметры без циклов назад,
результат вычисления параметра на текущий момент,  вне зависимости от длины истории,
всегда готов не более, чем через 0.001 секунду.  
----------------------------------------
Относительно Вашего утверждения о точности +-20% , оно голословное.
---------------------------------
Если нет, то покажите результаты теста и я с Вами соглашусь.
 
Цитата
Kolossi написал:
Quikos, если я поставлю заявку на покупку и она в итоге сработает, а потом куплю выставленную кем-то на продажу, т.е. совершу две покупки - одну лимитную, одну по рынку, то в ленте сделок эти две сделки будут обозначены одна как "покупка" другая как "продажа".
Потому что в любой сделке присутствует и покупка и продажа в равных долях,  а в ленте отражается та часть сделки которая "по рынку". Как-то так.
расскажу немного иначе.
--------------------------
Если заявка стоит в стакане т е зарегистрирована в очереди на сделку,
то сделка по ней совершится лишь тогда, когда ее цена  станет лучшей на рынке.
и появится встречная заявка по лучшей цене, т е заявка по рыночной цене.
---------------------
Появившаяся встречная заявка и будет инициатором сделки.
и ее направление (купить/продать) будет отмечено в таблице обезличенных сделок.
-------------------
Можно сказать, что сделка называется по направлению заявки, которая двигает рынок.
----------------
Поэтому есть такое выражение "рынок двигают заявки по рыночной цене"
---------------
Очевидно, что заявка на покупку двигает рынок вверх, а на продажу -вниз.
 
Цитата
nikolz написал:
Цитата
Kolossi написал:

  Вы серьезно это предлагаете? Вычисления с точностью +/- 20% ? Спасибо, не надо ))

Относительно Вашего утверждения о точности +-20% , оно голословное.
---------------------------------
Если нет, то покажите результаты теста и я с Вами соглашусь.
nikolz, если вы возьмете последние пять 1-минутных свечей и будете в них что-нибудь считать, то начале текущей минуты общее расчетное время будет чуть более четырех минут, а в конце чуть менее пяти.  Вы не по верите, но это разница в 20% общего расчетного времени. Заметьте, я очень сдержан и терпелив )
Страницы: 1
Читают тему
Наверх