Проблема перевода с МТ4 на МТ5. Или, точнее, невозможность без'ошибочного исполнения некоторых алгоритмов в МТ5. - страница 5

 
Andrey Khatimlianskii:

Предлагалось делать это по таймеру раз в полторы минуты. А никак не перед каждым тиком, и тем более — не по событию чарта.

Доступ к таймсериям в МТ5 действительно не идеальный. Но если нужно решить задачу, а не найти оправдание, то это возможно.

Никто оправдания не ищет. Вы не знаете уровень сложности задачи. Поэтому так просто и говорите про оправдание.

Предлагалось обновлять по таймеру раз в 2 минуты. Так у меня и сделано.

Но. Этого мало. Даже после этого обновления по таймеру при создании события на чарте через графический интерфейс часто получалось так, что вызов iBarShift дает -1 . Это, соответственно, вызывает выход за границу массива или еще какую-то ошибку. Поэтому попробовал перед входом в ОнЧартЕвент делать проверку доступности к таймсериям. Для лучшего понимания, скажу, надо  ко всем 21 таймсериям делать проверку доступа. Если хотя бы к одной таймсерии нет доступа,  то почти 100% вероятность, что графические построения будут сделаны с какой-нибудь ошибкой.

Программа сложная. примерно 50 000 строк. На таком объеме много различных обращений к таймсериям.

Тормоза постоянно возникают (В варианте для МТ5). В МТ4 работает как часы.

МТ5 для меня не интересен. Я не использую его в торговле. Только МТ4. Программу стал переводить только по запросам пользователей. Столкнувшись с таким геморроем, решил, что лучше заниматься тем, что интересно.

За 14 лет разработки этой программы появились интересные идеи. Вот реализацией этих идей и занимаюсь. 

 
Eugeni Neumoin:

Предлагалось обновлять по таймеру раз в 2 минуты. Так у меня и сделано.

Но. Этого мало. Даже после этого обновления по таймеру при создании события на чарте через графический интерфейс часто получалось так, что вызов iBarShift дает -1 .

А exact у iBarShift, случайно, не равен true?

У меня тоже были сложности с синхронизацией, даже после обновления по таймеру. Но воспроизвести железно не смог, проблема плавающая.


Eugeni Neumoin:

МТ5 для меня не интересен. Я не использую его в торговле. Только МТ4. Программу стал переводить только по запросам пользователей. Столкнувшись с таким геморроем, решил, что лучше заниматься тем, что интересно.

За 14 лет разработки этой программы появились интересные идеи. Вот реализацией этих идей и занимаюсь. 

Я не пропагандирую за МТ5. Просто сразу заметил, что у вас особого желания разобраться нет )

Конечно, лучше заниматься тем, что интересно!

 
Eugeni Neumoin:

Никто оправдания не ищет. Вы не знаете уровень сложности задачи. Поэтому так просто и говорите про оправдание.

Предлагалось обновлять по таймеру раз в 2 минуты. Так у меня и сделано.

Но. Этого мало. Даже после этого обновления по таймеру при создании события на чарте через графический интерфейс часто получалось так, что вызов iBarShift дает -1 . Это, соответственно, вызывает выход за границу массива или еще какую-то ошибку. Поэтому попробовал перед входом в ОнЧартЕвент делать проверку доступности к таймсериям. Для лучшего понимания, скажу, надо  ко всем 21 таймсериям делать проверку доступа. Если хотя бы к одной таймсерии нет доступа,  то почти 100% вероятность, что графические построения будут сделаны с какой-нибудь ошибкой.

Программа сложная. примерно 50 000 строк. На таком объеме много различных обращений к таймсериям.

Тормоза постоянно возникают (В варианте для МТ5). В МТ4 работает как часы.

МТ5 для меня не интересен. Я не использую его в торговле. Только МТ4. Программу стал переводить только по запросам пользователей. Столкнувшись с таким геморроем, решил, что лучше заниматься тем, что интересно.

За 14 лет разработки этой программы появились интересные идеи. Вот реализацией этих идей и занимаюсь. 

Кешируйте таймсерии.
 
Artyom Trishkin:
Кешируйте таймсерии.

Что имеется в виду? Вручную свои кеши делать?

 
Andrey Khatimlianskii:

Что имеется в виду? Вручную свои кеши делать?

Один раз считать все таймсерии, а дальше только дополнять. Можно в окне.
Да, в свои массивы. Можно при помощи СБ. Класс таймсерии свой.
 
Andrey Khatimlianskii:

А exact у iBarShift, случайно, не равен true?

true. Мне нужно знать точный номер бара.

 
Artyom Trishkin:
Один раз считать все таймсерии, а дальше только дополнять. Можно в окне.

То есть предлагаете не использовать буферы, а работать со своими массивами?

Зачем тогда буферы?

То есть предлагается сделать свой костыль, вместо буферов :(

И вместо iTime, iLow и т.д. сделать свои функции... переписать все по своему, в обход неработающих функций из МТ5...

Это кардинально. Но пусть этим энтузиасты занимаются. Постою в сторонке. Даже наблюдать за процессом не буду.

 
Eugeni Neumoin:

То есть предлагаете не использовать буферы, а работать со своими массивами?

Загляните в СБ. Там есть работа с индикаторами. Если своё делать не хочется. А вообще - один раз сделать класс, а дальше только пользоваться им для любого тф. И данные всегда будут в разовой доступности. Только новых добавлять побарно. 
 
Eugeni Neumoin:

То есть предлагаете не использовать буферы, а работать со своими массивами?

Зачем тогда буферы?

То есть предлагается сделать свой костыль, вместо буферов :(

И вместо iTime, iLow и т.д. сделать свои функции... переписать все по своему, в обход неработающих функций из МТ5...

Всё там работает. Но иногда в доступе отказывается. Может по причине обновлений таймсерии - не знаю. При отказе нужно повторить запрос, так как первый запрос активизирует подкачку данных.
 
Eugeni Neumoin:

true. Мне нужно знать точный номер бара.

Тогда ошибка в логике, возможно. Бара может и не быть.

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