Обсуждение статьи "Работа с ценами в библиотеке DoEasy (Часть 63): Стакан цен, класс абстрактной заявки стакана цен"

 

Опубликована статья Работа с ценами в библиотеке DoEasy (Часть 63): Стакан цен, класс абстрактной заявки стакана цен:

В статье начнём разработку функционала для работы со стаканом цен. Создадим класс объекта абстрактной заявки стакана цен и его наследников.

С этой статьи мы начнём делать функционал для работы со стаканом цен. Концептуально классы для работы со стаканом цен не будут отличаться от всех ранее написанных классов библиотеки. Одномоментно мы будем иметь "слепок" стакана, в котором будут находиться данные о заказах в стакане цен, получаемые функцией MarketBookGet() при срабатывании обработчика OnBookEvent(), в котором для каждого из символов, для которых активизирована подписка на события стакана цен, срабатывает событие при изменении стакана.

Таким образом, структура классов стакана цен будет такой:

  1. Класс объекта-заявки стакана цен — объект, описывающий данные одной заявки из множества заявок, полученных из стакана цен при разовом срабатывании обработчика OnBookEvent() для одного символа;
  2. Класс объекта-слепка стакана цен — объект, описывающий данные всех заявок, полученных одномоментно из стакана цен на одном срабатывании обработчика OnBookEvent() для одного символа — совокупность объектов п1, вкупе составляющих текущий слепок стакана цен;
  3. Класс-таймсерия, состоящая из последовательности объектов п2, заносимых в список-таймсерию на каждом срабатывании OnBookEvent() для одного символа;
  4. Класс-коллекция таймсерий данных стаканов цен всех используемых в программе символов, для которых активизирована подписка на события стакана цен.

Сегодня сделаем класс объекта-заявки (1) и протестируем получение данных стакана цен при срабатывании OnBookEvent() по текущему символу.

Автор: Artyom Trishkin

 

Не судите строго. Эпиграмма. 


Писали все мы понемногу, 

О чём-нибудь и как-нибудь.

Лишь он один ушёл в дорогу,

Успев нам хитро подмигнуть.


На той дороге кода много,

А строчек просто всех не счесть.

И если бы не мать-природа, 

То через них не перелезть!


Моё перо само просилось,

Сказать ещё о чём-нибудь.

Но он один ушёл в дорогу,

С которой всем нам не свернуть.

                                                      Февраль, 2021

 
???
 

Здравствуйте Артём,

Прежде всего поздравляю со статьей, просто фантастика!!! Один вопрос, насколько я понял, вы не затрагиваете позицию конкретного ордера (лимитного ордера) на конкретном ценовом уровне... Например, если мой ордер стоит впереди очереди (первым) на этом уровне, на полпути или действительно позади всех ордеров..... Я пытаюсь автоматизировать стратегию для очень ликвидного инструмента и очень низкой стоимости торговли, где я мог бы войти в позицию и потенциально выйти по той же цене, для этого мне нужно иметь доступ к позиции или моему ордеру в очереди на определенном ценовом уровне... Не похоже, чтобы это обсуждалось где-либо.

Не знаете ли вы, как я могу получить эту информацию, если биржа поддерживает ее?

С наилучшими пожеланиями

Андре Оливейра

 
André Dias de Oliveira:

Здравствуйте, Артем,

Прежде всего поздравляю со статьей, просто фантастика!!! Один вопрос, насколько я понял, вы не затрагиваете позицию конкретного ордера (лимитного ордера) на конкретном ценовом уровне... Например, если мой ордер стоит впереди очереди (первым) на этом уровне, на полпути или действительно позади всех ордеров..... Я пытаюсь автоматизировать стратегию для очень ликвидного инструмента и очень низкой стоимости торговли, где я мог бы войти в позицию и потенциально выйти по той же цене, для этого мне нужно иметь доступ к позиции или моему ордеру в очереди на определенном ценовом уровне... Не похоже, чтобы это обсуждалось где-либо.

Не знаете ли вы, как я могу получить эту информацию, если биржа ее поддерживает?

С наилучшими пожеланиями

Андре Оливейра

Спасибо.

Я немного не понял вопрос - возможно, языковой барьер...

Здесь библиотека считывает все доступные данные, которые она может прочитать из Depth of Market, используя возможности, предоставляемые MQL.

Попробуйте, пожалуйста, объяснить свой вопрос на примерах.

 
Artyom Trishkin:

Спасибо.

Я немного не понял вопроса - наверное, языковой барьер...

Здесь библиотека считывает все доступные данные, которые она может прочитать из Depth of Market, используя возможности, предоставляемые MQL.

Попробуйте объяснить свой вопрос на примерах, пожалуйста.

Спасибо за ответ, Артём, конечно, попробую лучше объяснить..... Чтобы упростить и облегчить понимание, давайте представим себе гипотетическую и очень простую "Книгу ордеров" с одной глубиной ценового уровня, то есть лимитные ордера на стороне спроса и лимитные ордера на стороне предложения... Для примера представим большой объем ордеров в обе стороны (допустим, цена спроса 1,34 и цена предложения 1,35). Для этого примера представим, что в "Книге заказов" есть ордера только по этим двум ценам... Больше ничего.

