Сервисдеск. Жалобы, предложения. - страница 6

 
Ilya Malev:
В один цикл все равно не выйдет, раз у всех индикаторов один поток, хоть с таймером, хоть без таймера. Или я не понял Вашу задумку.
Скажем, есть индикатор1. Он вызывает индикатор2. Индикатору2 не хватает данных по некоторым символам/ТФ. Он передает эти данные в индикатор1 и из него уже в таймере загружаются необходимые данные. После того, как придет подтверждение, что все нужные данные загружены - опять пытаемся загрузить данные по индикатору2 и как только все нужные данные будут получены - рассчитываем индикатор1.
 
Alexey Kozitsyn:

Для закачки и проверки истории, по аналогии с МТ5: https://www.mql5.com/ru/docs/series/timeseries_access

Повторю вопрос, Вы знаете, как можно средствами старого mql4 получить эту дату? 

Я знаю. Time[Bars-1]
 
Alexey Kozitsyn:

... переносимость программ с МТ4 на МТ5 и обратно. 

C 4 на 5 - понятно. А наоборот - не очень.  

 
Alexey Kozitsyn:
Скажем, есть индикатор1. Он вызывает индикатор2. Индикатору2 не хватает данных по некоторым символам/ТФ. Он передает эти данные в индикатор1 и из него уже в таймере загружаются необходимые данные. После того, как придет подтверждение, что все нужные данные загружены - опять пытаемся загрузить данные по индикатору2 и как только все нужные данные будут получены - рассчитываем индикатор1.

Память выделяется 5 раз. Под адресное пространство команд для одного и того-же. 

Что Вы об агрессивном освобождении памяти адресного пространства данных плачете? Там, хотя-бы, экстенты присутствуют. 

 
Vasyl Nosal:
Оооочень долго арбитраж жду. 3-юю неделю(2-ую просили подождать,ладно).
О всемогущие модераторы, обратите свой взор на проблему:)
 
Алексей Тарабанов:
Я знаю. Time[Bars-1]

Вы не правы. Я уже писал ниже, что приведенная Вами конструкция даст первую дату не на сервере, а на чарте.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Сервисдеск. Жалобы, предложения.

Alexey Kozitsyn, 2015.10.30 16:42

Используя конструкцию iTime( _Symbol, period, Bars( _Symbol, period )-1 ) можно получить время первой доступной свечи на чарте.

Но, чтобы получить время первой свечи на сервере, я что-то не придумал какую конструкцию написать.

С использованием SeriesInfoInteger все делается просто: SeriesInfoInteger( _Symbol, period, SERIES_SERVER_FIRSTDATE );


 
Алексей Тарабанов:

Память выделяется 5 раз. Под адресное пространство команд для одного и того-же. 

Что Вы об агрессивном освобождении памяти адресного пространства данных плачете? Там, хотя-бы, экстенты присутствуют. 

По-существу есть что сказать?
 

Вообще говоря, нормальное решение упомянутой мной проблемы с iCustom скорее всего есть.

Если в МТ5 уже загружен хэндл какого-то индикатора с заданными параметрами на данном символе/тф, то при вызове его из любого другого места, как я понимаю, повторного расчета того же самого индикатора не происходит, а используется уже имеющийся хэндл.

Ну и поскольку на первом "уровне вложенности" до вызова iCustom работает вызов OnTimer, то можно дождаться последовательного расчета всех индикаторов, начиная с самых базовых, потом тех, которые используют базовые, потом тех кто уже их использует и т.д. на любой уровень вложенности, создавая их хэндлы только тогда, когда все используемые в них индикаторы и таймсерии уже были просчитаны. Тогда необходимость в кнопке "Обновить" скорее всего пропадает. Жаль я до этого не догадался неделю назад...

П.С. Только нужно учесть при использовании OnTimer, что индикаторные буферы не отобразятся на графике и в окне данных, пока OnCalculate, вызванная самим терминалом, не возвратит значение, отличное от 0. А OnCalculate терминал все также вызывает только один раз сразу после Инита, когда таймсерии и индикаторы ещё не построились. При вызовах OnCalculate из Ontimer, какое бы значение она не возвращала, если самый первый возврат был 0, то индикатор не отобразится на графике до прихода следующего тика или нажатия на "Обновить".

 
Alexey Kozitsyn:

Вторая проблема, похожего типа. Индикатор находится на ТФ MN1. Пытаюсь получить данные через функцию SeriesInfoInteger() с ТФ M5 . Функция некоторое время возвращает корректные значения, а после - просто перестает это делать, и начинает возвращать нули

Встретил только что Вашу проблему уже в МТ5 в индикаторе, не выходя из одного цикла OnTimer, проверяю таймсерию на другом символе/периоде (не текущем) - функция говорит, что она построена и дает корректное число баров. Вызываю сразу после этого другую функцию построения индикатора - внутри неё уже, вызванной не выходя из одного и того же вызова OnTimer, таймсерия умудряется выгрузится и SeriesInfoInteger уже возвращает нули. Пришлось встраивать дополнительную циклическую проверку, чтобы все строилось само без поступления тиков.
 
Vasyl Nosal:
О всемогущие модераторы, обратите свой взор на проблему:)
Уже скоро 4-я неделя разсмотрения арбитража пойдёт...to be continued:)))))