Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1990
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Прошу помощь у сообщества...
Почему MathRand() дает повторяющиеся значения ?
MathRand() : Перед первым вызовом функции необходимо использовать функцию MathSrand, чтобы перевести генератор псевдослучайных чисел в начальное состояние.
MathSrand() : Для гарантированного получения неповторяющейся последовательности используйте вызов MathSrand(GetTickCount()).
Вывод во вкладку "Эксперты" терминала :
2022.07.08 10:05:58.162 Script checkMathRand EURUSD,H4: removed
2022.07.08 10:05:58.162 checkMathRand EURUSD,H4: uninit reason 0
2022.07.08 10:05:58.162 checkMathRand EURUSD,H4: checkMathRand.mq4:34 OnStart : Конец
2022.07.08 10:05:58.162 checkMathRand EURUSD,H4: Цикл : 5 ; 14161 ; 28429 ; 16098 ; 9335 ; 1512
2022.07.08 10:05:58.162 checkMathRand EURUSD,H4: Цикл : 4 ; 14161 ; 28429 ; 16098 ; 9335 ; 1512
2022.07.08 10:05:58.162 checkMathRand EURUSD,H4: Цикл : 3 ; 14161 ; 28429 ; 16098 ; 9335 ; 1512
2022.07.08 10:05:58.162 checkMathRand EURUSD,H4: Цикл : 2 ; 14161 ; 28429 ; 16098 ; 9335 ; 1512
2022.07.08 10:05:58.162 checkMathRand EURUSD,H4: Цикл : 1 ; 14161 ; 28429 ; 16098 ; 9335 ; 1512
2022.07.08 10:05:58.162 checkMathRand EURUSD,H4: checkMathRand.mq4:19 OnStart : Начало
2022.07.08 10:05:58.162 checkMathRand EURUSD,H4: initialized
2022.07.08 10:05:58.146 Script checkMathRand EURUSD,H4: loaded successfully
Между вызовами MathSrand проходит мало времени, поэтому генератор инициализируется одним и тем же числом.
А вообще, обычно в OnInit() вызывают MathSrand.
Прошу помощь у сообщества...
Почему MathRand() дает повторяющиеся значения ?
MathRand() : Перед первым вызовом функции необходимо использовать функцию MathSrand, чтобы перевести генератор псевдослучайных чисел в начальное состояние.
MathSrand() : Для гарантированного получения неповторяющейся последовательности используйте вызов MathSrand(GetTickCount()).
Замените GetTickCount() на (int)GetMicrosecondCount()
И вот результат
Прошу помощь у сообщества...
Из цикла вынесите MathSrand()
Между вызовами MathSrand проходит мало времени, поэтому генератор инициализируется одним и тем же числом.
А вообще, обычно в OnInit() вызывают MathSrand.
Спасибо за ответ, Сергей !
P.S. В скрипте, действительно инициализируется одним значением, GetTickCount() не успевает измениться)В эксперте я так и делал вызов MathSrand в OnInit(). И там между вызовами проходили секунды. А GetTickCount() считает миллисекунды...
Из цикла вынесите MathSrand()
Спасибо за ответ, PapaYozh)
В скрипте помогло.
А что делать в эксперте ? Там MathSrand() в OnInit() вызывается. И при этом одинаковые значения...
Замените GetTickCount() на (int)GetMicrosecondCount()
И вот результат
Алексей, спасибо за ответ, помогло)
Не знал про такую функцию
Кнопку "Все" нажимал?
Алексей, спасибо за ответ, помогло)
Не знал про такую функцию
По хорошему, не обязательно ставить GetMicrosecondCount(), можно поставить случайное число
и будет отличный результат.
По хорошему, не обязательно ставить GetMicrosecondCount(), можно поставить случайное число
и будет отличный результат.
Спасибо, отличная конструкция, я не додумался)
По хорошему, не обязательно ставить GetMicrosecondCount(), можно поставить случайное число
и будет отличный результат.
при каждом запуске будет повторяться результат