Обработчик события MarketDepth.QuotesChanged
Atom Ответить
17.03.2011


Всем доброго времени суток.

Пытаюсь обрабатывать событие QuotesChanged Объекта MarketDepth
Обработчику передается два параметра в которых как я понял содержится информация об изменяемой котировке.
так вот если первый параметр с первым параметров все более или менее просто. то второй никак не могу побороть.
в документации про него кроме типа ничего не нашел. да и примерах нигде не освещается эта тема.
Расскажите подробней что представляет из себя этот параметр точнее как его крамотней окучить. и как я понял событие будет возникать для каждой строчки стакана?
а если не затруднит то приведите какой-нить пример обработки этого события и событий UpdatingStarted и UpdatingFinished (именно объекта MarketDepth)

Заранее спасибо

p.s. Еще один вопрос в догонку. Если в квике поставить разреженный режим стакана то по dde все равно передается обычный (тоесть с выкинутыми пустыми ценами).
это фишка самого квика? он их вырезает или библиотека?

Теги:


Спасибо:




16 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 18.03.2011
Ответить


rminko Перейти
Пытаюсь обрабатывать событие QuotesChanged Объекта MarketDepth
Обработчику передается два параметра в которых как я понял содержится информация об изменяемой котировке.
так вот если первый параметр с первым параметров все более или менее просто. то второй никак не могу побороть.
в документации про него кроме типа ничего не нашел. да и примерах нигде не освещается эта тема.


Не освещается, потому что устаревшее поведение. В новой версии нет таких параметров. Надо использовать ITrader.QuotesChanged.
Спасибо:

rminko

Фотография
Дата: 18.03.2011
Ответить


Спасибо. Я наоборот решил что событие для каждого отдельного стакана - это новая фишка. а общее в Trader - это старое.
Тогда попутный вопрос так как даже новое поведение особо не описывается ни документации ни в примерах.
в обработчик Trader.QuotesChanged коллекция из двух (или из скольки?) стаканов, один с только с теми котировками которые добавились, а другой которые исчезли,а если котировка изменилась (изменился объем) то она будет в обоих стаканах?
Или я что-то не так понял?
Заранее спасибо
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 18.03.2011
Ответить


rminko Перейти
Спасибо. Я наоборот решил что событие для каждого отдельного стакана - это новая фишка. а общее в Trader - это старое.
Тогда попутный вопрос так как даже новое поведение особо не описывается ни документации ни в примерах.
в обработчик Trader.QuotesChanged коллекция из двух (или из скольки?) стаканов, один с только с теми котировками которые добавились, а другой которые исчезли,а если котировка изменилась (изменился объем) то она будет в обоих стаканах?
Или я что-то не так понял?
Заранее спасибо


В этом событие, как и во всех других событиях ITrader, коллекция объектов. В данном случае, коллекция стаканов как они есть в торговой системе. Тоесть, ни то что было до этого, ни изменения. А просто сами стаканы.
Спасибо:

rminko

Фотография
Дата: 18.03.2011
Ответить


Mikhail Sukhov Перейти

В этом событие, как и во всех других событиях ITrader, коллекция объектов. В данном случае, коллекция стаканов как они есть в торговой системе. Тоесть, ни то что было до этого, ни изменения. А просто сами стаканы.

А есть возможность получить только изменившиеся котировки или это уже надо реализовывать самому?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 18.03.2011
Ответить


rminko Перейти
Mikhail Sukhov Перейти

В этом событие, как и во всех других событиях ITrader, коллекция объектов. В данном случае, коллекция стаканов как они есть в торговой системе. Тоесть, ни то что было до этого, ни изменения. А просто сами стаканы.

А есть возможность получить только изменившиеся котировки или это уже надо реализовывать самому?


Самому.
Спасибо:

rminko

Фотография
Дата: 29.03.2011
Ответить


Решил не заводить новую тему, так как вопрос очень соотвествует текущей.

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

