Просьба к разработчикам. Разъясните...

 

В Мtтатрейдере 4, билд 1260 заметил следующее:

В левом верхнем углу графика выведена панель для быстрой торговли.

Там показаны котировки 1.22716. На картинке зафиксировалось без спрэда. Но вопрос не в этом. Хотя такое я вообще первый раз увидел. Но у данного дилера спрэды маленькие. В основном 2 в пятизнаке.

Вопрос в другом. На этой панели достаточно часто показываются одни котировки.А вот котировки, отражающиеся справа красным и черным цветом - бид и аск почти всегда отличаются от котировок в панели быстрой торговли.

Счет реальный.

Почему это так?

 

Потому что это возможно в МТ, и брокеры этим иногда пользуются.

С какой целью — отдельный вопрос.

 
Как-то давно показывал рисунок, на котором разные котировки в окне "Обзор рынка", на графике и во вкладке "Торговля" окна "Терминал". Каких-то особых комментариев от разработчиков не было. Поэтому просто принял к сведению, что такое возможно.
 
Аналогично, у какого-то брокера обнаружил это, спросил на форуме, ответы от форумчан были, но зачем эта возможность вообще нужна -  от разработчиков тишина.
 
Andrey Khatimlianskii:

Потому что это возможно в МТ, и брокеры этим иногда пользуются.

С какой целью — отдельный вопрос.

Хотите сказать, что для каждого инструмента два потока котировок идёт? Скорее всего это баг.
 
Aliaksandr Hryshyn:
Хотите сказать, что для каждого инструмента два потока котировок идёт? Скорее всего это баг.
Это фича. 
Например, чтобы чарты у всех были одинаковые, а торговал каждый с персонально настроенным марк-апом (например, для разных партнерских групп). 
 

Хуже другое. Заметил еще такое. В левом верхнем углу котировки OHLC бывает хай меньше, чем текущий бид. И далее в истории так и остается тот хай, который в левом верхнем углу показывался.

Дилер/брокер закрывает сделку по котировке бид, которая оказывается выше, чем фиксируется в истории. А в документах дилера/брокера есть упоминание, что при выводе денег они могут проверить и, если произошла торговля по нерыночным котировкам, то результат сделки могут не засчитать.

Так что неточности, о которых здесь пишется, могут иметь вполне конкретные финансовые последствия. 

============

В частности, компания, картинку с котировками которой привел в начальном сообщении, несколько дней как ввела котирование без спрэдов. Бид=аск. Ощущения фантастические.

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

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Сделка является отражением факта совершения торговой операции на основании ордера, содержащего торговый приказ. Каждая сделка описывается свойствами, позволяющими получить информацию о ней. Для чтения значений свойств используются функции вида Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая...
 
вод.
Eugeni Neumoin:

Хуже другое. Заметил еще такое. В левом верхнем углу котировки OHLC бывает хай меньше, чем текущий бид. И далее в истории так и остается тот хай, который в левом верхнем углу показывался.

Дилер/брокер закрывает сделку по котировке бид, которая оказывается выше, чем фиксируется в истории. А в документах дилера/брокера есть упоминание, что при выводе денег они могут проверить и, если произошла торговля по нерыночным котировкам, то результат сделки могут не засчитать.

Так что неточности, о которых здесь пишется, могут иметь вполне конкретные финансовые последствия. 

============

В частности, компания, картинку с котировками которой привел в начальном сообщении, несколько дней как ввела котирование без спрэдов. Бид=аск. Ощущения фантастические.

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

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

 

Столкнулся в MQL4 с интересной сутиацией в работе с функцией StringSplit()

на примере хелпа по языку:

string to_split="мама_мыла_раму";

   string sep="_"; 

   ushort u_sep;  

   string result[];               

   u_sep=StringGetCharacter(sep,0); 

   int k=StringSplit(to_split,u_sep,result);

Функция вернула количество подстрок (в переменную k) и инициализированный массив.

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

Например в Node (Java  и т.д.) логичная инициализация через присвоение:

var result;

result = to_split.split(sep); //чрез присвоение, логично

console.log ( result [0 ] ) ; //"мама"


В MQL4  инициализация:

string result[];

StringSplit(to_split,u_sep,result);//без присвоения , не логично?

Print(result[0]); // "мама"

)


Кончено, никаких проблем, так как код компилируется и работает. :)

Однако данная особенность использования функции недокументирована? Или я что-то пропустил?



Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Функция ArrayResize() позволяет задать для массива размер с некоторым запасом для его будущего увеличения без физического перераспределения памяти. Это сделано для улучшения быстродействия, так как операции по распределению памяти...
 
Victor Golovkov:


Однако данная особенность использования функции недокументирована? Или я что-то пропустил?

В документации первой же строкой написано:

Получает из указанной строки подстроки по заданному разделителю и возвращает количество полученных подстрок.

То есть массив result заполняется. Ведь он передается в в функцию не по константной ссылке. Поэтому функция может его изменять и изменяет именно так, как сказано в документации.
 
Ihor Herasko:

В документации первой же строкой написано:

То есть массив result заполняется. Ведь он передается в в функцию не по константной ссылке. Поэтому функция может его изменять и изменяет именно так, как сказано в документации.

Благодарю, Игорь. Это всё понятно.

Эта функция по-сути объединяет две:

  1.  Инициализировать строковый массив по разделителю.
  2.  Получить длину массива.

Из-за этого возникает некоторая путанница (если брать за основу аналогию с нестроковыми массивами).

- - -

Это просто не совсем обычно, но, тем не менее понятно :) 

Документация по MQL5: Строковые функции / StringInit
Документация по MQL5: Строковые функции / StringInit
  • www.mql5.com
[in]  Длина строки после инициализации. Если размер=0, то деинициализирует строку, то есть, буфер строки освобождается и адрес буфера обнуляется. Если  character=0 и размер new_len>0, то...