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

Пример использования функции GlobalVariableSetOnCondition()

В прошлом выпуске я рассказал о функции GlobalVariableSetOnCondition().

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

//+----------------------------------------------------------------------------------------+
//| int StartTrading()                                                               |
//|                                                                                        |
//| Функция занимает торговый поток                                      |
//| Функция возвращает:                                                         |
//|   0 - если можно торговать                                                 |
//|   1 - если работа эксперта была остановлена                       |
//|   2 - если торговля экспертов запрещена на уровне настроек|
//|       клиентского терминала                                                |
//+----------------------------------------------------------------------------------------+  
#define GLOB_VAR_NAME "TradeIsAllowed"
int StartTrading() { // если советник работает в режиме тестирования, то просто выйдем if (IsTesting()) return(0);
int LastError;
while (!IsStopped()) { // Если торговля экспертов запрещена на уровне настроек // клиентского терминала, то выйдем и вернем 2 if (!IsExpertEnabled()) return(2);
// проверим, существует ли глобальная переменная if (GlobalVariableCheck(GLOB_VAR_NAME)) break;
// если произошла ошибка при проверке глобальной переменной, // то сообщим об этом в логах и выждем 0.1 секунды LastError = GetLastError(); if (LastError!=0) { Print("StartTrading(): ошибка ", LastError, " при проверке наличия глобальной переменной ", GLOB_VAR_NAME); Sleep(100); continue; }
// глобальная переменная не существует - создадим ее if (GlobalVariableSet(GLOB_VAR_NAME, 0)>0) break;
// произошла ошибка при создании переменной - запишем в лог LastError = GetLastError(); Print("StartTrading(): ошибка ", LastError, " при создании глобальной переменной ", GLOB_VAR_NAME); Sleep(100); }
// глобальная переменная существует или же эксперт был остановлен
// В цикле проверяем, как изменилась ситуация while (!IsStopped()) { // Если торговля экспертов запрещена на уровне настроек // клиентского терминала, то выйдем и вернем 2 if (!IsExpertEnabled()) return(2);
// Если удалось изменить значение глобальной переменной, то обновим данные // о текущих курсах и вернем 0 if (GlobalVariableSetOnCondition(GLOB_VAR_NAME, 1, 0)) { RefreshRates(); return(0); }
// Если дошли до момента, то ситуация не изменилась // Поэтому делаем паузу в 0.1 секунду Sleep(100); }
// Т.к. вышли из цикла, то работа эксперта была остановлена // Вернем 1 return(1); }
//+----------------------------------------------------------------------------------------+ //| int StopTrading() | //| | //| Функция разрешает торговать следующему эксперту | //| Функция возвращает: | //| 0 - если другому эксперту можно торговать | //| 1 - если работа эксперта была остановлена | //| 2 - если торговля экспертов запрещена на уровне настроек| //| клиентского терминала | //+----------------------------------------------------------------------------------------+ #define GLOB_VAR_NAME "TradeIsAllowed"
int StopTrading() { // если советник работает в режиме тестирования, то просто выйдем if (IsTesting()) return(0);
int LastError;
while (!IsStopped()) { // Если торговля экспертов запрещена на уровне настроек // клиентского терминала, то выйдем и вернем 2 if (!IsExpertEnabled()) return(2);
// Если удалось изменить значение глобальной переменной, то обновим данные // о текущих курсах и вернем 0 if (GlobalVariableSet(GLOB_VAR_NAME, 0)>0) { return(0); }
// при сбросе значения глобальной переменной произошла какая-то ошибка LastError = GetLastError(); Print("StopTrading(): ошибка ", LastError, " при сбросе значения глобальной переменной ", GLOB_VAR_NAME);
// делаем паузу в 0.1 секунду Sleep(100); }
// Т.к. вышли из цикла, то работа эксперта была остановлена // Вернем 1 return(1); }

Сегодня я не буду говорить о том, где и как используются эти две функции. Об этом мы поговорим завтра, в следующем выпуске.



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

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

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



Размещение статьи "Пример использования функции GlobalVariableSetOnCondition()" на Вашем сайте

Размещение статьи "Пример использования функции GlobalVariableSetOnCondition()" на Вашем сайте возможно при условии выполнениия следующих условий:

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

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

Журнал FOREX MAGAZINE:



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

Счетчики:

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

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

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


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