В индикатор добавил две горизонтальные линии. Рисует все замечательно. Во вкладке "Эксперты" никаких записей по поводу неправильной работы индикатора нет. Затем использую этот индикатор в эксперте, в журнале тестера появляется запись: unknown subwindow number 1 for ObjectCreate function. Посмотрел еще раз где рисуются эти линии, все верно в подокне под главным графиком. В списке объектов убедился что это подокно имеет номер 1. Почему журнал тестера ругается?
- Скользящая средняя
- [ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда.
- 4X_PREDICTOR_M
создайте шаблон 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+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь