Наши рекомендации:

  1. Главная
  2. Уроки MQL4
  3. 1.1 Типы данных и арифметические операции

1.1 Типы данных и арифметические операции

1.1 Типы данных и арифметические операции

Доброго времени суток!

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

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

Типы данных:

  • int — (сокращенно от integer)  — целое число. Тип данных, который задается числам, не имеющим дробной части. Может быть отрицательным. Минимальное/максимальное значение которого может быть -2 147 483 648 / 2 147 483 647. Данный тип используется для указания номера тикета ордера, магик номера, тип ордера и т.д.
  • double — дробное число. Присваивается всем переменным со знаком после запятой. Может быть отрицательным. Минимальное и максимальное значение 2.2250738585072014e-308 / 1.7976931348623158e+308, проще говоря — может быть очень большим и маленьким. В торговле применяется для определения торгового лота, цены на рынке, целей ордера, прибыли, комиссии и т.п.
  • string — строка, текстовое значение. Любой текст, который вы хотите записать, хранится в стринге в кавычках.  Максимальная длина записи string мне неизвестна, но я сохранял в ней пару тысяч слов и все уместилось. Стоит заметить, что длина при выводе переменной string в Print в журнал, будет обрезана до 64 символов. Данный тип данных используется в наименовании валютной пары, комментарию к ордеру, в любом текстовом лейбле на графике.
  • bool — целый тип, который содержит в себе два значения: true — истина, равна 1 и false — ложь, равна 0. Сокращенно от boolean — логический. Нужен, когда нам необходимо узнать ответ какого-то логического выражения. В терминале используется для проверок: разрешена ли торговля, импорт DLL, реальный сейчас счет или демо и т.д.
  • datetime — целый тип данных, который отображает время. Начинается с нуля, что эквивалентно 1970.01.01 0:00:00. Максимальное значение равно Новому Году 3000.12.31, так что на наш век объема памяти хватит. Во времени исчисляется текущее время терминала, время открытия бара, открытия или закрытия ордера и т.д.
  • color — целый тип данных, хранит в себе информацию о цвете. Память элемента 4 байта, где первый не учитывается, а три остальные содержат RGB-составляющие цвета. Используется для обозначения цвета графических объектов, значков открытия, закрытия ордера, всего, что связано с цветом на графике..

Это основные типы данных Meta Trader 4, которыми я пользуюсь в 95% случаев, остальные используются крайне редко, их можно будет рассмотреть в других уроках, если будет такая необходимость.

Примеры:

Мы создадим переменную а, которая является целым числом типа int. Знак равно будет обозначать присваивание этой переменной значения, в нашем случае мы хотим, чтобы равнялась двум. Чтобы завершить операцию, нужно поставить точку с запятой (;) в конце, иначе наше действие считается не завершенным, и компилятор выдаст ошибку.

Если же нам нужно создать переменную со значением дробного числа, то мы используем тип данных double.

Создать переменную без присвоения ей типа в данном языке программирования нельзя, всегда должна быть определенность в переменных. Можно создать объявленную переменную без значения, на это редактор не будет ругаться, но с точки зрения правильности кода у нее должно быть хоть какое то значение,. Поэтому если вам нужна переменная, но вы еще не знаете чему она будет равняться в будущем — приравняйте ее к нулю, впоследствии ей можно будет передать любое значение:

Переменная типа bool нужна в основном для проверки условий. В нашем случае мы задаем ее равной ложь.

Допустим мы создали переменную и по умолчанию присвоили ей значение false. Далее проверяем какое-либо условие, допустим сигнал на вход в рынок. Если этот сигнал подтверждается, то false меняем на true, а уже далее ниже по коду будет проверка на значение этой переменной и если она true — происходит открытие ордера.

Наименование переменных может быть любым, все зависит от вашего вкуса. У профессиональных программистов есть определенные правила для их создания, но как по мне — чем понятнее будет вам, тем лучше. Вы же пишите код для себя, а не для команды профессионалов, которым вам впоследствии нужно будет его передавать. Потом у вас образуется свой стиль, но нужно помнить, что наименование должно быть без пробелов. Вы не можете назвать переменную my integer, но можете использовать такой вариант: my_integer.  

