Ошибки, баги, вопросы - страница 367

 
Yedelkin:
Проблема, скорее всего, в другом. У меня точно такое же объявление массива в OnInit() прекрасно работало и  работает. У Вас в названии массива ArrSybols пропущена латинская буква m. Может быть,  в этом проблема  программиста?

Может и пропущена, но разве от этого зависит что-то?

А если я на родном напишу (что не запрещено, как я понимаю) весь терминал должен упасть?

Код работает именно без такого объявления массива, даже если просто размерность указать все работает.

//Вот так работает
string ArrSybols[10];

Изначально объявление массива было таким

//List of symbols for trade on the Championship 2010
string ArrSymbolsChampionship2010[10] = {"EURUSD","GBPUSD","USDJPY","USDCHF","USDCAD",
                                        "AUDUSD","EURJPY","EURCHF","GBPJPY","GBPCHF"};
 

Вопрос все еще в силе.

 Удалось прицепить к OBJ_CHART индикатор в отдельном окне, но при изменении размера окна индикатора получается не совсем красиво, т.к. если высота OBJ_CHART 500, то высоту окна индикатора удалось установить максимум 493. В результате остается не красивая верхушка. Как от нее избавиться?

 

Код:

 

   if(ObjectFind(0,"MW_chart")!=0)
     {
      ObjectCreate(0,"MW_chart",OBJ_CHART,0,time[0],close[0]);
      ObjectSetString(0,"MW_chart",OBJPROP_SYMBOL,_Symbol);
      ObjectSetInteger(0,"MW_chart",OBJPROP_PERIOD,_Period);
      ObjectSetInteger(0,"MW_chart",OBJPROP_CORNER,CORNER_LEFT_UPPER);
      ObjectSetInteger(0,"MW_chart",OBJPROP_XSIZE,1000);

      ObjectSetInteger(0,"MW_chart",OBJPROP_DATE_SCALE,false);
      ObjectSetInteger(0,"MW_chart",OBJPROP_PRICE_SCALE,false);
      ObjectSetInteger(0,"MW_chart",OBJPROP_SELECTABLE,1);
      ObjectSetInteger(0,"MW_chart",OBJPROP_CHART_SCALE,2);
      ObjectSetInteger(0,"MW_chart",OBJPROP_YSIZE,500);
     }
   int h=iCCI(Symbol(),Period(),14,PRICE_TYPICAL);
   long id=ObjectGetInteger(0,"MW_chart",OBJPROP_CHART_ID);
   ChartIndicatorAdd(id,1,h);
   ChartSetInteger(id,CHART_HEIGHT_IN_PIXELS,1,493);
 
Interesting:

Может и пропущена, но разве от этого зависит что-то?

Конечно, зависит. Не мне Вам объяснять :) Если массив объявлен с одним именем,  а обращение к элементам этого массива идёт с другим именем масссива, то ...   :) 

Если же всё работает без первоначальной ручной инициализации  массива, то нужно смотреть код, как Вы сами понимаете. Ведь отсутствие явной инициализации string-массива не мешает клиентскому терминалу самостоятельно проинициализировать этот массив.  

Повторяюсь: у меня такая строчка отрабатывала и отрабатывает своё "по полной".

 
Yedelkin:

Конечно, зависит. Не мне Вам объяснять :) Если массив объявлен с одним именем,  а обращение к элементам этого массива идёт с другим именем масссива, то ...   :) 

Если же всё работает без первоначальной ручной инициализации  массива, то нужно смотреть код, как Вы сами понимаете. Ведь отсутствие явной инициализации string-массива не мешает клиентскому терминалу самостоятельно проинициализировать этот массив.  

Повторяюсь: у меня такая строчка отрабатывала и отрабатывает своё "по полной".

Нет нет там проблема не в имени а в том что массив заполняется перечислением при объявлении.

Это работает со всеми типами нормально, кроме стригнов. Со стрингами действительно сносит любую программу (експерт или скрипт не важно).

Это явный баг пишите в сервисдеск.

Вот так работает:

// string a[2]={"a","b"};
long   b[2]={2,3};
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
  Print("Работает");   
  }
//+------------------------------------------------------------------+

но если раскоментиовать объявление стригн массива то не работает.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
Renat:
Проверьте в настройках максимальное количество баров в окне
Поменял со 100000 на 1000000. Помогло, но  только после перезагрузки терминала (в справке говорится о действии изменений после нажатия OK).
 

Renat, опять дикий таффик, вы точно нашли ошибку?


 
С трафиком проблема решена, но дело в том, что серверные компоненты мы еще не выпустили в liveupdate. Пока вышли обновления клиентских терминалов, а серверы будут в следующем апдейте. Они еще не прошли тесты.
 
Renat:
С трафиком проблема решена, но дело в том, что серверные компоненты мы еще не выпустили в liveupdate. Пока вышли обновления клиентских терминалов, а серверы будут в следующем апдейте. Они еще не прошли тесты.
Понятно. Спасибо за ответ. Со своей стороны также буду держать вас в курсе.
 

Последний билд (430) при тестировании с Форвард-периодом и Custom Max - виснет (похоже, в момент перехода на форвард тестирование). Сначала грешил на свой советник, потом проверил следующий код:

input int a1;
input int a2;
input int a3;
int OnInit(){return(0);}
void OnDeinit(const int reason){}
void OnTick(){}
double OnTester() {
   return(rand());
}

Поставил параметры на оптимизацию от 1 до 1000, все тики, USDCAD, M4 c 01.01.2011 по сегодня (с форвард-периодом - любым). Повис. Отключил удалённых агентов - запустил заново - терминал также повис. Убрал форвард период - работает. Виноват ли Custom Max - уже не проверял. До этого билда - всё работало. 

 

Что означает эта запись?

2011.04.17 15:21:22    Tester    tester agent got failed

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