Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Надеюсь на дальнейшие указания.
Кварк
допускает, что между if(GlobalVariableGet(strTradeSemaphore) == 0.0) и GlobalVariableSet(strTradeSemaphore, 1.0); вклинится другой эксперт. Нужна функция, которая захватит и запрет поток исполнения (то есть, дождется ресурса), а затем вернет контроль эксперту. Что-то вроде WaitForExclusive()
Хотя, возможно, дело и не в этом. Но ошибки сыплются, увы.
Надеюсь на помощь.
Кстати, раз уж этот разговор возник, как автоматически определить, сколько знаков оставлять для цены при помощи NormalizeDouble, то есть, 4 для EURUSD, 2 для EURJPY... ?
Ошибка 138. Несколько раз в минуту (то есть, несколько из 12 экспертов ее порождают).
Ошибка 129. Я уж и цену нормировал, и чего только не делал...
а один твой эксперт с моими 5-ю выдал за всё это время одну ошибку - 6.
в моей коррекции эксперт не работает - нахомутали в этом билде =)
ах, да... мои 5 тоже не работают =)))) вот, блин...
а один твой эксперт с моими 5-ю выдал за всё это время одну ошибку - 6.
в моей коррекции эксперт не работает - нахомутали в этом билде =)
ах, да... мои 5 тоже не работают =)))) вот, блин...
Спасибо за код, сам бы долго искал.
Эксперт, предложенный Славой и улучшенный :) мной приводится ниже. Можно запускать его как я - в 12 окнах, с 12 валютами. Работает на любых таймфреймах, но на минутках быстрее :) Ошибки так и сыплются, блин... Понять бы, почему.
допускает, что между if(GlobalVariableGet(strTradeSemaphore) == 0.0) и GlobalVariableSet(strTradeSemaphore, 1.0); вклинится другой эксперт. Нужна функция, которая захватит и запрет поток исполнения (то есть, дождется ресурса), а затем вернет контроль эксперту. Что-то вроде WaitForExclusive()
Хотя, возможно, дело и не в этом. Но ошибки сыплются, увы.
именно так. я поэтому и говорил про гипотетическую функцию GlobalVariableSetOnCondition, которая могла бы устанавливать глобальную переменную первым параметром при условии, что значение её равно значению второго параметра. так как доступ к глобальным переменным блокируется, то это даст "атомарность"
теперь про функцию IsStopped. она проверяет флаг остановки эксперта, для того, чтобы эксперт мог нормально завершиться (у него есть на это 2.5 секунды). рекомендуется использовать эту функцию в качестве одного из условий цикла, особенно бесконечного
именно так. я поэтому и говорил про гипотетическую функцию GlobalVariableSetOnCondition, которая могла бы устанавливать глобальную переменную первым параметром при условии, что значение её равно значению второго параметра. так как доступ к глобальным переменным блокируется, то это даст "атомарность"
Слава, хоть убейте, не понимаю я этот текст. Или другими словами как-нибудь объясните, или покажите, что имеете в виду. Если можно.
Кстати, что не так в переделанном мной куске кода? То есть, ясно, что что-то не так, так как не работает, но я не вижу ошибки. По моим прикидкам, это и должно было обеспечить эксклюзивный доступ...
именно так. я поэтому и говорил про гипотетическую функцию GlobalVariableSetOnCondition, которая могла бы устанавливать глобальную переменную первым параметром при условии, что значение её равно значению второго параметра. так как доступ к глобальным переменным блокируется, то это даст "атомарность"
Слава, хоть убейте, не понимаю я этот текст. Или другими словами как-нибудь объясните, или покажите, что имеете в виду. Если можно.
речь идёт о предотвращении возможности вклинивания между вызовами функций GlobalVariableGet и GlobalVariableSet. вклинивание другим экспертом реально, так как ошибки всё равно наблюдаются. я потому и говорю про атомарный доступ. мы с Вами говорим о решении одной и той же проблемы только разными словами
Кстати, что не так в переделанном мной куске кода? То есть, ясно, что что-то не так, так как не работает, но я не вижу ошибки. По моим прикидкам, это и должно было обеспечить эксклюзивный доступ...
Ваш пример получше будет