Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Подключи MQL5 Cloud Network. Увеличивай свой рейтинг!
artmark
73
artmark 2014.04.07 11:26 

Заметил проблему при вызове пользовательского индикатора

Собственно в чем проблема. С выходом обновлений в самом языке, произошло изменение работы индикаторов которые вызываются из экспертов. Это касается тестера стратегий именно. Раньше я вызывал из эксперта индикатор, при вызове я передавал два параметра init переменную и string . Когда запускаешь тестирование, эксперт подгружает индикатор. Это видно в журнале, далее идет само тестирование, параметры переданы верно, индикатор их видит и с ними работает, но когда нажимаешь стоп тест, то на график должны выводиться индикаторы которые принимали участие в тесте.

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

Если этот же индикатор компилировать билдом ниже 600 то все работает норм . Так что трабла не в коде.

Вот сделал скрин . Вызывается индикатор test2, в него передаются параметры 1 и name5, он их принимает и выводит через Alert, это видно. Далее нажимаем стоп, снова вызов индикатора но уже строковой переменной нет. Причем ее нет вообще, даже значение по умолчанию не подставилось.

artmark
73
artmark 2014.04.07 11:29  
Получается что увидеть результат работы индикатора после тестирования не возможно !
Dmitry Fedoseev
41261
Dmitry Fedoseev 2014.04.07 11:43  
Тоже видел эти траблы со строковыми параметрами. Наверно баг и надо обращаться в сервисдеск.
artmark
73
artmark 2014.04.07 11:56  
Где найти этот сервисдеск ?
Dmitry Fedoseev
41261
Dmitry Fedoseev 2014.04.07 12:12  
artmark:
Где найти этот сервисдеск ?
На https://www.mql5.com, после регистрации в своем профиле ссылка будет.
Александр
82
Александр 2014.04.07 22:03  

Есть мнение, что трабла - именно в коде индикатора.

Скорее всего - эта "исчезающая" переменная задается в блоке {} (но не в начале функции, а где-то дальше).

После билда 600 эта переменная существует (и видна) только внутри этого блока (раньше была видна до конца функции).

Надо вынести её объявление повыше, сразу после заголовка функции.

Dmitry Fedoseev
41261
Dmitry Fedoseev 2014.04.08 03:50  
EverAlex:

Есть мнение, что трабла - именно в коде индикатора.

Скорее всего - эта "исчезающая" переменная задается в блоке {} (но не в начале функции, а где-то дальше).

После билда 600 эта переменная существует (и видна) только внутри этого блока (раньше была видна до конца функции).

Надо вынести её объявление повыше, сразу после заголовка функции.

Это был разговор про внешнюю переменную индикатора. Про ту, которая в окне свйств индикатора. Из советнка взывается индикатора, после тестирования на графике появляется индикатор, а параметр пуст.
Александр
82
Александр 2014.04.09 23:13  
Integer:
Это был разговор про внешнюю переменную индикатора. Про ту, которая в окне свойств индикатора. Из советника вызывается индикатор, после тестирования на графике появляется индикатор, а параметр пуст.

А как в индикатор значение переменной передается после тестирования, в deinit()?

Может такое быть, что тестер уже освободил память от String и уже пустая строка приходит в индюк (если в deinit() передается) ?

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