В индикатор добавил две горизонтальные линии. Рисует все замечательно. Во вкладке "Эксперты" никаких записей по поводу неправильной работы индикатора нет. Затем использую этот индикатор в эксперте, в журнале тестера появляется запись: unknown subwindow number 1 for ObjectCreate function. Посмотрел еще раз где рисуются эти линии, все верно в подокне под главным графиком. В списке объектов убедился что это подокно имеет номер 1. Почему журнал тестера ругается?
- Визуализация тестирования - Алгоритмический трейдинг, торговые роботы
- Инструменты - Рабочая область
- Запуск - Добро пожаловать в алготрейдинг
создайте шаблон tester.tpl с нужным подокном (при тестировании по умолчанию только одно окно с графиком, без подокон индикаторов) и при тестировании эта ошибка должна исчезнуть
создайте шаблон tester.tpl с нужным подокном (при тестировании по умолчанию только одно окно с графиком, без подокон индикаторов) и при тестировании эта ошибка должна исчезнуть
У меня так и было, но провирил вашим способом - не помогает. Похожая ситуация еще с одним индикатором. Это индикатор рисующий тиковый график, написанный Profi_R. Там ситуация следующая: unknown subwindow number -1 for ObjectCreate function. Только это выводится не в журнал тестера, а во вкладке "Эксперты.
Вот код индикатора:
//+------------------------------------------------------------------+ //| tic.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 DeepSkyBlue //---- buffers double ti[]; int s,win; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_SECTION); SetIndexBuffer(0,ti); //---- return(0); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int i; string price="price"; //---- if( win==0 ) { win=WindowFind("tic"); } if( s>Bars-1 ) { s=Bars-2; } for( i=s;i>=0;i-- ) { ti[i+1]=ti[i]; } ti[0]=Close[0]; if(ObjectFind(price) == -1) { ObjectCreate(price, OBJ_HLINE, win, Time[0], ti[0]); ObjectSet(price, OBJPROP_STYLE, STYLE_SOLID); ObjectSet(price, OBJPROP_COLOR, DeepSkyBlue); ObjectMove(price, 0, Time[0], ti[0]); } else { ObjectMove(price, 0, Time[0], ti[0]); } s++; //---- return(0); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+
Взгляните, что может быть не правильно. Консультировался по этому вопросу с Profi_R, у него все работает и ничего подобного нету. Да, еще, на графике только один этот индикатор, т.е. подокно одно.
создайте шаблон tester.tpl с нужным подокном (при тестировании по умолчанию только одно окно с графиком, без подокон индикаторов) и при тестировании эта ошибка должна исчезнуть
С этим разобрался, спасибо.
По поводу приведенного индикатора: установил еще один терминал, там запустил - все работает хорошо, а на другом терминале так и выскакивает unknown subwindow number -1 for ObjectCreate function. Терминалы 186 билд от 10 ноября.
Вставил GetLastError, она вернула код ошибки 4051 - недопустимое значение параметра функции.
По поводу приведенного индикатора: установил еще один терминал, там запустил - все работает хорошо, а на другом терминале так и выскакивает unknown subwindow number -1 for ObjectCreate function. Терминалы 186 билд от 10 ноября.
А где проверка успешности поиска подокна?
Вместо
if( win==0 ) { win=WindowFind("tic"); }
надо ставить:
if( win==0 ) { win=WindowFind("tic"); if(win<0) return(-1); }
надо ставить:
if( win==0 ) { win=WindowFind("tic"); if(win<0) return(-1); }
проблема этим не решится, подокно существует индекс - "1" (единственное) сам индикатор рисуется, а вот объект который должен тоже там рисоваться не может отрисоваться потому что не может найти подокна, хотя во втором установленном терминале все работает (как впрочем и у меня), больше жалоб не было, только от Ekc, принт значения win выдает "-1", а ведь окошко существует.
все проблема решилась буква "с" кирилицы и латиницы в название индюка была причиной , отлаживать на расстоянии - трудная штука однако :)
Причина оказалась банальной, все дело было вот в чем: Название индикатора было "Tic" ("T" заглавная), а в коде win=WindowFind("tic"); ("t" маленькая). Проблема решилась, спасибо за внимаение. Отдельное спасибо Profi_R.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь