« Предыдущий пост | На главную страницу | Следующий пост »

Хранение данных в переменных

Любой эксперт оперирует с некоторыми данными - ценами, значениями индикаторов, объемами, количеством открытых позиций и пр. Те, места, где эти данные хранятся в эксперте, называются переменными. В качестве имен переменных можно использовать цифры (0-9), латинские прописные и строчные буквы (а - z и А - Z, следует помнить, что буквы 'a' и 'A' - совершенно разные символы), символ подчеркивания (_). Первый символ не может быть цифрой. Также имя переменной не должно совпадать с зарезервированным словом (т.е. словом, которое имеет особый смысл в языке MetaQuotes Language 4 - но об этом позже).

Желательно в качестве имени переменной использовать такое, из которого сразу становится понятным предназначение переменной. Например, переменная, содержащая количество открытых позиций, может иметь такое имя: OpenPositionsNumber.

Можно создавать переменные разных типов:

  • int - целое число (от -2147483648 до 2147483647);
  • bool - логический тип (или ложь - false, или истина - true);
  • datetime - дата и время (в формате D'YYYY.MM.DD HH:MM:SS');
  • color - цвет (о формате я расскажу в следующих выпусках);
  • double - вещественное число (-1.7 * 10-308 до 1.7 * 10308, точность - 15 значащих цифр);
  • string - заключенная в двойные кавычки строка (например, "это строка").

Перед использованием переменной ее надо объявить. Это можно сделать несколькими способами:

   тип     имя;
или
   тип    имя = начальное_значение;

Примеры объявлений переменных:

   int Count;
   datetime InitialDate = D'2006.07.12 00:00';
   string  ip_address = "127.0.0.1";

В дальнейшем для того, чтобы обратиться к значению переменной, надо будет просто указать ее имя:

   i = 5 + Count;

Иногда требуется сохранить не одно значение, а определенное количество взаимосвязанных значений. Например, значение индикатора на текущем баре, на предыдущем баре, ... , N-баров назад. Для таких целей существуют массивы. Массив - это индексированная совокупность однотипных данных.

Предположим, что у нас в эксперте есть такое описание массива Prices:

   double Prices[50];

Это означает, что массив-переменная Prices предоставляет доступ к 50 элементам типа double. Для доступа к i-му элементу надо указать Prices[i]. Нумерация элементов начинается с нуля и заканчивается 49-м элементов (в нашем случае).

Если Вы попробуете обратиться к элементу вне этого диапазона, то будет зафиксирована ошибка ERR_ARRAY_INDEX_OUT_OF_RANGE (4002), которую можно получить при помощи функции GetLastError().

В случае необходимости можно использовать не только одномерные массивы (у которых только один индекс), но и многомерные массивы.

Пример описания двухмерного массива, состоящего из шести массивов, каждый из которых состоит из 50 элементов:

  int mas[6] [50];

При описании массива можно в фигурных скобках задать начальные значения для каждого элемента:

   int    a[4][4] = { 1, 1, 1, 1,  2, 2, 2, 2,  3, 3, 3, 3,  4, 4, 4, 4 };

Начальные значения элементов массивов могут быть только константами. Если Вы в фигурных скобках при инициализации массива указали меньшее количество начальных значений, чем размерность массива, то недостающие элементы инициализируются нулями.

Существует несколько видов переменных: локальные, статические, внешние, глобальные переменные и формальные параметры функций. В следующем выпуске я более подробно расскажу о локальных и статических переменных.



Все статьи по теме "Пишем советников для MetaTrader 4".

« Предыдущий пост | На главную страницу | Следующий пост »

Комментарии по теме "Хранение данных в переменных"

а нельзя расширить вместимость блогов? А то долго ждать следующего дня....:))

Пока всё достаточно понятно. Интересно как это всё увязать с графиками и ордерами. Надеюсь примеры будут так же хорошо описаны и показаны, как и предидущие темы по этому языку

Я бы рад публиковать в день побольше материала, но, к сожалени, а может и к счастью у меня наблюдается катастрофическая нехватка времени. Особенно сейчас, т.к. сейчас я навожу последний штрихи в становлении Alpari (UK) в Англии. Но постараюсь как можно чаще и как можно больше выкладывать материала. В меру своих возможностей.

Все свои статьи я буду очень подробно объяснять на примерах. Мой блог предназначен прежде всего для начинающих, поэтому я постараюсь писать так, чтобы все было очень понятно и не надо было иметь предварительной подготовки.

Кто-нибудь подскажите пожалуйстаю как избавиться от ошибки 4002, которая говорит, что элемента с таким индексом в массиве не существует. Обращаюсь к массивам iHigh[], iClose[], ит.п. Хотя на графике такие свечи существуют. Ошибку исправить своими силами не получается.

Разместите свой комментарий по теме "Хранение данных в переменных"

Подписаться на мою рассылку



Размещение статьи "Хранение данных в переменных" на Вашем сайте

Размещение статьи "Хранение данных в переменных" на Вашем сайте возможно при условии выполнениия следующих условий:

  • Запрещается изменение оригинального текста без согласия автора - Андрея Ведихина.
  • Должен быть указан первоисточник. В случае публикации в интернете Вы должны разместить следующий код гиперссылки без изменений:
  • Запрещается коммерческое использование материалов, взятых с блога "Интернет-трейдинг на форекс / forex". Доступ к ним должен быть свободным, без взимания какой-либо платы, без обязательной регистрации и/или заполнения опросного листа (анкеты) и т.д.

В случае выполнения данных условий не требуется согласия автора блога "Интернет-трейдинг на форекс / forex" на размещение статьи "Хранение данных в переменных" на Вашем сайте.

Журнал FOREX MAGAZINE:



Архив номеров FOREX MAGAZINE
Котировки Forex:

Счетчики:

Авторские права © 2005-2006 Андрей Ведихин

Условия использования материалов блога "Интернет-трейдинг на форекс / forex"

Контакты с автором:


Движок сайта:
Movable Type 3.31