Также не стоит:

  • называть переменные русскими и другими буквами, отличными от английского алфавита;
  • делать слишком длинное название, например my_first_created_viriable_is_awesome, это неудобно. Имя не может превышать 63 знака.
  • называть переменную непонятными символами, например askjrhk. Вам самим будет сложно потом понять за что она отвечает;

Нельзя:

  • Использовать только цифры в наименовании переменной.
  • Идентификатор не может совпадать с уже использованным, зарезервированным программным словом, предопределенной переменной или константой, например: Open, High, Ask, Volume, color, if, return, continue, OBJPROP_ANCHOR и т.д.

Стринговая переменная создается по тем же правилам, только текст обязан быть заключен в кавычки:

Переменная цвета будет отображать тот цвет, который вы возьмете из набора Web-цветов в справочнике, либо укажете сами через палитру цветов RGB. На примере ниже два цвета: красный и пользовательский коралловый.

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

или

Арифметические операции

С переменными можно совершать математические операции, такие как:

  • сложение/вычитание
  • умножение/деление
  • изменение знака
  • Определять остаток от деления
А также добавлять к определенному числу единицу, либо ее вычитать, это делается знаками ++/—

Операции присваивания

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

Рассмотрим еще пример. Чтобы проверить вычисления, вы можете воспользоваться принтом в журнал.

На первом уроке мы делали принт в журнал и комментарий «Hello World», теперь мы можем не повторять эту строчку два раза, а создать переменную с этим текстом:

Принтом можно выводить математические функции в журнал, но чтобы в редактора не было предупреждений, эти данные нужно преобразовать в тип string. Т.е. если у нас целое число, равное единице, то мы должны перевести его в текст «1». Если вы скопировали принт с математического примера выше, то у вас должно быть два предупреждения, это считается некорректным.

В первом принте мы преобразуем int в string. У функции IntegerToString нет параметров, поэтому в круглых скобках мы указываем только переменную а5Во втором примере у функции DoubleToString два параметра — первый это наша переменная, второй отображает количество знаков после запятой, в нашем случае это один знак, потому что больше и не нужно. Количество знаков после запятой в основном нужно, чтобы корректно выводить значение цены, прибыли, других расчетов.

Тип данных bool не нужно преобразовывать, если мы хотим получить текст true или false. Если же нам нужно числовое значение 1 или 0, то тогда нужно воспользоваться функцией IntegerToString.

В последнем примере мы переводим время в текст, для этого нужно первым параметром TimeToString указать нашу переменную времени, а вторым формат вывода, в нашем случае это дата (TIME_DATE) и время вплоть до минут (TIME_MINUTES).

Также нужно заметить, что если указывать данные в Print через запятую, а не через знак «+», то ошибки преобразования в редакторе не будет, но и само преобразование не выберет за вас корректное количество знаков после запятой, либо формат времени, поэтому рекомендуется делать его в любом случае.

Преобразование можно делать и наоборот — из string в int, double, time и т.д. Тут я не вижу нужны расписывать подробно, можно ознакомиться в справке.

Заключение

В этом уроке мы изучили азы математических операций и разнообразные типы данных. В будущем без них никак. Все примеры выше вы можете проверить и опробовать в приложенном файле скрипта 1.1 Data type and Arithmetic, воспользовавшись принтом или комментарием. Можно попробовать составить более сложные уравнения. После практики можете переходить к следующему уроку.

2 комментария. Оставить новый

  • Мари
    23.10.2022 15:07

    А почему нет домашних заданий к урокам?)

    Ответить
    • Здравствуйте, Мари!
      Потому что трейдеры это сознательные ученики 🙂
      А вообще, лучший ответ в сети:
      «Из-за высокой нагрузки дети меньше спят. Они засиживаются над учебниками допоздна и переживают из-за оценок, в итоге появляются проблемы со сном». 🙂

      Ответить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Меню