Тогда я размещаю один ордер в обе стороны (ask и bid), и мои ордера будут размещены в самом конце очереди в каждой стороне (последний ордер на покупку в стороне 1,34 и последний ордер на продажу в стороне 1,35).

По мере того, как ордера, стоящие перед моими, будут расходоваться или отменяться, мои ордера будут продвигаться в очереди, и дополнительные лимитные ордера МОГУТ быть размещены позади моих ордеров на том же ценовом уровне.... Я хотел бы понять, есть ли способ получить позицию моих ордеров в очереди в любой момент времени. См. картинку, которую я приложил.

Очень ценю ваше внимание и старание понять мой вопрос, Артём, дайте мне знать, если это понятно, я могу попробовать придумать дополнительные примеры, если это не очень хорошо.

С наилучшими пожеланиями и еще раз, очень ценю ваши комментарии по этому вопросу.


Андре Оливейра


Андре Оливейра

Файлы:
 
André Dias de Oliveira :

Спасибо за ответ, Артём, конечно, давайте я попробую лучше объяснить..... Чтобы упростить и облегчить понимание, давайте представим себе гипотетическую и очень простую "Книгу ордеров" с одной глубиной ценового уровня, то есть лимитные ордера на стороне спроса и лимитные ордера на стороне предложения... Для примера представим большой объем ордеров в обе стороны (допустим, цена спроса 1,34 и цена предложения 1,35). Для этого примера представим, что в "Книге заказов" есть ордера только по этим двум ценам... Больше ничего.

Тогда я размещаю один ордер в обе стороны (ask и bid), и мои ордера будут размещены в самом конце очереди в каждой стороне (последний ордер на покупку в стороне 1,34 и последний ордер на продажу в стороне 1,35).

По мере того, как ордера, стоящие перед моими, будут расходоваться или отменяться, мои ордера будут продвигаться в очереди, и дополнительные лимитные ордера МОГУТ быть размещены позади моих ордеров на том же ценовом уровне.... Я хотел бы понять, есть ли способ получить позицию моих ордеров в очереди в любой момент времени. Смотрите картинку, которую я прикрепил.

Очень ценю ваше внимание и старание понять мой вопрос, Артём, дайте мне знать, если это понятно, я могу попробовать придумать дополнительные примеры, если это не очень хорошо.

С наилучшими пожеланиями и еще раз, очень ценю ваши комментарии по этому вопросу.


Андре Оливейра


Андре Оливейра

Боюсь, что мы не можем видеть очередь ордеров в Depth of Market. Поправьте меня, если я ошибаюсь.

 
Artyom Trishkin:

Боюсь, что мы не можем видеть очередь ордеров в Depth of Market. Поправьте меня, если я ошибаюсь.

Еще раз спасибо за внимание к вопросу Artyom.... Видите ли, я очень новичок в программировании на mql5, но, по крайней мере, на нашей бразильской бирже это возможно, так как это было реализовано в "Книге ордеров" и "Списке ордеров" торговой платформы под названием Profit и другой под названием Tryd. Обе эти торговые платформы ориентированы на ручных трейдеров и не предполагают автоматической торговли.

Смотрите приложенный скриншот, они показывают "мой ордер" желтым цветом, а также показывают все остальные ордера впереди и позади... на самом деле они показывают всех брокеров и размеры ордеров... это очень прозрачный процесс.

Возможно, это не совсем обычно для других бирж (я предполагаю, так как у меня нет большого опыта работы с другими биржами), и по этой причине, возможно, это не изучено в языке mql5... Я попытаюсь выяснить, как это экспортируется на эти торговые платформы (должно быть какое-то API), я просто подумал, что МАЙБЭ это уже изучено в mql5.

Артем, большое спасибо за комментарии, которые вы сделали, очень ценю. Поздравляю вас с вашими статьями, в них очень качественное содержание и информация.

С наилучшими пожеланиями

Андре Оливейра

 
André Dias de Oliveira :

Еще раз спасибо за внимание к вопросу Artyom.... Видите ли, я очень новичок в программировании mql5, но по крайней мере на нашей бразильской бирже это возможно, так как это было реализовано в "Книге ордеров" и "Списке ордеров" торговой платформы под названием Profit и другой под названием Tryd. Обе эти торговые платформы ориентированы на ручных трейдеров и не специализируются на автоматической торговле.

Смотрите приложенный скриншот, они показывают "мой ордер" желтым цветом, а также показывают все остальные ордера впереди и позади... на самом деле они показывают всех брокеров и размеры ордеров... это очень прозрачный процесс.

Возможно, это не совсем обычно для других бирж (я предполагаю, так как у меня нет большого опыта работы с другими биржами), и по этой причине, возможно, это не изучено в языке mql5... Я попытаюсь выяснить, как это экспортируется на эти торговые платформы (должен быть какой-то API), я просто подумал, что, МАЙБЭ, это уже исследовано и в mql5.

Артем, большое спасибо за комментарии, которые вы сделали, очень ценю. Поздравляю с вашими статьями, в них очень качественное содержание и информация.

С наилучшими пожеланиями

Андре Оливейра

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