Устанавливает новое значение существующей глобальной переменной, если текущее значение переменной равно значению третьего параметра check_value.
Если переменной не существует, функция сгенерирует ошибку ERR_GLOBALVARIABLE_NOT_FOUND (4501) и вернет false.
И как это поможет?
Устанавливает новое значение существующей глобальной переменной, если текущее значение переменной равно значению третьего параметра check_value.
Если переменной не существует, функция сгенерирует ошибку ERR_GLOBALVARIABLE_NOT_FOUND (4501) и вернет false.
И как это поможет?
Попробуйте такую конструкцию:
double tr_count = GlobalVariableGet( "trans_count" ); GlobalVariableSetOnCondition( "trans_count", tr_count+1, tr_count );
PS. Ну, и возвращаемый результат придётся проверять.
И как это поможет?
Contender
Проблема не в том, что функция SetTransCount()
не работает, а в том, что к глобальной переменной обращаются
обновременно несколько советников.
Функция обеспечивает атомарный доступ к глобальной переменной, поэтому она может быть использована для организации мьютекса при взаимодействии нескольких одновременно работающих экспертов в пределах одного клиентского терминала.
Спасибо.
Contender
Проблема не в том, что функция SetTransCount()
не работает, а в том, что к глобальной переменной обращаются
обновременно несколько советников.
Вы попробовали сделать как я написал?
Функция GlobalVariableSetOnCondition атомарна.
А почему этого не написано в хелпе?
Не в том хелпе ищете ;)
https://www.mql5.com/ru/docs/globals/globalvariablesetoncondition
- www.mql5.com
Не очень красиво, но работает.
//+------------------------------------------------------------------+ //| Expert Set transaction count function | //+------------------------------------------------------------------+ void SetTransCount() { double tr_count; uint i = 0; do { i++; if ( GlobalVariableGet( "trans_count", tr_count ) ) { if ( GlobalVariableSetOnCondition( "trans_count", tr_count + 1, tr_count ) ) { i = 100; } } } while( i < 100 ); }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день!
У меня в терминале одновременно работают 25 советников,
которые используют один счётчик транзакций, реализованный на глобальной переменной:
Сравнивая список заявок в Квике со свом счётчиком, я обнаружил
достаточно большое расхождение в колличестве тразакций.
Вероятно несколько советников одновременно обращаются к этой переменной.
Может быть уже кто-то это делал?
Поделитесь опытом, пожалуйста.