Ошибки, баги, вопросы - страница 3745

fxsaber # :
Can you tell me how to get different Random values ​​on one enabled Agent?


Yes, you can do this via the Common file. But I wouldn't recommend using that option.

Skip the call to MathSrand(). 
Just call MathRand().
amrali #:
Skip the call to MathSrand(). 
Just call MathRand().
Наверное, вы не пробовали эту рекомендацию.
Alain Verleyen #:

Какую версию сборки вы используете?

Пожалуйста, опубликуйте логи.

Выше ответил.
Логи скинул скриншот.

Есть понимание почему так тестер стратегий работает?

Из поддержки есть кто? 

Sergei Samokhin #:
Выше ответил.
Логи скинул скриншот.

Есть понимание почему так тестер стратегий работает?

Из поддержки есть кто? 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Alain Verleyen, 2026.06.02 15:31

Какую версию сборки вы используете?

Пожалуйста, опубликуйте логи.

Не скриншот, не выдержка. Пожалуйста, предоставьте полный лог-файл.
fxsaber #:
Наверное, вы не пробовали эту рекомендацию.

Я тоже не пробовал. Да и вряд ли попробую. Чисто теоретически. Надеюсь вы поймёте…

Если при каждом MathSrand() подставлять одно и то же значение, то и результат  MathRand() будет одинаковый. Может сто́ит попробовать в  MathSrand() подставлять предыдущее значение MathRand() на втором и последующих вызовах?

Alain Verleyen #:
Не скриншот, не выдержка. Пожалуйста, предоставьте полный лог-файл.
Откуда его брать полный лог файл?
Alexey Viktorov #:

в  MathSrand() подставлять предыдущее значение MathRand() на втором и последующих вызовах?

Кроме Common-варианта не вижу способов реализации подобного.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2026.05.14 12:42

Да, можно через Common-файл сделать. Но этот вариант не хотелось бы использовать.

fxsaber # : Apart from the Common option, I don't see any way to implement something like this.

#property tester_no_cache

input  int inRange = 0 ;

double  OnTester ()
{
  //MathSrand (( uint ) GetMicrosecondCount ());
  
  // Works in tester -> optimization (with only one local agent enabled)
  MathSrand (( uint ) MQLInfoInteger (MQL_GLOBAL_COUNTER) * 1000);
  
  // For random numbers with better variability
  //MathSrand (( uint ) MQLInfoInteger (MQL_GLOBAL_COUNTER) * inRange);
    
  return ( MathRand ());
}


See: MQL_GLOBAL_COUNTER

amrali #:

See: MQL_GLOBAL_COUNTER

Спасибо большое! Удивительно, что в Документации до сих пор не появилась соответствующая запись.

Интересно, как ведет себя этот счетчик, когда Агент получает новый пакет с заданиями для оптимизации.

Improved!

#property tester_no_cache

input  int inRange = 0 ;

double  OnTester ()
{
  // Output random number streams un-correlated to the optimization pass number
  MathSrand (fmix32 ( MQLInfoInteger (MQL_GLOBAL_COUNTER) ));

  return ( MathRand ());
}

// Hashing 32-bit integer seeds
uint fmix32(uint x) 
{
  // strong 32-bit mixer (bijective over 32-bit)
  x ^= x >> 16; x *= 0x7feb352d;
  x ^= x >> 15; x *= 0x846ca68b;
  x ^= x >> 16;
  return x;
}



Strong RNG: https://www.mql5.com/en/code/42098 

#property tester_no_cache

input  int inRange = 0 ;

#include "Xoshiro256.mqh"

double  OnTester ()
{
  // xoshiro256 random number generator object
  Xoshiro256 rng;
    
  return ( rng.RandomInteger() );
}
xoshiro256 Random Number Generator
xoshiro256 Random Number Generator
  • 2023.01.05
  • www.mql5.com
The 64-bit xoshiro256** Random Number Generator.