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

GlobalVariableName(): имя глобальной переменной

В этом выпуске я расскажу о функции GlobalVariableName():

   string GlobalVariableName(int index)

Функция GlobalVariableName() возвращает имя глобальной переменной с номером index. Порядковый номер переменной должен быть большим или равным нулю, но меньше, чем значение, возвращаемое функцией GlobalVariablesTotal().

Например, мы можем вывести имена всех глобальных переменных:

   int index;
   string gv_name;
   Print("Всего глобальных переменных: ", GlobalVariablesTotal());
   for (index=0; index<GlobalVariablesTotal();index++)
     {
      gv_name = GlobalVariableName(index);
      if (GetLastError()==0)
        Print("Переменная с номером ", index, " имеет имя ", gv_name);
      else
        Print("Ошибка при получении имени глобальной переменной с номером ", index);
     }

Предположим, что мы храним какую-то нестандартную информацию о конкретной позиции или ордере в глобальных переменных. В качестве имени глобальной переменной мы используем тикер ордера. Т.е. если нам надо сохранить информацию (например, баланс торгового счета в момент открытия этого ордера) об ордере #156777, то мы создаем глобальную переменную с именем #156777 и присваиваем ей значение текущего баланса.

Предположим, нам надо вывести список ордеров, которые были открыты, когда баланс был меньше 10000.

   int index;
   string name;
// пробежимся по всем глобальным переменным for (index=0; index<GlobalVariablesTotal();index++) { name = GlobalVariableName(index); if (GetLastError()!=0) { Print("Ошибка при получении имени глобальной переменной с номером ", index); continue; }
// убедимся, что имя глобальной переменной начинается с # if (StringSubstr(name, 0, 1)!="#") continue;
// убедимся, что после # идут одни цифры int i; bool is_numeric; is_numeric = true;
for (i=1; i<StringLen(name);i++) { if ((StringGetChar(name, i)<48) // 48 - код '0' ||(StringGetChar(name, i)>57)) // 57 - код '9' { is_numeric = false; break; } } if (!is_numeric) continue;
// проверим значение баланса if (GlobalVariableGet(name)<10000) { Print("Ордер ", name, " был открыт, когда баланс был меньше 10000"); } }

В этом коде есть несколько незнакомых функций для работы со строками:

  • string StringSubstr(string text, int start, int length=0) - возвращает подстроку строки text начиная с позиции start и длиной length.
  • int StringLen(string text) - возвращает число символов в строке text.
  • int StringGetChar(string text, int pos) - возращает код символа, расположенного в позиции pos строки text.

Все эти функции я подробно рассмотрю в следующих выпусках, но сначала я расскажу о функции GlobalVariablesDeleteAll().



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

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

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



Размещение статьи "GlobalVariableName(): имя глобальной переменной" на Вашем сайте

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

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

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

Журнал FOREX MAGAZINE:



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

Счетчики:

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

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

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


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