Как заработать деньги. Проект сам себе финансист.
июль 2011
пн вт ср чт пт сб вс
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Главная » » »

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

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

К счастью, создатели языка MetaQuotes Language 4 являются профессиональными программистами и заранее могут предугадать, что может понадобиться трейдеру при написании экспертов. Я им очень благодарен, что они включили в список функций языка MetaQuotes Language 4 функцию GlobalVariableSetOnCondition().

Давайте же рассмотрим, чем так полезна эта функция.

 bool GlobalVariableSetOnCondition(string name, double value, double check_value) 

Прежде всего эта функция проверяет, существует ли глобальная переменная с именем name. В документации по MetaQuotes Language 4 написано, что если такой глобальной переменной нет, то функция возвращает false и генерит ошибку ERR_GLOBAL_VARIABLE_NOT_FOUND (4058), которую можно получить с помощью функции GetLastError().

Тем не менее при экспериментах с функцией GlobalVariableSetOnCondition() мне не удалось добиться того, чтобы функция вернула ошибку ERR_GLOBAL_VARIABLE_NOT_FOUND (4058). Почему-то даже в случае отсутствия глобальной переменной функция возвращает false и код ошибки ERR_NO_ERROR (т. е. 0). Вот кусок кода, который я использовал для этой цели:

 

string name = "MyGlobalVariable"; double value = 1; double check_value = 2;
if (GlobalVariableSetOnCondition(name, value, check_value)) 
{ Print("Глобальная переменная ", name, " существует.", " Ее значение изменено с ", check_value, " на ", value); }
else { int Err=0; Err = GetLastError(); Print(Err); switch (Err) 
{ 
case 0: Print("Глобальная переменная ", name," изменена не была", " т. к. ее значение не равно ", check_value); 
break; 
case 4058: Print("Глобальной переменной ", name, " не существует"); break; 
default: Print("Неизвестная ошибка: ", Err); } } 

Будем надеяться, что если это баг программы, то в следующих версиях MetaTrader 4 его исправят.

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

Если же текущее значение глобальной переменной name равно значению check_value, то функция GlobalVariableSetOnCondition() присвоит этой глобальной переменной новое значение: value.

В следующей статье будет рассказано о примере использования функции GlobalVariableSetOnCondition().



Автор статьи: Андрей Ведихин

Хомячковый рай. Уйти и потеряться:

Комментарии к этой заметке больше не принимаются.




Есть что сказать? Не стесняйтесь!






Последние статьи:

Выгодные «исламские счета» для трейдеров Форекс Выгодные «исламские счета» для трейдеров Форекс Таким образом, вне зависимости от стиля работы стоит использовать «исламские счета» и сотрудничать с компаниями, которые не берут с трейдеров swap-комиссии. ..
2014-09-29
Стоит ли покупать чужие торговые сигналы и прогнозы? Стоит ли покупать чужие торговые сигналы и прогнозы? И все же основным нашим советом станет отказ от покупки торговых сигналов и прогнозов. Куда лучше научиться анализировать валютный рынок и думать всегда только своей головой. ..
2015-02-12

Видео по теме:




В мире больших денег

  • Самые богатые люди
    планеты. Ежегодные рейтинги FORBS. Истории успеха признаных финансовых гуру
  • Самые дорогие вещи:
    Часы, автомобили, ноутбуки стоимотью в десятки и сотни тысяч долларов. Рубрика "Чтоб я так жил"
  • Денежные прогнозы
    Что покупать и что продавать? Периодические прогнозы цен на иностранные валюты, акции крупнейших компаний и драгоценные металлы

ВКонтакте с деньгами

УГОЛОК АДМИНИСТРАТОРА