A MQL5 é uma linguagem de programação de alto nível usada para desenvolver indicadores personalizados, expert advisors (EAs) e outras estratégias de negociação automatizadas para a plataforma de negociação MetaTrader 5. Veja a seguir algumas das principais características da linguagem MQL5:
- Programação orientada a objetos: a MQL5 é uma linguagem orientada a objetos, ou seja, baseia-se no conceito de objetos que contêm dados e métodos. Isso torna a programação mais simples e eficiente, além de permitir melhor organização e reutilização do código.
- Ambiente de desenvolvimento integrado: a MQL5 conta com um ambiente de desenvolvimento integrado (IDE) que inclui editor de código, compilador e depurador. Isso facilita escrever e testar o código diretamente na plataforma MetaTrader 5.
- Biblioteca abrangente: a MQL5 possui uma extensa biblioteca de funções e indicadores nativos que podem ser usados para desenvolver estratégias de negociação. Além disso, há muitas bibliotecas de terceiros que podem ser integradas aos programas em MQL5.
- Programação orientada a eventos: a MQL5 utiliza um modelo de programação orientado a eventos, o que significa que os programas são executados em resposta a eventos específicos, como variações de preço, execuções de ordens ou eventos de temporizador.
- Multithreading: a MQL5 permite a programação com múltiplas threads, ou seja, é possível criar várias threads para executar diferentes partes de um programa simultaneamente. Isso pode ser útil para otimizar o desempenho e gerenciar estratégias de negociação complexas.
- Suporte a vários tipos de dados: a MQL5 oferece suporte a uma ampla variedade de tipos de dados, incluindo inteiros, números de ponto flutuante, strings e arrays. Além disso, conta com suporte nativo para trabalhar com dados financeiros, como dados de preço e volume.
Veja um exemplo simples de programa em MQL5 que calcula a média móvel de um par de moedas e imprime o resultado na janela do terminal:
// --- input parameters
input int Period = 20; // Period of the moving average
input ENUM_APPLIED_PRICE PriceType = PRICE_CLOSE; // Applied price type
// --- global variables
double MovingAverage; // Moving average value
// --- initialization function
int OnInit()
{
// Initialize the MovingAverage variable
MovingAverage = 0.0;
return(INIT_SUCCEEDED);
}
// --- main function
void OnTick()
{
// Calculate the moving average
MovingAverage = iMA(_Symbol, 0, Period, 0, PriceType, MODE_SMA, 0);
// Print the result to the terminal window
Print("Moving Average: ", MovingAverage);
}