Массив — это набор однотипных значений с доступом по индексу, и для разработчика робота это один из главных инструментов. Одномерный массив хранит одну последовательность, например значения индикатора или цены закрытия. Многомерный добавляет второе измерение и позволяет держать связанные данные вместе. За размером следит ArraySize, меняет его ArrayResize, а направление индексации задаёт ArraySetAsSeries: у обычного массива индекс 0 — первый элемент, у таймсерии — самый свежий бар.
Данные обычно получают через CopyBuffer (значения индикатора) и CopyRates (бары цены) — они копируют диапазон в подготовленный массив. Массивы применяют для буферов, истории цен, разбора позиций и сделок, расчёта среднего и поиска максимума. Типичные ошибки: выход за границу массива, путаница индексации и ArrayResize без ArraySetAsSeries.
// =============================================================================================== //
// = Средняя цена закрытия за последние N баров = //
// =============================================================================================== //
double AverageClose(int count)
{
double closes[];
ArraySetAsSeries(closes, true); // индекс 0 — свежий бар
ArrayResize(closes, count);
// === Копируем историю цен ===
if(CopyClose(_Symbol, _Period, 0, count, closes) <= 0)
return 0.0;
// === Среднее по массиву ===
double sum = 0.0;
for(int i = 0; i < ArraySize(closes); i++)
sum += closes[i];
return sum / count;
}
Подписывайтесь на канал, чтобы разбирать MQL5 шаг за шагом. Больше учебных материалов на https://max.ru/channel_mqlmasters и в Телеграме: https://t.me/mqlmasters.
#MQL5 #массивы #программирование #MetaTrader5 #MQLMaster