Типы данных в MQL4, которыми можно оперировать

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

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

Когда вы объявляете переменную, вы определяете, какой тип данных будет содержать данная переменная. В MQL4 существуют следующие типы данных:

  • Целые числа.
  • Числа с плавающей точкой.
  • Логические.
  • Строковые.
  • Дата и время.
  • Цвет.
  • Литералы.
  • Перечисления.

А также сложные типы данных для объектно-ориентированного программирования:

  • Структуры.
  • Классы.

Целые числа

Существуют различные типы целых чисел для хранения числовых значений различной длины:

  • char.
  • short.
  • int.
  • long.
  • uchar.
  • ushort.
  • uint.
  • ulong.

Данные типы были разработаны для оптимизации памяти, выделяемой для переменных. К примеру, если вы хотите использовать переменную со значением 7, вы можете объявить ее как char, которая хранит диапазон значений от -128 до 128 и занимает в памяти 1 байт. Если вам нужно использовать значение 1999, вам нужно объявить тип short, который хранит значения от -32768 до 32767, однако уже занимает в памяти 2 байта.

Наиболее используемый тип целых чисел — int. В большинстве случаев он сможет удовлетворить все ваши требования, поскольку хранит от -2147483648 до 2147483647 и занимает в памяти 4 байта.

Типы данных, не начинающиеся с u, могут хранить положительные или отрицательные значения. Типы, которые начинаются с u в качестве первой буквы (например, uint, ushort) могут хранить только положительные значения.

int i=-123456789; // Объявляем и инициализируем переменную целую переменную типа int
uint k=234567890; // Объявляем и инициализируем переменную целую переменную типа uint
char h=100; //  Объявляем и инициализируем переменную целую переменную типа char
short j=1999; // Объявляем и инициализируем переменную целую переменную типа short

Если вы попытаетесь присвоить переменной значение, выходящее за пределы диапазона ее типа, это значение будет усечено и будет отличаться от ожидаемого:

void OnStart ()
   {
// ---
 
    char h=1234; // Объявляем и инициализируем переменную целого типа char
                 //char может хранить значения до 127, поэтому значение усекается
 
    Print("h=",h); // Вывести значение h, чтобы проверить сохраненное значение переменной
   }

типы данных в mql4

Числа с плавающей точкой

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

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

  • float, минимум 1.175494351e-38, максимум 3.402823466e+38
  • double, минимум 2.2250738585072014e-308, максимум 1.7976931348623158e+308

Для объявления этих типов данных используйте float и double.

double d=10/3; //Объявлена переменная d как результат деления 10/3
float f=10/3; //Объявлена переменная f как результат деления 10/3

Логические типы данных

Логический тип данных может принимать значение true или false.

Этот тип очень полезен для установки флагов, то есть когда вы хотите проверить, соблюдено ли определенное условие перед выполнением некоторых операций. Например, если вы хотите отключить торговлю в эксперте на MQL4, вы можете определить переменную Trading_Enabled логического типа и установить для нее значение true или false. Затем вы можете изменять данное значение переменной и проверять ее перед размещением новых ордеров.

Чтобы объявить переменную логического типа, вам нужно использовать bool. Имейте в виду, что true и false могут быть представлены как числа 1 и 0 соответственно.

bool Trading_Enabled=true; //Объявляем и инициализируем переменную логического типа

Строковые типы данных

Строка позволяет хранить и манипулировать любой буквенно-цифровой последовательностью символов. Это может быть общий текст, метка, описание, имя, цифры, специальные символы и т. д.

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

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

string s="Привет, мир!"; //Объявлена новая переменная s типа string со значением Привет, мир!

Дата и время

Дата и время — это тип данных, используемый для хранения даты и времени в виде количества секунд, прошедших с 01 января 1970 года.

Это очень полезный тип данных для работы с датой и временем. Чтобы определить переменную как дата и время, нужно начать с datetime, а затем присвоить ей значение. Вы можете использовать строку в формате:

D’YYYY.MM.DD hh:mm:ss’ или
D’DD.MM.YYYY hh:mm:ss’

где YYYY — это год
MM — месяц
DD — день
hh — час
mm — минута
ss — секунда

Если какой-либо элемент даты отсутствует, MetaTrader будет использовать текущее время. Если элемент времени отсутствует, MetaTrader выставит 00.

datetime t1=D'2016.08.01 14:10:00';    //t1 объявлена как дата и время и присвоено 2016.08.01 14:10:00
datetime t2=D'2016.08.01 14';          //t2 объявлено как дата и время назначено 2016.08.01 14:00:00
datetime t3=D'14:10:00';               //t3 объявлено как datetime и присвоено 14:10:00
datetime t4=D'10.09.2016 14:10:00';    //t4 объявлен как datetime и назначено 10.09.2016 14:10:00

MetaTrader имеет несколько функций для работы с переменными даты и времени. К примеру, возможно преобразования даты и времени в строку и наоборот.