подсчет реального объема по фьючерсам - страница 2

 
rjurip1:

Проверил, как и по докам SymbolInfoTick  повторяет инфу, даже если она не изменилась. Изменения только по времени тиков и флагам. Но что удивляет volume[rates_total-1]; проводит изменения объема, а SymbolInfoTick показывает флаг изменения ask  или bid, и нет флага изменения объема! Как такое может быть? Полагаю, программный баг. И last всегда должен соответствовать или ask или bid. Конечно, возможна ситуация изменения last, bid, ask с одновременным изменением  volume.  И это проверял. Может меняется ask, bid  и без изменения объемов (по правилам биржи)  расширение спреда в малоликвидный период.Но все проверяется в ликвидный период с контрольной проверкой по Нинзятрейдер.

По второму. Что такое volume[] в отличии от tick_volume[]? Это то, что вам выдает брокер. На фьючерсах, это реальные объемы, проводимые на бирже. Дата фид нужно получать от брокера зарегистрированного на бирже. Нефть WTI биржа СМЕ Nymex - основные торги. Тики, это - просто дергание цены, но и в этом случае лучше эту инфу получать от брокера))

Чем дальше тем чудеснее.. Давайте основы биржевой торговли переписывать не будем)

Ask - это минимальная цена с которой начинаются лимитники на продажу актива

Bid - это максимальная цена с которой начинаются лимитники на покупку актива

"расширение спреда в малоликвидный период" происходит не по "(по правилам биржи)" а потому что снимают лимитники на покупку/продажу, соответственно объемы (в стакане) меняются без совершения сделок.

Соответственно, тики это не "дергание цены" а вполне реальные котировки Вашего брокера по которым он готов найти контрагента на Вашу сделку (по рынку) здесь и сейчас.

По "Дата фиду" форекс-дилера/брокера.. Форекс децентрализован, это буквально означает что нет "эталона" по которому можно было бы проверить и сказать какие объемы торгов реальные а какие нет. Но ориентируются обычно на те что больше, это как бы намекает на большую ликвидность поставщика.


p.s. ранее, я предлагал сравнить сумму объемов возвращенных CopyTicks за период бара с накопленными "вручную" по SymbolInfoTick.

 

ArrayGetAsSeries(volume)==true

Соответственно volume[rates_total-1] - это объем на первой свече в истории, а не на последней .

 
SemenTalonov:

Чем дальше тем чудеснее.. Давайте основы биржевой торговли переписывать не будем)

Ask - это минимальная цена с которой начинаются лимитники на продажу актива

Bid - это максимальная цена с которой начинаются лимитники на покупку актива

"расширение спреда в малоликвидный период" происходит не по "(по правилам биржи)" а потому что снимают лимитники на покупку/продажу, соответственно объемы (в стакане) меняются без совершения сделок.

Соответственно, тики это не "дергание цены" а вполне реальные котировки Вашего брокера по которым он готов найти контрагента на Вашу сделку (по рынку) здесь и сейчас.

По "Дата фиду" форекс-дилера/брокера.. Форекс децентрализован, это буквально означает что нет "эталона" по которому можно было бы проверить и сказать какие объемы торгов реальные а какие нет. Но ориентируются обычно на те что больше, это как бы намекает на большую ликвидность поставщика.


p.s. ранее, я предлагал сравнить сумму объемов возвращенных CopyTicks за период бара с накопленными "вручную" по SymbolInfoTick.

Конечно не будем. Правы в отношении лимитников. Но, к сожалению, не учитываете третьего участника торгов, который есть всегда - маркетмейкер. Именно он, по соглашению с биржей должен обеспечить ликвидность (в случае необходимости)  торгов. Конечно, пока ликвидность обеспечена с обеих сторон (предложение на покупку-продажу) , маркетмейкер просто получает свою комиисию от сделок. А если возникает дисбаланс (тренд покупок-продаж) маркетмекер обеспечивает ликвидность за счет своих средств и в рамках соглашения с биржей по ликвидности. Иначе цена инструмента может улететь в "космос". Но маркетмейкер не будет в накладе,  все свое вернет с прибылью, это видно по "откатам".

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

