В тестере не загружает индикатор.

 

Уважаемые разработчики. После обновления МТ5 до 425 билда советник перестал тестироваться на истории, хотя в режиме реального времени работает и выставляет сделки.

В коде есть вызов пользовательского индикатора (он выложен в кодебазе) :

m_pivot_handle=iCustom(m_symbol,m_timeframe,"pivotpointuniversal",m_pivot_type,m_pivot_period,m_pivot_time))

 

В тестере выдает сообщение

2011.04.05 12:42:43     Core 2      2011.02.28 00:00:00   expert removed because custom indicator 'pivotpointuniversal' cannot load [4805]

 

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

Заранее спасибо за ответ. 

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 
Пробовали перекомпилировать индикатор в текущем билде?

 
Попробуйте написать "pivotpointuniversal.ex5", чтобы тестер мог понять, что этот файл надо передать на агента тестирования.
 

Чему равны значения m_symbol и m_period и есть ли по этому символу история?

Не могли бы вы приложить логи тестерного агента от старта до неудачного завершения?

 
Rosh:
Пробовали перекомпилировать индикатор в текущем билде?

Перекомпилировал конечно. Пробовал с расширением подключать  "pivotpointuniversal.ex5" - не помогло.

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

Лог-файл прилагаю.

И что интересно - в отладчике индикатор загружается, а в тестере - перестал. 

 

Спасибо. Вы запускаете так называемый "пустой прогон" тестера, о чём в журнале тестера должно быть предупреждение.

EURUSD,M5 (MetaQuotes-Demo): testing of Experts\London_Model.ex5 from 2011.02.28 00:00 to 2010.12.31 00:00 to be started 

Начальная дата больше конечной. 

 
stringo:

Спасибо. Вы запускаете так называемый "пустой прогон" тестера, о чём в журнале тестера должно быть предупреждение.

Начальная дата больше конечной. 

Мда - заработался. Недоглядел. Спасибо.
 

Всем добра!

Подскажите, ошибка похожая, все что было описано выше вроде проверил.


В тестере ставлю на инструмент к которому обращение, все работает, ставлю на другой выдает ошибку:"1999.10.23 00:00:00   cannot load custom indicator 'Examples\Custom Moving Average.ex5' [4805]"

#property tester_indicator "Custom Moving Average.ex5"
#property indicator_chart_window

int OnInit()
{
MAD_handle=iCustom("IMOEX",PERIOD_D1,"Examples\\Custom Moving Average.ex5",220,0,MODE_SMA,PRICE_CLOSE);
}

void OnTick()
{   
if(CopyBuffer(MAD_handle,0,0,220,MAD)<=0) return;
     ArraySetAsSeries(MAD,true);
}
Подскажите куда копать? Или может решение есть. У меня уровень начинающий новичок))
 
Alexandr Vetrov #:

Всем добра!

Подскажите, ошибка похожая, все что было описано выше вроде проверил.


В тестере ставлю на инструмент к которому обращение, все работает, ставлю на другой выдает ошибку:"1999.10.23 00:00:00   cannot load custom indicator 'Examples\Custom Moving Average.ex5' [4805]"

Подскажите куда копать? Или может решение есть. У меня уровень начинающий новичок))

Как оно может работать если массив MAD не объявлен?
Оператор

ArraySetAsSeries(MAD,true);

должен быть перед 

CopyBuffer(MAD_handle,0,0,220,MAD)

Посмотри любой советник из кодобазы, вызывающий индикатор.

 
Alexander Sevastyanov #:

Как оно может работать если массив MAD не объявлен?
Оператор

должен быть перед 

Посмотри любой советник из кодобазы, вызывающий индикатор.

упустил выше, что на входе объявляю буфер.

double       MAD[];

и попробовал переместить 

void OnTick()
{
     ArraySetAsSeries(MAD,true);
     if(CopyBuffer(MAD_handle,0,0,220,MAD)<=0) return;
}

Ничего не поменялось. 1999.10.23 00:00:00   cannot load custom indicator 'Examples\Custom Moving Average.ex5' [4805]

Буду копать базу. Видимо упустил что-то.

 

Индикатор Custom Moving Average имеет три параметра.

А у тебя их четыре:

MAD_handle=iCustom("IMOEX",PERIOD_D1,"Examples\\Custom Moving Average.ex5",220,0,MODE_SMA,PRICE_CLOSE);

PRICE_CLOSE тут явно лишний.
Кроме того хендл индикатора у тебя не объявлен. Короче куча ошибок.
Такой код не должен компилироваться в принципе, непонятно как он до ошибок выполнения дошел.

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