Qualquer programa funciona com dados. Os dados podem ser de diferentes tipos dependendo da sua finalidade. Por exemplo, dados inteiros são usados para acessar componentes de arrays. Dados de preço pertencem ao tipo de dupla precisão com ponto flutuante. Isso está relacionado ao fato de que nenhum tipo de dados especial para detalhes de preço é fornecido pelo MQL5.

Dados de diferentes tipos são processados com diferentes taxas. Dados inteiros são os de processamento mais rápido. Para processar dados de dupla precisão, um co-processador especial é utilizado. No entanto, por causa da complexidade da representação interna de dados com ponto flutuante, eles são processados mais devagar que os dados inteiros.

Dados do tipo string são os de processamento mais lento por causa da alocação/realocação dinâmica de memória de computador.

Os tipos básicos de dado são:

inteiros (char, short, int, long, uchar, ushort, uint, ulong);
lógico (bool);
literais (ushort);
strings (string);
números com ponto flutuante (double, float);
cor (color);
data e hora(datetime);
enumeradores (enum).
Os tipos complexos de dado são:

estruturas;
classes.
Em termos de OOP tipos de dados complexos são chamados de tipos de dados abstratos.

Os tipos color e datetime fazem sentido apenas para facilitar a entrada e visualização de parâmetros definidos do lado de fora - a partir da tabela de um Expert Advisor ou propriedades de um indicador customizado (o guia Entradas). Dados de cor (color) e data e hora (datetime) são representados como inteiros. Tipos inteiros e tipos de ponto flutuante são chamados tipos aritméticos (numéricos).

Apenas conversões de tipo (type casting) implícitas são usadas em expressões, a menos que uma conversão (casting) explícita seja especificado.