ОШИБКА! ФУНКЦИИ AccountNumber() и AccountInfoInteger(ACCOUNT_LOGIN) ВОЗВРАЩАЮТ НУЛЕВОЙ НОМЕР СЧЕТА! - страница 2

 

Тема закрыта.

Если хотите анализировать именно номер счета, то дождитесь на очередном пересчете в OnCalculate ненулевой номер счета и реализуйте свою логику.

 
Renat: Если хотите анализировать именно номер счета, то дождитесь на очередном пересчете в OnCalculate ненулевой номер счета и реализуйте свою логику.
Спасибо, этот подход мне уже порекомендовал Rosh здесь

Конечно, можно дожидаться возвращения ненулевого номера счета в функции OnCalculate().
Но согласитесь, что всему свое место. Проверка на номер счета - это подготовительная операция, которая должна выполняться один раз. Где как не внутри функции OnInit() было бы разумно разместить такую проверку?! А иначе зачем вообще нужна функция OnInit(), если все ее содержимое можно перенести в цикл OnCalculate()? Не оптимально это как-то...

Но на сегодняшний день, я так понимаю, другого выхода нет. Придется сделать так, как Вы советуете....

Но Вы хотя бы прокомментируйте мое предположение, правильно ли я понимаю, что при запуске терминала МТ4 сначала устанавливаются все индикаторы, которые были установлены на момент закрытия терминала МТ4, и лишь потом терминал отправляет на торговый сервер логин+пароль для авторизации? Я только так могу объяснить, что в этот момент индикаторам возвращается нулевой номер текущего счета...
 

Печально, что данная проблема осталась не только в МТ4, но и переехала в МТ5.

Для софта, который предназначен в первую очередь для работы в залогиненным состоянии, правильно было бы иметь событие OnConnect.

Текущая реализация события OnInit делает его пригодным лишь для ограниченных  сценариев использования. В частности, для проверки счета нужно придумывать что-то с таймером, потому что запаздывающее подключение к серверу не гарантирует прихода OnCalculate, если локальная история уже актуальная (например, на выходных или между торговыми сессиями).

Причина обращения: