Блог им. AlgoTrader1
Всех приветствую. Продолжаем изучение языка MQL4.
В прошлый раз мы рассмотрели целые типы данных, а сегодня поговорим о вещественных типах. Они предназначены для того, чтобы хранить не только целую, но и дробную часть числа. Поэтому они гораздо более универсальны, чем целые типы данных. В плане математических операций с целыми числами мы ограничены тем, что результат обязательно должен быть целым, иначе мы потеряем дробную часть числа. По этой причине целые типы чаще всего применяются для нумерации элементов массива и для всевозможных счётчиков, когда нам необходимо посчитать сколько раз выполнилось какое-либо условие. Например, перебрать все активные ордера и посчитать сколько из них каждого типа: (buy, sell, buy stop, buy limit, sell stop, sell limit).
Вещественные типы в этом смысле могут применяться гораздо шире, в самых разных математических операциях, потому что хранят целую и дробную часть числа.
Вещественных типов данных в языке MQL4 (и в MQL5 тоже) всего 2:
Причём, почти всегда рациональнее использовать тип double. Он точнее, имеет более широкий диапазон значений и в связи с этим максимально универсален. Есть единственная причина иногда использовать тип float – экономия памяти при работе с очень большими массивами вещественных чисел. Если переменная типа float весит в памяти 4 байта, то переменная double занимает 8 байт. Хотя, с современными объёмами оперативной памяти в компьютерах это вряд ли станет проблемой. Да и задачи, когда возникает необходимость работать с огромными массивами вещественных значений, попадаются не часто.
Вещественные типы данных в языке MQL5 полностью совпадают. Так что содержание поста актуально и для тех, кто изучает MQL5.
Все подробности о вещественных типах данных, а так же примеры применения можно узнать из закреплённого видео. Спасибо за внимание.
и ни в коем случае не уповать на NormalizeDouble(...) из функционала MQL, со мной не раз эта функция играла злую шутку, в итоге написал собственную функцию сравнения с использованием NaN и нужной точности в разрядах...
как совет начинающим, не учите MQL, придете в итоге в тупик, платформа урезанная и зацикливает разработчика только на ней, отсекая и искривляя знания в области алготрейдинга, лучше изучить отдельно язык программирования, как приоритет C# и С++, в довесок лучше нагрузиться еще Python, и ни когда не слушать тех, кто говорит — Python скриптовый язык и он из-за этого очень медленный, на мой взгляд Python лучшее решение в алготрейдинге, а в связке с С++ это адская смесь ))
Не пойму к чему Вы занимаетесь агитированием за C#, С++, Python... в теме, которая посвящена другому языку программирования. Ну не нравится Вам MQL, — никаких вопросов. Не мешайте изучать тем, кому он интересен и не сбивайте людей с толку.
а вашим читателям стоит задуматься над тем, что яписал выше, т.к. ориентируясь только на MQL, они идут в никуда, уже сейчас используя МТ4 и МТ5 как коннектор, можно спокойно писать код на нормальных языках, где куча библиотек под различный анализ, а используя библиотеки из стандартной поставки MQL, есть шанс налететь на очередные грабли, почитайте форум mql5.com, там одни проблемы по их использованию стандартной библиотеки
а если использовать те же Python библиотеки, то пользователь ограждается от детских ошибок т.к. там библиотеки протестированы тысячами программистов, прежде чем их двинули в продакшн
Это именно агитирование. Вы что-то предлагаете, может у Вас свои курсы по обучению на C++, C#, Python? Даже если так, это не место для их рекламы.
Если программированию Вы не обучаете, MQL Вас не интересует, то что Вы тут делаете?! Вам-то, собственно, какое дело до того, кто чем интересуется и что изучает? Ваш вклад какой? Посоветовать изучать что-то другое? Вы, может быть, считаете что одним этим действием оказали зрителям несравненную помощь… но это не так.
Те, у кого проблем не возникает, ничего не пишут. Поэтому никакой статистикой приведённый пример назвать нельзя.
это к тому, что лучше использовать простые реализации свои, а не чужие, на ошибки не налетишь, пользуйтесь ))
и не нужно ни какой агрессии, у меня не было целью вас как то очернить, но не зная С++, сам MQL становится реально черным ящиком, а этого вы не доводите до своих читателей
кстати данный код будет работать напрямую в С++ и в MQL
По поводу «своих велосипедов» ничего не имею против, сам иногда изобретаю то, что уже есть, если мне не нравится реализация.
а проблема у MQ одна — изобрели С++ и назвали его MQL, а т.к. тестеров языка мало, то и ошибки там детские
кроме того у них не то что не принят, а даже не собираются принимать стандарт языка, как это принято, т.е. все основано на справке, которая периодически правится ими же, одни и те же сущности могут работать в разных билдах по разному, при чем меняя свое поведение по несколько раз
я поэтому и приверженец стабильных языков, а не лисапедов ))
просто когда учите народ, то объясняйте сразу главные проблемы языка, что бы будущие программисты знали с чем столкнутся
вот и думайте прежде чем бездумно использовать их типы, которые в нормальных языках считаются сложными типами данных — классами
и если автор такой умный, то пусть напишет здесь как тип string представлен в том же MQL, раньше эта инфа была у них доступна, но с некоторого времени ее убрали, видимо пользователи стали задавать не нужные вопросы