По форексу. Вы сами и подтвердили, что на форексе "реальных объемов" вы получать не можете, нет "эталона". А вы можете сказать, на КОГО ориентируется ваш брокер? Он вам об этом сообщает? К примеру, можете предположить где наибольшая ликвидность пары евродоллар?

P.S. В истории не сохраняются раздельные бай-селл объемы. А в этом смысл
 
Vladimir Simakov:

ArrayGetAsSeries(volume)==true

Соответственно volume[rates_total-1] - это объем на первой свече в истории, а не на последней .

Вы рассмотрели код индюка? Расчет рассматривается на текущем баре.

 
rjurip1:

Конечно не будем. Правы в отношении лимитников. Но, к сожалению, не учитываете третьего участника торгов, который есть всегда - маркетмейкер. Именно он, по соглашению с биржей должен обеспечить ликвидность (в случае необходимости)  торгов. Конечно, пока ликвидность обеспечена с обоих сторон (предложение на покупку-продажу) , маркетмейкер просто получает свою комиисию от сделок. А если возникает дисбаланс (тренд покупок-продаж) маркетмекер обеспечивает ликвидность за счет своих средств и в рамках соглашения с биржей по ликвидности. Иначе цена инструмента может улететь в "космос". Но маркетмейкер не будет в накладе,  все свое вернет с прибылью, это видно по "откатам".

Конечно о существовании маркетмейкера известно. Но что это меняет в контексте темы топика? Нас не интересуют мотивы участников торгов.

Как это, "тики... -  котировки" ?  Вы о чем? Котировки, это цены, по которым у вас готовы купить или продать. Тик - в общем случае, факт некого изменеия на рынке, без понимания существа это изменения. На форексе тик - изменение цены.

Котировки это цены которые приходят с тиками. Вроде нет противоречий? Любое изменение стакана, это тик. И да, тик может придти без изменения цен.

rjurip1:

По форексу. Вы сами и подтвердили, что на форексе "реальных объемов" вы получать не можете, нет "эталона". А вы можете сказать, на КОГО ориентируется ваш брокер? Он вам об этом сообщает? К примеру, можете предположить где наибольшая ликвидность пары евродоллар? 

Если нет "эталона" это не значит что объемы торгов не реальные)) Допустим, в вашем городе 10 банков предлагают обмен валюты. У каждого свой курс обмена +/- копеек. Который курс будет "реальным"? И оборот какого банка, по покупке/продаже валюты, следует считать "не реальным"?)

И зачем мне знать на кого ориентируется брокер (ДЦ)? Если он будет совершать сделки по не реальным ценам он сам себя накажет, потому что для меня создадутся условия совершения арбитража.

P.S. В истории не сохраняются раздельные бай-селл объемы. А в этом смысл

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

 
SemenTalonov:

Конечно о существовании маркетмейкера известно. Но что это меняет в контексте темы топика? Нас не интересуют мотивы участников торгов.

Котировки это цены которые приходят с тиками. Вроде нет противоречий? Любое изменение стакана, это тик. И да, тик может придти без изменения цен.

Если нет "эталона" это не значит что объемы торгов не реальные)) Допустим, в вашем городе 10 банков предлагают обмен валюты. У каждого свой курс обмена +/- копеек. Который курс будет "реальным"? И оборот какого банка, по покупке/продаже валюты, следует считать "не реальным"?)

И зачем мне знать на кого ориентируется брокер (ДЦ)? Если он будет совершать сделки по не реальным ценам он сам себя накажет, потому что для меня создадутся условия совершения арбитража.

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

1. "Маркетмейкер" в контексте темы ничего не меняет Просто разъяснил свои слова "по правилам биржи"

2. Согласен.

3. Вот для этого и существует биржа. Допустим из 10 банков 1 предлагает бакс за 100 руб. а остальные по 80. Какой из них рыночный и правильный? И какой объем торгов?

