Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Garynych
83
Garynych  

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

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

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

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

Примеры:

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

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

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

MetaTester 5, build 1100.

Andrey Khatimlianskii
58400
Andrey Khatimlianskii  

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

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

Garynych
83
Garynych  

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

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

Andrey Khatimlianskii
58400
Andrey Khatimlianskii  
Garynych:

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

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

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

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

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

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

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

Garynych
83
Garynych  

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

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

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

Slava
Модератор
6990
Slava  

Garynych:

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

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

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

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

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

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

Это значит в тестер в визуальном режиме добавится интерактивность?
Slava
Модератор
6990
Slava  
TheXpert:
Это значит в тестер в визуальном режиме добавится интерактивность?
Да
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий