Точность котирования

 

Столкнулся с такой проблемкой. По некоторому фьючерсу размер тика равен 0.0125.  Однако точность котирования (SYMBOL_DIGITS) равна 3.  Т.е. округляется до предпоследней цифры (ну это брокер выставил такое значение на сервере).  Из-за этого котировки в терминале получаются не кратными, и по сути не правильными (не соответствуют биржевым).

Корректную котировку приходится высчитывать по формуле:   realprice = round(mt5price / ticksize) * ticksize.   И корректное значение digits тоже приходится высчитывать, чтобы правильно отображать эти котировки.

В общем это всё очень костыльно. Необходимо внести исправления в терминал, чтоб он выдавал правильные котировки.  Надо понимать, что точность котирования определяется исключительно ticksize, из которого уже и вычисляется digits чисто математически. Т.е. для 0.0125 значение digits будет 4.  А не так, чтоб digits была независимой переменной как сейчас.   Она должна автоматически вычисляться на клиентской стороне, а не передаваться с сервера.  Тогда всё будет чётко и точно.

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

 

Пишите брокеру, кривые руки ничем не исправить.

 
Andrey Khatimlianskii:

Пишите брокеру, кривые руки ничем не исправить.

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

Если копнуть глубже, то дело не ограничивается лишь ticksize и digits.  К примеру, есть ещё такой противоречивый момент как способ расчёта прибыли по инструменту, определяемый параметром ENUM_SYMBOL_CALC_MODE.

В одних случаях эта прибыль у них рассчитывается по формуле:  (close_price-open_price)*Contract_Size*Lots,  а в других - по формуле:  (close_price-open_price)*TickPrice/TickSize*Lots.

Однако разбирающийся человек понимает, что это - одно и то же (масло масляное). Просто во втором случае расчёт идёт задом наперёд, т.к. TickPrice - это производная величина, вычисляемая как ContractSize*TickSize. И она в реальности нигде не должна храниться. Основные характеристики любого контракта, указывающиеся на сайте биржи, это размер контракта и размер тика.  Стоимость тика нигде не указывается, ибо это вычисляемая величина.  Т.е. расчёт для любого инструмента сводится к первой формуле.   А здесь нагородили огород, из-за чего брокер вынужден хранить все 3 параметра как независимые переменные, хотя в расчёте использует только две из них, а в третьей фактически может содержаться всякий мусор (и это порой случается, внося путаницу).  Как следствие, для форекса и акций нельзя верить тому, что выдаёт SYMBOL_TRADE_TICK_VALUE, а для фьючерсов - тому что выдаёт SYMBOL_TRADE_CONTRACT_SIZE, ибо это лишние параметры, нигде не участвующие, но хранящиеся у брокера.

 
Alexey Navoykov:

Да, но зато можно исключить участие кривых рук, я об этом и веду речь.

С конструктивными предложениями пишите в сервис-деск. Либо ответят по существу, либо исправят.

Хотя, возможно, вы просто не видите проблему со всех сторон.

 
Andrey Khatimlianskii:

С конструктивными предложениями пишите в сервис-деск. Либо ответят по существу, либо исправят.

Хотя, возможно, вы просто не видите проблему со всех сторон.

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