4. Ошибаетесь. Поверьте моему опыту. НИКАКОГО арбитража не будет.  Этот брокер раздвинет спред, сошлется на "проскальзывание", на разность котировок на разных рынках и т.д. и т.п.  Вы не первый и не последний. В свое время, я это прошел. Хотя, сам по себе, арбитраж возможен. Для этого используют другую базу.

5. Буду рад

 

Ознакомьтесь с этой статьей https://www.mql5.com/ru/articles/3708  

и эту тему прочитайте https://www.mql5.com/ru/forum/96537

Написание биржевых индикаторов с контролем объема на примере индикатора дельты
Написание биржевых индикаторов с контролем объема на примере индикатора дельты
  • www.mql5.com
Как известно, терминал MetaTrader 5 транслирует два вида объемов: тиковый объем, т.е. количество тиков (изменения котировочных данных), прошедших за время формирования бара;реальный объем, т.е. количество сделок, прошедших за время формирования бара. В терминале реальный объем обозначается просто: "Объем". Он и будет нам интересен, ведь с...
 
Rafil Nurmukhametov:

Ознакомьтесь с этой статьей https://www.mql5.com/ru/articles/3708  

и эту тему прочитайте https://www.mql5.com/ru/forum/

Благодарю за ссылки. Но эта тема ограничивается реалтайм данными. Ничего нового в статьях не нашел. Единственно, обратил внимание, что проторгованный объем делится на Бай Селл по флагам TICK_FLAG_BUY ,TICK_FLAG_SELL Однако, тики могут приходить с несколькими флагами, к примеру buy+last+ask, то есть произошла сделка buy+  изменение по last + изменение по аск. Почему-то это не учитывается. Но собственно, меня эта тема интересует практически т.е. "Как получать правильные (соответствующие биржевым) реалтайм объемы раздельно по бай-селл ". Если у Вас есть предложение по этому вопросу, буду рад ознакомится.

 

Если рассуждать в отношении биржевых торгов, то получается вполне логичная картинка.

1. Если пришедшие тики имеют флаги TICK_FLAG_BUY/TICK_FLAG_SELL, то пришедшие объемы считаем проторгованными.

2. Если пришедшие тики не имеют флагов совершенных сделок, то имело место изменение объемов отложенных ордеров.

1-ый случай - дает сигнал действий "по рынку" (в объем торгов идут только эти). 2-ой - сигнал "намерений".

Проверить правильность расчетов можно по ленте сделок. Кстате.. почему бы сразу с неё и не начать

 
SemenTalonov:

Если рассуждать в отношении биржевых торгов, то получается вполне логичная картинка.

1. Если пришедшие тики имеют флаги TICK_FLAG_BUY/TICK_FLAG_SELL, то пришедшие объемы считаем проторгованными.

2. Если пришедшие тики не имеют флагов совершенных сделок, то имело место изменение объемов отложенных ордеров.

1-ый случай - дает сигнал действий "по рынку" (в объем торгов идут только эти). 2-ой - сигнал "намерений".

Проверить правильность расчетов можно по ленте сделок. Кстате.. почему бы сразу с неё и не начать

Согласен. Вот только приведенный индюк дает иные результаты ). Повторюсь,  если считать объемы только по флагам бай-селл, то суммарный объем будет существенно занижен.Правильные (соответствующие биржевой) объем дает volume[], но в этой функции нет возможности разделить объемы. Все это уже описывал.ранее. Это удивляет. МТ5 развитая и продвинутая платформа, mql5 мощный, развитый язык. А получение первичной биржевой информации - основа торговли. Хотелось бы быстрее разобраться с этой проблемой


P.S. Кстати, проверил Ваше крайнее предложение. Принтовал индюком все сделки (объем, флаг) и сравнивал с онлайн таблицей сделок. Вроде как  совпадают. Но заметил любопытный момент (может быть, я что-то не понимаю) . Все сделки проходят под флагами last-volume_buy, last-volume_sell. Так вот непонятно, почему везде присутствует last? Ведь по логике, сделка может проходить без изменения last. Выходит, что SymbolInfoTick() и лента сделок игнорирует эти сделки? Может в этом причина?  Ау,  разработчики! откликнитесь!

Причина обращения: