Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Знаете ли вы, что в MQL5 появились классы?
Forex Trader
114235
Forex Trader 2005.11.23 15:01 
В индикатор добавил две горизонтальные линии. Рисует все замечательно. Во вкладке "Эксперты" никаких записей по поводу неправильной работы индикатора нет. Затем использую этот индикатор в эксперте, в журнале тестера появляется запись: unknown subwindow number 1 for ObjectCreate function. Посмотрел еще раз где рисуются эти линии, все верно в подокне под главным графиком. В списке объектов убедился что это подокно имеет номер 1. Почему журнал тестера ругается?
Forex Trader
114235
Forex Trader 2005.11.23 15:06  
создайте шаблон tester.tpl с нужным подокном (при тестировании по умолчанию только одно окно с графиком, без подокон индикаторов) и при тестировании эта ошибка должна исчезнуть
Forex Trader
114235
Forex Trader 2005.11.23 16:03  
создайте шаблон tester.tpl с нужным подокном (при тестировании по умолчанию только одно окно с графиком, без подокон индикаторов) и при тестировании эта ошибка должна исчезнуть

У меня так и было, но провирил вашим способом - не помогает. Похожая ситуация еще с одним индикатором. Это индикатор рисующий тиковый график, написанный Profi_R. Там ситуация следующая: unknown subwindow number -1 for ObjectCreate function. Только это выводится не в журнал тестера, а во вкладке "Эксперты.
Forex Trader
114235
Forex Trader 2005.11.24 13:35  
Вот код индикатора:
//+------------------------------------------------------------------+
//|                                                          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, у него все работает и ничего подобного нету. Да, еще, на графике только один этот индикатор, т.е. подокно одно.

Forex Trader
114235
Forex Trader 2005.11.24 14:54  
создайте шаблон tester.tpl с нужным подокном (при тестировании по умолчанию только одно окно с графиком, без подокон индикаторов) и при тестировании эта ошибка должна исчезнуть

С этим разобрался, спасибо.
По поводу приведенного индикатора: установил еще один терминал, там запустил - все работает хорошо, а на другом терминале так и выскакивает unknown subwindow number -1 for ObjectCreate function. Терминалы 186 билд от 10 ноября.
Forex Trader
114235
Forex Trader 2005.11.24 15:04  
Вставил GetLastError, она вернула код ошибки 4051 - недопустимое значение параметра функции.
MetaQuotes Software Corp.
Модератор
178177
MetaQuotes Software Corp. 2005.11.28 01:17  
По поводу приведенного индикатора: установил еще один терминал, там запустил - все работает хорошо, а на другом терминале так и выскакивает 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);
   }
Forex Trader
114235
Forex Trader 2005.11.28 12:55  
надо ставить:
if( win==0 )
   {
      win=WindowFind("tic");
      if(win<0) return(-1);
   }


проблема этим не решится, подокно существует индекс - "1" (единственное) сам индикатор рисуется, а вот объект который должен тоже там рисоваться не может отрисоваться потому что не может найти подокна, хотя во втором установленном терминале все работает (как впрочем и у меня), больше жалоб не было, только от Ekc, принт значения win выдает "-1", а ведь окошко существует.
Forex Trader
114235
Forex Trader 2005.11.28 12:57  
все проблема решилась буква "с" кирилицы и латиницы в название индюка была причиной , отлаживать на расстоянии - трудная штука однако :)
Forex Trader
114235
Forex Trader 2005.11.28 13:32  
Причина оказалась банальной, все дело было вот в чем: Название индикатора было "Tic" ("T" заглавная), а в коде win=WindowFind("tic"); ("t" маленькая). Проблема решилась, спасибо за внимаение. Отдельное спасибо Profi_R.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий