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

Igor Makanu:

картинка как и выше

костыльное решение в лоб - задавайте число для srand в свойствах советника. или берите из хеша параметров, тогда хотя бы рандомы будут отличаться начальной инициализацией.
TheXpert:
костыльное решение в лоб - задавайте число для srand в свойствах советника. или берите из хеша параметров, тогда хотя бы рандомы будут отличаться начальной инициализацией.

я вчера пришел к этому решению, так работает корректно

input int param1 =  2147483647;
//+------------------------------------------------------------------+
int OnInit()
   {
   srand(param1);
   return(INIT_SUCCEEDED);
   }
//+------------------------------------------------------------------+
void OnTick()
   {

   }
//+------------------------------------------------------------------+
double OnTester()
   {
   return(rand());
   }

вопросы мои в целом о корректности применения rand() в тетере, сейчас прошел поиском по алглиб, там используется MathRand() один раз в randomreal() , которая потом будет часто использоваться внутри библиотеки алглиб

Igor Makanu:

вопросы мои в целом о корректности применения rand() в тетере

с рандомом все (относительно) хорошо. вопросы именно к инициализации. видимо в тестере для получения хорошего рандома нельзя инициализироваться временем.
TheXpert:
с рандомом все (относительно) хорошо. вопросы именно к инициализации. видимо в тестере для получения хорошего рандома нельзя инициализироваться временем.

именно так и есть

писал вчера, что это противоречит документации https://www.mql5.com/ru/forum/1111/page2657#comment_15165819 и пример MathSrand() из справки будет давать не тот результат, что ожидалось в тестере


UPD: проблема моя чуть глубже - хочу использовать тестер для deep learning и сохранять наилучшие конфигурации НС через обмен между агентами - все в целом спланировал, а вот коллизии хотел разрулить через паузу запуска агента (или остановки) с помощью случайного значения.... но увы не все случайные значения случайны в агентах  тестера  )))

В большинстве случаев в тестере нужно обеспечивать воспроизводимость результатов. Требование, чтобы результаты рандомизировались без изменения входных параметров и состояния среды (все функции, связанные с виртуальным временем), противоречит задаче и реализации тестера.
Stanislav Korotky:
В большинстве случаев в тестере нужно обеспечивать воспроизводимость результатов. Требование, чтобы результаты рандомизировались без изменения входных параметров и состояния среды (все функции, связанные с виртуальным временем), противоречит задаче и реализации тестера.

это все правильно, что Вы пишете,но мне нужно разделить очередность доступа агентов во время сохранения в БД 

по сути, нужен ID - локального агента в тестере, не понятно почему нет такого функционала

Igor Makanu:

нужен ID - локального агента в тестере, не понятно почему нет такого функционала

TerminalInfoString(TERMINAL_DATA_PATH);

повторю чтобы не потерялось в рандоме)

1. подскажите, если открываю чарт ChartOpen(), то как потом не закрывая его вернуть фокус (активность, видимость) на свой чарт, из которого работает советник.

2. кто знает почему Бид, Аск не совпадает с ценой графика Close[0]  https://www.mql5.com/ru/forum/160683/page1082#comment_15152111

fxsaber:

да, это искал, не думал, что там искать нужно

так номер агента можно получить

string path = TerminalInfoString(TERMINAL_DATA_PATH);
string agent = StringSubstr(path,StringLen(path)-4);

Баг МТ5 (build 2342) ошибка компиляции при вызове шаблонной функции с явным указанием типов аргументов, когда вызов выполняется из перегруженной нешаблонной функции.

template<typename T>
class B{
public:
   void func(const T value){
      printf("1\r\n");
      func<T>(value);             //'func<int>' - ambiguous call to overloaded function with the same parameters        
   };
   
   template<typename TT>
   void func(const TT){
      printf("2\r\n");
   };
   
};


void OnStart(){
   B<int> b;
   b.func(1);
   b.func(1.1);
}