Баг?

 
Наблюдаются разные результаты работы эксперта в зависимости от того, как он запускается:

int init()
{
while ( !IsConnected()) Sleep( 100 );
Print( "Init: ", AccountNumber(), " ", AccountName());
return (0);
}

int start()
{
Print( "Start: ", AccountNumber(), " ", AccountName());
return (0);
}

Так вот, если открыть чарт и повесить на него этот эксперт - то все ок, и из init() и из start() все печатается правильно. А вот если перезапустить терминал (не закрывая чарт и не отключая эксперт) то и в init() и очень часто, но не всегда в start() получаем ноль и пустую строчку.
Посмотрите, пожалуйста, мне кажется - это баг.
 
Данные по счёту ещё не подкачались, а тики уже идут
 
А можно это как-то поправить? Хотелось бы уже в init() иметь эту информацию.
Спасибо!
 
Я, наверое, не очень понятно выразился - дело в том, что сколько в init() не жди, эта информация не появляется - в отличии, например, от AccountBalance().
 
Мы уж много раз объясняли - нельзя в ините работать с рыночной информацией (состояние счета - тоже рыночная информация). Инит вызывается в момент конструирования эксперта (это конструктор в чистом виде), когда никаких рыночных данных может и не быть!
 
Но ведь баланс имеет место быть - а чем эта информация отличается от номера аккаунта? В том то и дело, что состояние счета вы возвращаете правильное, а номер счета - нет. По-моему, это странно :)
 
Но ведь баланс имеет место быть - а чем эта информация отличается от номера аккаунта? В том то и дело, что состояние счета вы возвращаете правильное, а номер счета - нет. По-моему, это странно :)

_Результат_запроса_рыночных_данных_в_момент_конструирования_эксперта (функция инит) _не_определен_и_не_гарантирован_ни_при_каких_обстоятельствах.
 
Похоже, что вместо постоянных уточнений о нежелательности вызова рыночных функций из init, мы сделаем так, что инит будет вызываться только по первому ценовому тику, что полностью решит проблему.
 
А основная часть по второму? Очень бы не хотелось.
 
Мы переделали вызов функции init в экспертах - теперь эта функция вызывается только по приходу первого ценового тика. Это означает, что в init можно пользоваться любой "рыночной" функцией.

Доступно будет в очередном билде.
 
Не знаешь где найдёшь, где потеряешь..
Причина обращения: