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

GlobalVariableGet() - получение значения глобальной переменной

В прошлых выпусках я рассказал о том, как:

  • проверить существование глобальной переменной с помощью функции GlobalVariableCheck();
  • установить новое значение глобальной переменной - GlobalVariableSet();
  • изменить значение глобальной переменной только в том случае, если старое значение равно определенному значению - функция GlobalVariableSetOnCondition().

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

   double GlobalVariableGet(string name)

Функция GlobalVariableGet() возвращает значение глобальной переменной name или 0 в случае какой-нибудь ошибки:

   double gv;
   gv = GlobalVariableGet("LastTradePrice");
   int err = GetLastError();
   if (err!=0) Print("GlobalVariableGet(): ошибка ", err);

Прмеров использования функции GlobalVariableGet() можно привести бесконечное количество. Даже в предыдущих наших примерах мы ее уже часто использовали. Например, в нашей функции WaitBeforeTransaction().

Эта функция позволяет Вам выдерживать паузу между торговыми операциями:

//+--------------------------------------------------------------------------------------------------+
//| Фунцкия WaitBeforeTransaction выдерживает паузу Secs секунд      |
//| между торговыми операциями эксперта (по умолчанию 5 секунд)   |
//|                                                                                                  |
//| Возвращает:                                                                                |
//|   1 - если пауза выдержена без ошибок                                         |
//|   0 - если эксперт был остановлен                                                |
//|  -1 - если произошла какая-то ошибка                                           | 
//+-------------------------------------------------------------------------------------------------+
int WaitBeforeTransaction(int Secs = 5)
  {
    // если режим тестирования, то ждать необязательно
    if (IsTesting()) return(1);
// если глобальная переменная LastTradeTime не существует, // то создать ее if (!GlobalVariableCheck("LastTradeTime")) { // Если произошла какя-то ошибка при вызове функции // GlobalVariableCheck(), выйдем с ошибкой if (GetLastError()!=0) { Print("WaitBeforeTransaction(): ошибка ",GetLastError(), " при проверке глобальной переменной LastTradeTime"); return(-1); }
// глобальная переменная не существует, создадим ее if (GlobalVariableSet("LastTradeTime", 1)==0) { // произошла ошибка при создании глобальной переменной Print("WaitBeforeTransaction(): ошибка ",GetLastError(), " при создании глобальной переменной LastTradeTime"); return(-1); }
// глобальная переменная успешно создана Print("WaitBeforeTransaction(): глобальная переменная ", "LastTradeTime создана"); }
// получим время последней операции datetime LastTradeTime; LastTradeTime = GlobalVariableGet("LastTradeTime");
// если произошла ошибка (равна нулю), то выходим с ошибкой if (LastTradeTime==0) { Print("WaitBeforeTransaction(): ошибка ",GetLastError(), " при чтении глобальной переменной LastTradeTime"); return(-1); }
// ждем Secs секунд while(true) { // если эксперт остановлен, выйдем со значением 0 if (IsStopped()) { Print("WaitBeforeTransaction(): эксперт остановлен. Выходим..."); return(0); }
// если прошло меньше Secs секунд, то ждем if ((LocalTime()-LastTradeTime)<Secs) { // пауза 0.1 секунда Sleep(100); continue; }
// т.к. прошло больше Secs секунд, то попробуем изменить значение // глобальной переменной LastTradeTime на текущее время
// используем функцию GlobalVariableSetOnCondition(), чтобы выявить // ошибку, если уже за время ожидания другой эксперт успел совершить // сделку и изменил значение глобальной переменной if (GlobalVariableSetOnCondition("LastTradeTime", LocalTime(), LastTradeTime)) { // за время ожидания глобальная переменная не изменилась, поэтому // удалось установить ее новое значение // пауза выдержена, обновим котировки и выйдем без ошибки RefreshRates(); return(1); } else { // не удалось изменить значение глобальной переменной, т.к. другой эксперт // успел совершить сделку раньше и установил новое значение переменной // поэтому получим текущее значение глобальное переменной и продолжим ожидание LastTradeTime = GlobalVariableGet("LastTradeTime");
// если произошла ошибка (равна нулю), то выходим с ошибкой if (LastTradeTime==0) { Print("WaitBeforeTransaction(): ошибка ",GetLastError(), " при чтении глобальной переменной LastTradeTime"); return(-1); } } } }

В следующем выпуске я расскажу о том, как можно удалить глобальную переменную - о функции GlobalVariableDel().



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

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

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



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

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

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

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

Журнал FOREX MAGAZINE:



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

Счетчики:

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

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

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


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