Использование переменных в событии OnChartEvent индикатора в тестере

 

В документации сказано, что:

При тестировании в эксперте можно обрабатывать пользовательские события с помощью функции OnChartEvent(), но в индикаторах эта функция в тестере не вызывается. Даже если индикатор имеет обработчик OnChartEvent() и этот индикатор используется в тестируемом эксперте, то сам индикатор не будет получать никаких пользовательских событий.

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

Проблема заключается в том, что получив вызов этой функции индикатор не имеет доступа к данным, хранящимся в переменных, объявленных на глобальном уровне, и наоборот - все изменения сделанные в этой функции не сохраняются в переменных глобального уровня доступа.

Примеры:

1. Объект объявлен на глобальном уровне и инициализирован в функции OnInit. К нему есть доступ из функции OnCalculate, но в функции OnChartEvent получаем сообщение об ошибке - invalid pointer

2. Есть функция, которая выводит в журнал содержимое переменной (переменная объявлена на глобальном уровне). При вызове этой функции из OnCalculate получаем ожидаемое значение, при вызове этой же функции из OnChartEvent получаем ерунду.

В эксперте подобное поведение отсутствует, индикатор в реальном времени работает корректно. 

MetaTester 5, build 1100.

 

Это нужно в сервис-деск отправить.

На форум есть смысл постить то, что нужно обсудить, а тут явная недоработка (делали и не доделали). Ну, или и не собираются этого исправлять, раз документацию оставили. 

 

На форуме есть шанс получить оперативный ответ от пользователей, кто с этим сталкивался, или от разработчиков, если они форум читают.

В сервис-деск запрос отправлен, но на него у меня надежды мало, прошлый запрос висит второй год без ответа.

 
Garynych:

На форуме есть шанс получить оперативный ответ от пользователей, кто с этим сталкивался, или от разработчиков, если они форум читают.

В сервис-деск запрос отправлен, но на него у меня надежды мало, прошлый запрос висит второй год без ответа.

На конкретные вопросы/баг-репорты с достаточной информацией отвечают в течении дня-двух.
 
Ваши слова да Богу в уши - уже больше недели тишина. оставлю тут тикет... на всякий случай... #1195984
 

Этот вопрос уже неоднократно обсуждался.

При тестировании генерируется множество событий - тики, таймер, торговля, события чарта. Но так как тестируется эксперт, то все эти события и подаются на вход эксперту. Индикаторы при этом никаких событий не получают.

Вы спросите, а как же OnCalculate? Всё просто. Перед каждым запуском эксперта запускается массовый расчёт всех индикаторов.

В скором времени мы добавим обработку событий в визуальном тестере. Но в простом тестировании всё останется так, как есть

 

Спасибо за ответ, позволю себе подискутировать. Разговор идет именно о визуальном тестировании и тестируется не эксперт, а индикатор. И индикатор получает это событие, выполняет логику, описанную в обработчике, и выдает результат работы функции OnChartEvent()! Но дальше этого обработчика результаты не идут, даже если используются переменные, объявленные на глобальном уровне.

Мы же можем при визуальном тестировании тестировать именно индикатор? Или для теста индикатора все равно используется некий эксперт?

С сервис-деск я приложил код индикатора, который использовал для проверки.

 

Garynych:

Мы же можем при визуальном тестировании тестировать именно индикатор? Или для теста индикатора все равно используется некий эксперт?

Можно сказать, что при тесте индикатора крутится "пустой" эксперт. А тестируемый индикатор автоматически накладывается на график визуализации.

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

Когда мы эту обработку сделаем (а мы это скоро сделаем), то в визуальном тестере можно будет тестировать и панели тоже.

 
Теперь все понятно. Для полноты картины осталось поправить справку во избежание разночтений - индикатор событие обрабатывает, в смысле функция вызывается. Другой разговор, что толку от этого ноль.  Для себя вопрос закрыл, буду ждать реализации полноценной обработки.
 
stringo:

Когда мы эту обработку сделаем (а мы это скоро сделаем), то в визуальном тестере можно будет тестировать и панели тоже.

Это значит в тестер в визуальном режиме добавится интерактивность?
 
TheXpert:
Это значит в тестер в визуальном режиме добавится интерактивность?
Да
Причина обращения: