2. С этим я уже разобрался. Вот здесь
цветом выделено всё, что должно, по идее, инициировать синхронизацию (перед первым жёлтым - добавление инструмента в обзор рынка). Я
считаю, что там прописаны явно излишние меры, но и они не гарантируют запуск индикатора. К примеру, я запустил индикатор на графике.
Инструменты в обзоре есть, данные уже закачаны. Закрываю терминал. Запускаю его. И индикатор не запускается.
Связывать это с выходными не получается по простой причине - данные то уже есть в терминале.
Кстати, выход по INIT_FAILED не имеет никакого смысла, ибо индикатор всё-равно висит на графике. Помогает такая конструкция
Впрочем, в таком случае, уже и return теряет смысл.
Функции для работы с таймсериями и индикаторами. Таймсерия отличается от обычного массива тем, что индексация элементов таймсерии производится от конца массива к началу (от самых свежих данных к самым старым). Для копирования значений таймсерий и индикаторов рекомендуется использовать только динамические массивы, так как функции копирования...
Владимир, я точно проверял (код инициализации выложил). И проверял Ваш пример. Он работает. Но дело в том, что для моего индикатора важна
синхронизация данных со всех инструментов. Именно для этого и использую Bars() и именно в OnInit()
int bc = Bars(symbols_name[i],PERIOD_CURRENT);
.........................
if(bars_calc > bc) bars_calc = bc;
У Вас же каждый инструмент (на индикаторе) независим.
Это тоже не решило проблему. Хотя и стало заметно лучше, но иногда всё-равно приходится запускать индикатор по нескольку раз, чтобы он
заработал. И после перезагрузки терминала не на всех графиках он запускается автоматом.
------------------
Далее я подумал, что все данные уж наверняка синхронизируются с сервером при открытии графика инструмента. И сделал такое обрамление
chID[nC++] = myChart.Open(symbols_name[nV-1],PERIOD_CURRENT);
// тут вся прочая синхронизацияfor(int n = 0; n < ArraySize(chID); n++) ChartClose(chID[n]);
Думал, что теперь то уж точно будут все необходимые данные....
Прежде чем ценовые данные будут доступны в терминале MetaTrader 5, их необходимо получить и обработать. Для получения данных требуется подключение к торговому серверу MetaTrader 5. Данные поступают с сервера по запросу терминала в виде экономно упакованных блоков минутных баров. Механизм обращения к серверу за данными не зависит от того, каким...
Потому, что пока не закончится OnInit данные не подгружены и никакая синхронизация не спасёт. Затем, после перезагрузки отображаются те значения
которые остались при предыдущем пересчёте индикатора. Но это равносильно мусору.
Потому, что пока не закончится OnInit данные не подгружены и
никакая синхронизация не спасёт. Затем, после перезагрузки отображаются те значения которые остались при предыдущем
пересчёте индикатора. Но это равносильно мусору.
Уже понял. ))
Не совсем понял. После перезагрузки терминала? Так вот перезагрузил и на "проблемном" графике индикатор отрисовался нормально. А до
перезагрузки я в свойствах индикатора указал другой символ для рассчёта и индикатор тоже отрисовался полностью.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
1. Спасибо.
2. С этим я уже разобрался. Вот здесь цветом выделено всё, что должно, по идее, инициировать синхронизацию (перед первым жёлтым - добавление инструмента в обзор рынка). Я считаю, что там прописаны явно излишние меры, но и они не гарантируют запуск индикатора. К примеру, я запустил индикатор на графике. Инструменты в обзоре есть, данные уже закачаны. Закрываю терминал. Запускаю его. И индикатор не запускается.
Связывать это с выходными не получается по простой причине - данные то уже есть в терминале.
Кстати, выход по INIT_FAILED не имеет никакого смысла, ибо индикатор всё-равно висит на графике. Помогает такая конструкция
Впрочем, в таком случае, уже и return теряет смысл.
Напрасно вы пытаетесь получать данные в OnInit().
Напрасно вы пытаетесь получать данные в OnInit().
Я вовсе не получаю данные. Из документации:
"любая Copy-функция при нехватке истории в формате HCC терминал автоматически инициирует посылку такого запроса от терминала к торговому серверу"
Я вовсе не получаю данные.
А это тогда что?
else { double chk[]; ArrayFree(chk); CopyBuffer(handle_iCustom,3,0,300,chk); }А это тогда что?
Это подключённый индикатор от Vladimir Karputov. Вызывал его с надеждой дополнительно проинициировать синхронизацию инструмента. Не помогло (((
А chk после выхода из блока уничтожается.
Вы точно проверяли?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
2 вопроса МТ5
Vladimir Karputov, 2020.01.12 07:56
MultiSymbols Indicator version "1.002"
Отображает все семь цен
Вы точно проверяли?
Владимир, я точно проверял (код инициализации выложил). И проверял Ваш пример. Он работает. Но дело в том, что для моего индикатора важна синхронизация данных со всех инструментов. Именно для этого и использую Bars() и именно в OnInit()
У Вас же каждый инструмент (на индикаторе) независим.
-------------------
Ещё я попробовал добавить пример из скрипта из Организация доступа к данным.
Это тоже не решило проблему. Хотя и стало заметно лучше, но иногда всё-равно приходится запускать индикатор по нескольку раз, чтобы он заработал. И после перезагрузки терминала не на всех графиках он запускается автоматом.
------------------
Далее я подумал, что все данные уж наверняка синхронизируются с сервером при открытии графика инструмента. И сделал такое обрамление
Думал, что теперь то уж точно будут все необходимые данные....
И опять ошибся.
Уже и не знаю что делать дальше...
Я вот подумал, а чё это я упёрся в OnInit()?
Может стоит перенести всю эту синхронизацию в OnCalculate()?
Всё шикарно. Запускается с первого раза )))
Вот только не совсем понял почему получилось так?
Всё шикарно. Запускается с первого раза )))
Вот только не совсем понял почему получилось так?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
2 вопроса МТ5
Alexey Viktorov, 2020.01.13 07:17
Напрасно вы пытаетесь получать данные в OnInit().
Уже понял. ))
Не совсем понял. После перезагрузки терминала? Так вот перезагрузил и на "проблемном" графике индикатор отрисовался нормально. А до перезагрузки я в свойствах индикатора указал другой символ для рассчёта и индикатор тоже отрисовался полностью.
Как этот мусор чистить?