рассчитанное для нулевого бара. Несмотря на то, что во время исполнения данного
эксперта значение этого индекса никогда не меняется (т.е. расчёт всегда производится для
нулевого бара), значение, возвращаемое функцией iMA(), всегда будет соответствовать
последнему расчётному, а именно, рассчитанному для текущего нулевого бара.
Если для каких-либо расчётов в программе необходимо получить значение функции
технического индикатора не для нулевого, а для какого-либо исторического бара, то в
вызове функции необходимо указать значение индекса того элемента индикаторного
массива, который нужен. Рассмотрим пример эксперта historybars.mq4, в котором
вычисляется значение Скользящей Средней на четвёртом баре:
//--------------------------------------------------------------------
// historybars.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
extern int Period_MA = 5; // Период расчётной МА
//--------------------------------------------------------------------
int start() // Спец. функция start
{
double MA_c, // Значение МА на 0 баре
MA_p, // Значение МА на 4 баре
Delta; // Разница МА на 0 и 4 баре
//--------------------------------------------------------------------
// Обращение к функции техн.инд.
MA_c = iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0);
MA_p = iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,4);
Delta = (MA_c - MA_p)Point; // Разница МА на 0 и 4 баре
//--------------------------------------------------------------------
if (Delta > 0 ) // Текущая цена больше старой
Alert("На 4 барах МА выросла на ",Delta,"pt"); // Сообщение
if (Delta < 0 ) // Текущая цена меньше старой
Alert("На 4 барах МА снизилась на ",-Delta,"pt");// Сообщение
//--------------------------------------------------------------------
return; // Выход из start()
}
//--------------------------------------------------------------------
В эксперте historybars.mq4 рассчитываются значения МА для текущего бара (с индексом
0) и для четвёртого бара (с индексом 4). Указанные значения индексов 0 и 4 в процессе
работы (этой, конкретной) программы не изменяются, в то же время программа может
работать бесконечно долгое время, всякий раз выполняя необходимые вычисления
значений МА для нулевого и четвёртого бара. Здесь важно ещё раз отметить: несмотря на
то, что вычисления ведутся для МА на барах с одними и теми же индексами, сами
340