MQL5 — это высокоуровневый язык программирования, который используется для разработки пользовательских индикаторов, советников (EA) и других автоматизированных торговых стратегий для торговой платформы MetaTrader 5. Вот некоторые ключевые особенности языка MQL5:
- Объектно-ориентированное программирование: MQL5 — объектно-ориентированный язык, то есть он основан на концепции объектов, которые содержат и данные, и методы. Это упрощает и ускоряет программирование, а также позволяет лучше организовывать код и повторно использовать его.
- Встроенная среда разработки: MQL5 поставляется со встроенной средой разработки (IDE), которая включает редактор кода, компилятор и отладчик. Это позволяет без труда писать и тестировать код прямо в платформе MetaTrader 5.
- Обширная библиотека: в MQL5 есть обширная библиотека встроенных функций и индикаторов, которые можно использовать для разработки торговых стратегий. Кроме того, доступно множество сторонних библиотек, которые можно интегрировать в программы на MQL5.
- Событийно-ориентированное программирование: MQL5 использует событийно-ориентированную модель, то есть программы выполняются в ответ на определённые события, например изменения цены, исполнение ордеров или события таймера.
- Многопоточность: MQL5 допускает многопоточное программирование, то есть можно создавать несколько потоков, чтобы одновременно выполнять разные части программы. Это может быть полезно для оптимизации производительности и управления сложными торговыми стратегиями.
- Поддержка нескольких типов данных: MQL5 поддерживает широкий набор типов данных, включая целые числа, числа с плавающей запятой, строки и массивы. Кроме того, в нём есть встроенная поддержка работы с финансовыми данными, такими как данные о ценах и объёмах.
Вот простой пример программы на MQL5, которая вычисляет скользящую среднюю по валютной паре и выводит результат в окно терминала:
// --- 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);
}