Блог им. AlgoTrader1

Вещественные типы данных в 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.

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

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

как совет начинающим, не учите MQL, придете в итоге в тупик, платформа урезанная и зацикливает разработчика только на ней, отсекая и искривляя знания в области алготрейдинга, лучше изучить отдельно язык программирования, как приоритет C# и С++, в довесок лучше нагрузиться еще Python, и ни когда не слушать тех, кто говорит — Python скриптовый язык и он из-за этого очень медленный, на мой взгляд Python лучшее решение в алготрейдинге, а в связке с С++ это адская смесь ))
avatar
Константин, в прошлый раз практически это и написал, С++ учите!
avatar
Константин, ничто не мешает проверять число на NaN, а затем уже округлять.

Не пойму к чему Вы занимаетесь агитированием за  C#, С++, Python... в теме, которая посвящена другому языку программирования. Ну не нравится Вам MQL, — никаких вопросов. Не мешайте изучать тем, кому он интересен и не сбивайте людей с толку.
avatar
AlgoTrading Solutions, это не агитирование, если вы не в курсе, то тот же MQL полностью основан на синтаксисе С++ `98, есть различия из-за одного момента, в MQL работает пул памяти, поэтому у пользователей нет прямой возможности обратиться к сущности по адресу в памяти, только через дескриптор в пуле, ну и по мелочи есть различия

а вашим читателям стоит задуматься над тем, что яписал выше, т.к. ориентируясь только на MQL, они идут в никуда, уже сейчас используя МТ4 и МТ5 как коннектор, можно спокойно писать код на нормальных языках, где куча библиотек под различный анализ, а используя библиотеки из стандартной поставки MQL, есть шанс налететь на очередные грабли, почитайте форум mql5.com, там одни проблемы по их использованию стандартной библиотеки
а если использовать те же Python библиотеки, то пользователь ограждается от детских ошибок т.к. там библиотеки протестированы тысячами программистов, прежде чем их двинули в продакшн
avatar
Константин, с чего Вы взяли, что я не в курсе заимствования синтаксиса из C++? Не сомневаюсь, что никакой из моих материалов Вы не смотрели, но решили зайти, построить из себя специалиста...

Это именно агитирование. Вы что-то предлагаете, может у Вас свои курсы по обучению на C++, C#, Python? Даже если так, это не место для их рекламы.

Если программированию Вы не обучаете, MQL Вас не интересует, то что Вы тут делаете?! Вам-то, собственно, какое дело до того, кто чем интересуется и что изучает? Ваш вклад какой? Посоветовать изучать что-то другое? Вы, может быть, считаете что одним этим действием оказали зрителям несравненную помощь… но это не так. 

Те, у кого проблем не возникает, ничего не пишут. Поэтому никакой статистикой приведённый пример назвать нельзя. 
avatar
AlgoTrading Solutions, слова ни чего не значат, покажите мне код — Линус Торвальд



это к тому, что лучше использовать простые реализации свои, а не чужие, на ошибки не налетишь, пользуйтесь ))
и не нужно ни какой агрессии, у меня не было целью вас как то очернить, но не зная С++, сам MQL становится реально черным ящиком, а этого вы не доводите до своих читателей

кстати данный код будет работать напрямую в С++ и в MQL
avatar
Константин, не надо недооценивать свои способности ошибаться) Такое тоже возможно. Исправляя чужие ошибки можно и своих нагородить. 

По поводу «своих велосипедов» ничего не имею против, сам иногда изобретаю то, что уже есть, если мне не нравится реализация.
avatar
AlgoTrading Solutions, на то оно и программирование, что придти к одному знаменателю можно через огромный оверхед и кучу велосипедов )))
а проблема у MQ одна — изобрели С++ и назвали его MQL, а т.к. тестеров языка мало, то и ошибки там детские
кроме того у них не то что не принят, а даже не собираются принимать стандарт языка, как это принято, т.е. все основано на справке, которая периодически правится ими же, одни и те же сущности могут работать в разных билдах по разному, при чем меняя свое поведение по несколько раз
я поэтому и приверженец стабильных языков, а не лисапедов ))
просто когда учите народ, то объясняйте сразу главные проблемы языка, что бы будущие программисты знали с чем столкнутся
avatar
 по использованию NaN я про то и написал, что лучше создать свой функционал, который основан на тактике тысяч программистов, а не на черном ящике MetaQuotes, не я один попадал с их NormalizeDouble, во время периодических обновлений, они конечно потом приводят все в норму, но это потом
avatar
а с массивами string вы не попали последнее время ни разу? я дак сперва запаниковал, потом зашел на их форум и понял, что это ппц, у них эта проблема висела несколько билдов, исправили только в 1934

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

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

avatar
Сам с проблемой с массивами string не сталкивался. По поводу представления типа string есть информация в справке. 


avatar
MQL самый мерзкий язык с которым мне приходилось сталкиваться у них 5-4=0.99999999999999999999999991

Читайте на SMART-LAB:
🖥 Софтлайн накопил долги
Разработчик ПО отчитался за 4 квартал и весь прошлый год   Софтлайн (SOFL) ➡️ Инфо и показатели     Результаты за 4 квартал —...
Фото
🔔 Информация о выплате купонного дохода для наших инвесторов
Сегодня, 19 февраля, ООО МФК «ПСБ Финанс» выплатило купонный доход по облигациям ПСБ Фин2P2 (RU000A10E4G8) за купонный период с...
Самолет лидер по объему ввода жилья в МО
Друзья, привет! Продолжаем делиться своими результатами. 🚀 По данным Главстройнадзора МО , мы стали лидером по объемам ввода  жилья в...
Фото
Россети Ленэнерго. Отчет об исполнении инвестпрограммы за Q4 2025г. Опасения оправдались - обесценение съело прибыль
Компания Россети Ленэнерго опубликовала отчет об исполнении инвестпрограммы за Q4 2025г., где показаны финансовые показатели компании по...

теги блога AlgoTrading Solutions

....все тэги



UPDONW
Новый дизайн