1. а) получить все котировки
б) запросить луший аск
в)и лучший бид
2. а)получить все аски
б)получить все биды
во втором варианте нет необходимости запрашивать лучший аск и бид так как их можно легко вычислить из всех асков и всех бидов так как они отсортированы.
Вообщем пробовал оба варианта и в обоих вариантах в процессе запроса данных очень часто стакан мягко говоря бредовым. (получил лучшие бид по индексу к примеру 190000 и тут же запрашиваю лучший аск а он равен 189990....... вот и как побороть?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 29.03.2011
Ответить


rminko Перейти

Вообщем пробовал оба варианта и в обоих вариантах в процессе запроса данных очень часто стакан мягко говоря бредовым. (получил лучшие бид по индексу к примеру 190000 и тут же запрашиваю лучший аск а он равен 189990....... вот и как побороть?


MarketDepth.Clone пробовали в самом начале делать?
Спасибо: rminko

rminko

Фотография
Дата: 29.03.2011
Ответить


Mikhail Sukhov Перейти

MarketDepth.Clone пробовали в самом начале делать?


Нет не пробовал. так как мне кажеться это будет медленно. а я борюсь за каждую ну или каждую микросекудну.
надо попробовать и замерить


p.s. Попробовал. 3 микросекунды. нормально. хотя конечно если сравнить с остальным кодом который пробегает по всему стакану и не просто пробегает а анализирует за 30 микросекунд. то 10 процентный прирост времени только на одной строчке кода выглядит мягко говоря странно Glare. Но это я только проверил саму функцию клон. смотреть что происходит со стаканом - клонируется ли нормально или все равно успевает изменится еще не смотрел
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 29.03.2011
Ответить


rminko Перейти
Mikhail Sukhov Перейти

MarketDepth.Clone пробовали в самом начале делать?


Нет не пробовал. так как мне кажеться это будет медленно. а я борюсь за каждую ну или каждую микросекудну.
надо попробовать и замерить


А что за брокер и инструмент, что дает такую скорость обновления стакана?
Спасибо:

rminko

Фотография
Дата: 30.03.2011
Ответить


Это на РИМ1, но там дело не в скорости обновления. Так как даже если брокер обновляет стакан раз в секунду. а я 20 раз в секунду, то существует большая вероятность (примерно 1 к 20) что я начну обновлять стакан до обновления брокером, а закончу после. вот только почему такие ситуации получаются очень часто...
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 30.03.2011
Ответить


rminko Перейти
ЭТак как даже если брокер обновляет стакан раз в секунду. а я 20 раз в секунду


Вот это не понял. Вы как то сами обновляете стакан?
Спасибо:

rminko

Фотография
Дата: 31.03.2011
Ответить


Mikhail Sukhov Перейти
rminko Перейти
ЭТак как даже если брокер обновляет стакан раз в секунду. а я 20 раз в секунду


Вот это не понял. Вы как то сами обновляете стакан?

Под обновлением стакана я имею ввиду что данные из MarketDepth считываю 20 раз в секунду примерно. ну и иногда поподаю на в такую ситуацию что начинаю считывать одно а пока закончу там уже совсем другое. ладно бы еще все остальные котировки но когда бид становится равными аску у меня или просто на пока считаю аск бид по моим данным и реальный в marketdepth это две большие разницы
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 31.03.2011
Ответить


rminko Перейти

Под обновлением стакана я имею ввиду что данные из MarketDepth считываю 20 раз в секунду примерно.


А зачем это делать? Вы 20 раз в секунду проделываете одно и то же.
Спасибо:

rminko

Фотография
Дата: 31.03.2011
Ответить


Mikhail Sukhov Перейти
rminko Перейти

Под обновлением стакана я имею ввиду что данные из MarketDepth считываю 20 раз в секунду примерно.


А зачем это делать? Вы 20 раз в секунду проделываете одно и то же.


есть на это несколько причин - первая и очевидная это как можно быстрее среагировать на изменение в стакане. Но это к делу не относится ведь даже если считывать 1-2 раза в секунду все равно буду попадать на "обновление стакана в процессе чтения".
Ну да ладно проблем конечно это доставляет, но не критично. добавлю пару проверок и всего делов. просто думал может кто-то уже сталкивался с такой проблемой и както победил ее.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 31.03.2011
Ответить


rminko Перейти

есть на это несколько причин - первая и очевидная это как можно быстрее среагировать на изменение в стакане.


Самое быстрое - это через MarketDepth.QuotesChanged.
Спасибо:

rminko

Фотография
Дата: 03.04.2011
Ответить


Mikhail Sukhov Перейти
rminko Перейти

есть на это несколько причин - первая и очевидная это как можно быстрее среагировать на изменение в стакане.


Самое быстрое - это через MarketDepth.QuotesChanged.

ну так я и делаю это через QuotesChanged, но пока я обрабатываю это событие стакан как я писал выше успевает измениться
Автор топика
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy