В момент запуска терминала, при попытке добавления буков в Init(), выскакивают ошибки 4001 4102.
ERR_INTERNAL_ERROR |
4001 |
Неожиданная внутренняя ошибка |
ERR_CHART_NO_REPLY |
4102 |
График не отвечает |
Так же, не всегда находится существующая позиция. Тут вообще не понятно(мне), как определить - нет синхронизации или нет позиции.
Получается, что все инициализации надо производить уже после отработки Init() - по таймеру.
Вопрос: все так делают?
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());}//иначе эмулируем } Дальше принт, соответственно.
Пишут индикаторы, эксперта пока не проверял
Переключитесь на сервер отличный от Demo MetaQuotes. На сервере MQ стакан не хочет добавлять.
И вот еще:
Функция OnBookEvent() является обработчиком события BookEvent. Событие BookEvent генерируется только для экспертов при изменении состояния стакана цен (Depth of Market).
Переключитесь на сервер отличный от Demo MetaQuotes. На сервере MQ стакан не хочет добавлять.
Это всё на сервере "Открытия" Стаканы естественно есть. Шош я дурак совсем.
Что касается, "только для экспертов", то это похоже, не исправлено в справке. прекрасно генерятся
Там же написано, что такая подписка должна происходить в OnInit()
Вы смоделируйте ситуацию. Что просто клаву тормошить.
Я и говорю: "MarketBookAdd() на сервере MetaQuotes-Demo возвращает false, а на сервере Masterbrok-Broker (это брокер Украинской биржи) возвращает true".
Проверяю на боевом сервере "Открытия"
Всё время возвращает true. Но в некоторых случаях, только при запуске терминала, возвращает false. Получается, подключать бук в OnInit() не надежно. надо потом еще проверять.
Проверяю на боевом сервере "Открытия"
Всё время возвращает true. Но в некоторых случаях, только при запуске терминала, возвращает false. Получается, подключать бук в OnInit() не надежно. надо потом еще проверять.
Тогда для советника вариант: в OnInit() перед MarketBookAdd() делать Sleep(1).
На сколько процентов будет надежней, если без него 50х50? ))
Как ни странно, немного помогло (для советника)
Но это конечно не выход...
Придется ляпить...
В указанной ситуации вообще что-то подозрительное происходит. С инициализацией объектов, по моему, тоже что-то не то. И с позицией.
пс. Всё это делал на большом количестве копий индюков/совеников на разных инструментах. от десяти

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В момент запуска терминала, при попытке добавления буков в Init(), выскакивают ошибки 4001 4102.
ERR_INTERNAL_ERROR
4001
Неожиданная внутренняя ошибка
ERR_CHART_NO_REPLY
4102
График не отвечает
Так же, не всегда находится существующая позиция. Тут вообще не понятно(мне), как определить - нет синхронизации или нет позиции.
Получается, что все инициализации надо производить уже после отработки Init() - по таймеру.
Вопрос: все так делают?