Инициализация при старте терминала.

 

 В момент запуска терминала, при попытке добавления  буков в Init(), выскакивают ошибки 4001 4102.

ERR_INTERNAL_ERROR

4001

Неожиданная внутренняя ошибка

ERR_CHART_NO_REPLY

4102

График не отвечает

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

Получается, что все инициализации надо производить уже после отработки Init() - по таймеру.

Вопрос: все так делают? 

 
pronych:

 В момент запуска терминала, при попытке добавления  буков в Init(), выскакивают ошибки 4001 4102.

ERR_INTERNAL_ERROR

4001

Неожиданная внутренняя ошибка

ERR_CHART_NO_REPLY

4102

График не отвечает

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

Получается, что все инициализации надо производить уже после отработки Init() - по таймеру.

Вопрос: все так делают? 

OnInit() специальное место для инициализации. У Вас эксперт или индикатор? И какие буковки вызывают ошибку?
 
barabashkakvn:
OnInit() специальное место для инициализации. У Вас эксперт или индикатор? И какие буковки вызывают ошибку?


Примерно так. Проверьте при желании.

    if(_depth>= 0)                                                         //если стакан нужен
        {
         ResetLastError();
         if(MarketBookAdd(name))    {Status = BOOK_ALLOWED; str_status="OK"               ;}//пытаемся добавить бук. ок если получилось
         else                       {Status = BOOK_ERROR  ; str_status=" Not allowed! Err"+ToStr(GetLastError());}//иначе эмулируем
        }
Дальше принт, соответственно.
 
Пишут индикаторы, эксперта пока не проверял
 
pronych:
Пишут индикаторы, эксперта пока не проверял

Переключитесь на сервер отличный от Demo MetaQuotes. На сервере MQ стакан не хочет добавлять. 

И вот еще:

Функция OnBookEvent() является обработчиком  события BookEvent. Событие BookEvent генерируется только для экспертов при изменении состояния стакана цен (Depth of Market).   

 
barabashkakvn:

Переключитесь на сервер отличный от Demo MetaQuotes. На сервере MQ стакан не хочет добавлять.  

Это всё на сервере "Открытия" Стаканы естественно есть. Шош я дурак совсем.

Что касается, "только для экспертов", то это похоже, не исправлено в справке. прекрасно генерятся

Там же написано, что такая  подписка должна происходить в OnInit()

 
Вы смоделируйте ситуацию. Что просто клаву тормошить.
 
pronych:
Вы смоделируйте ситуацию. Что просто клаву тормошить.
Я и говорю: "MarketBookAdd() на сервере MetaQuotes-Demo возвращает false, а на сервере Masterbrok-Broker (это брокер Украинской биржи) возвращает true".
 
barabashkakvn:
Я и говорю: "MarketBookAdd() на сервере MetaQuotes-Demo возвращает false, а на сервере Masterbrok-Broker (это брокер Украинской биржи) возвращает true".

Проверяю на боевом сервере "Открытия"

Всё время возвращает true. Но в некоторых случаях, только при запуске терминала, возвращает false. Получается, подключать бук в OnInit() не надежно. надо потом еще проверять. 

 
pronych:

Проверяю на боевом сервере "Открытия"

Всё время возвращает true. Но в некоторых случаях, только при запуске терминала, возвращает false. Получается, подключать бук в OnInit() не надежно. надо потом еще проверять. 

Тогда для советника вариант: в OnInit() перед MarketBookAdd() делать Sleep(1). 
 
barabashkakvn:
Тогда для советника вариант: в OnInit() перед MarketBookAdd() делать Sleep(1). 

На сколько процентов будет надежней, если без него 50х50? ))

Как ни странно, немного помогло (для советника)

Но это конечно не выход...

Придется ляпить... 

В указанной  ситуации вообще что-то подозрительное происходит. С инициализацией объектов, по моему, тоже что-то не то. И с позицией.

пс. Всё это делал на большом количестве копий индюков/совеников на разных инструментах. от десяти

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