AlgoTrading Solutions
AlgoTrading Solutions личный блог
01 ноября 2018, 11:35

Вещественные типы данных в MQL4 и MQL5

Всех приветствую. Продолжаем изучение языка MQL4.

В прошлый раз мы рассмотрели целые типы данных, а сегодня поговорим о вещественных типах. Они предназначены для того, чтобы хранить не только целую, но и дробную часть числа. Поэтому они гораздо более универсальны, чем целые типы данных. В плане математических операций с целыми числами мы ограничены тем, что результат обязательно должен быть целым, иначе мы потеряем дробную часть числа. По этой причине целые типы чаще всего применяются для нумерации элементов массива и для всевозможных счётчиков, когда нам необходимо посчитать сколько раз выполнилось какое-либо условие. Например, перебрать все активные ордера и посчитать сколько из них каждого типа: (buy, sell, buy stop, buy limit, sell stop, sell limit).

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

Вещественных типов данных в языке MQL4 (и в MQL5 тоже) всего 2:

  • float
  • double

Причём, почти всегда рациональнее использовать тип double. Он точнее, имеет более широкий диапазон значений и в связи с этим максимально универсален. Есть единственная причина иногда использовать тип float – экономия памяти при работе с очень большими массивами вещественных чисел. Если переменная типа float весит в памяти 4 байта, то переменная double занимает 8 байт. Хотя, с современными объёмами оперативной памяти в компьютерах это вряд ли станет проблемой. Да и задачи, когда возникает необходимость работать с огромными массивами вещественных значений, попадаются не часто.

Вещественные типы данных в языке MQL5 полностью совпадают. Так что содержание поста актуально и для тех, кто изучает MQL5.

Все подробности о вещественных типах данных, а так же примеры применения можно узнать из закреплённого видео. Спасибо за внимание.

12 Комментариев
  • Константин
    01 ноября 2018, 13:02
    лучше всего по работе с вещественными типами описывается в С++, обязательно нужно сделать упор на сравнение вещественных типов, т.к. в этом заключается у многих начинающих программистов ошибка
    и ни в коем случае не уповать на NormalizeDouble(...) из функционала MQL, со мной не раз эта функция играла злую шутку, в итоге написал собственную функцию сравнения с использованием NaN и нужной точности в разрядах...

    как совет начинающим, не учите MQL, придете в итоге в тупик, платформа урезанная и зацикливает разработчика только на ней, отсекая и искривляя знания в области алготрейдинга, лучше изучить отдельно язык программирования, как приоритет C# и С++, в довесок лучше нагрузиться еще Python, и ни когда не слушать тех, кто говорит — Python скриптовый язык и он из-за этого очень медленный, на мой взгляд Python лучшее решение в алготрейдинге, а в связке с С++ это адская смесь ))
  • Константин
    01 ноября 2018, 14:18
     по использованию NaN я про то и написал, что лучше создать свой функционал, который основан на тактике тысяч программистов, а не на черном ящике MetaQuotes, не я один попадал с их NormalizeDouble, во время периодических обновлений, они конечно потом приводят все в норму, но это потом
  • Константин
    01 ноября 2018, 14:20
    а с массивами string вы не попали последнее время ни разу? я дак сперва запаниковал, потом зашел на их форум и понял, что это ппц, у них эта проблема висела несколько билдов, исправили только в 1934

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

    и если автор такой умный, то пусть напишет здесь как тип string представлен в том же MQL, раньше эта инфа была у них доступна, но с некоторого времени ее убрали, видимо пользователи стали задавать не нужные вопросы

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн