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

 
x100intraday:

 ...Если привязки магнитных точек идут к экстремумам (частные случаи) или к чарт-координатам вообще - цена/время, то к чему, интересно, привязывается "Масштаб"? Если в шаблон при записи скидываются какие-то точные значения масштаба... или значения пипсов на бар, то это не позволяет восстанавливать исходные начертания в новом сеансе. Сохраняются только точные координаты первой точки. Грубо говоря, шаблоны, основанные на привязке точек к явным и простым координатам, более надёжны.

1-ая точка - цена и время, 2-ая точка - время, цена рассчитывается с учетом масштаба в п/б. 

Что там в шаблон пишется - не знаю, думаю, должны все 4 значения: 2 времени, цена первой точки, масштаб.

Тогда возможны проблемы, если есть пропущенные бары, наверное. 

 
Silent:

 Это не проблема удаления, это проблема создания :)

У меня скрипт с неправильным циклом делал то же самое. Принтовал цикл, даже после принудительного удаления скрипта через "Список экспертов", пока не вываливался с ошибкой.

Не понял почему ошибка создания?

Создаю без цикла, для 3х объектов не нужен.

Делаю для каждого просто:

if(ObjectFind(0,_name)!=0)//если не нашли создаем
     {
      ObjectCreate(0,_name,OBJ_RECTANGLE,0,_begin_time,_open,_end_time,_close);
         ObjectSetInteger(0,_name,OBJPROP_STYLE,STYLE_SOLID);
         ObjectSetInteger(0,_name,OBJPROP_WIDTH,Width);
         ObjectSetInteger(0,_name,OBJPROP_BACK,_Top);
         ObjectSetInteger(0,_name,OBJPROP_FILL,_BG);
         ObjectSetInteger(0,_name,OBJPROP_SELECTED,false);
         ObjectSetInteger(0,_name,OBJPROP_COLOR,_Color);
     }
else //если нашли модифицируем
     {
      ObjectMove(0,_name,0,_begin_time,_open);
      ObjectMove(0,_name,1,_end_time,_close);
      ObjectSetInteger(0,_name,OBJPROP_COLOR,_Color);
     }

 В общем появляются первые зацепки, но пока рано говорить. 

 

А факт создания объекта в коде проверяете?

Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5
 
kPVT:

Не понял почему ошибка создания?

... 

потому что
kPVT:

...

Объекты удаляются, но создаются заново и продолжают "шевелиться" так как будто индикатор продолжает работать.

Если удалить вручную, то опять создаются с тем же именем и продолжают "шевелиться" с приходом новых тиков.

... 

индикатор их с каждым тиком ищет и либо создаёт, либо модифицирует, я так понял.

Может: если уже есть и модифицирован - ничего не делать не хватает (блока)?

 
alexvd:

А факт создания объекта в коде проверяете?

Silent:
Может: если уже есть и модифицирован - ничего не делать не хватает (блока)?

Причина в следующем.

Если получить хендл индикатора №1 из индикатора №2, то пока не удалишь индикатор №2, deinit индикатора №1 выполняется как бы не полностью.

Eсли есть буфферные построения то они удаляются, а вот графические объекты остаются.

Вот для проверки два индикатора.

1. Прикрепляем test_del_obj, затем test_id.

2. Удаляем  test_del_obj - кубик от test_del_obj остается.

3. Удаляем test_id - удаляется кубик и в логе видим, что только сейчас выполнилась deinit индикатора test_del_obj.

Файлы:
 

Еще вопрос.

Хэндл прикрепленного к графику индикатора уникален?

Если изменить индикатор test_id добавив опрос  хендла индикатора test_del_obj по таймеру, то видно, что значение увеличивается на 1 за каждый запрос.

Файлы:
 

Неверно работает ArrayResize() 

При уменьшении размера динамического массива функция ArrayResize() обрезает элементы не с той стороны массива.

Код: 

   double Arr[];
   ArrayResize(Arr,5);
   Arr[0]=101;
   Arr[1]=102;
   Arr[2]=103;
   Arr[3]=104;
   Arr[4]=105;   
   Print("Начальный массив: ",Arr[0],":",Arr[1],":",Arr[2],":",Arr[3],":",Arr[4]);
   ArraySetAsSeries(Arr,true);
   ArrayResize(Arr,4);
   Print("Обрезанный массив: ",Arr[0],":",Arr[1],":",Arr[2],":",Arr[3]);

 Результат:

2012.07.04 21:28:53     Ind2 (EURUSD,H4)        Обрезанный массив: 104.0:103.0:102.0:101.0
2012.07.04 21:28:53     Ind2 (EURUSD,H4)        Начальный массив: 101.0:102.0:103.0:104.0:105.0

 Тот же код и результат в MetaTrader 4:

2012.07.04 21:28:35     ind2 EURUSD,H4: Обрезанный массив: 105:104:103:102
2012.07.04 21:28:35     ind2 EURUSD,H4: Начальный массив: 101:102:103:104:105
Файлы:
Ind2.mq5  2 kb
 

Уважаемые Господа разработчики МТ5. Обращаю Ваш взор - самое важное для сервера Форекс - корректность котировок. Поэтому исследуйте некорректности в Вашем МТ5 (сервер MetaQuotes-Demo):

1) Изменяется объём в ранее загруженных свечах - пример, сегодня в 8:00  EURUSD H4 по европе были значения 0:00 - 6171, 4:00 - 7049, 8:00 13361. а при загрузке в 20:00 (по европе) значения стали 0:00 - 7701, 4:00 - 8859, 8:00 - 16306. В-общем Вам самим не трудно будет убедиться в том что с объёмом творится по-русски говоря полная лажа. Поскольку я имею честь выступать не только от своего имени, но и по просьбе товарищей, скажу - это очень огорчает тех, кто использует модели с объёмом и с его накоплением.

2) Ставим - слева Альпари МТ4. справа - Metaquotes МТ5, и поражаемся тому что минутки на метаквотсе закрываются существенно раньше чем в альпари. Сверяемся с time.windows.com и с часами на руке - время сервера metaquotes  убегает вперёд! - тут жалуются пипсовики - в торговле возникает существенный случайный источник.

3) Воще запредельное желание - а можно сделать чтоб бид и аск были доступны и для сохранения и для просмотра, раздельно и/или совместно. Меня попросили, но понимаю что это не реально. Насколько я понимаю в МТ3 вообще было нечто среднее между бидом и аском, и это наверняко лежит в истории. Теперь только бид. 

 
MoneyJinn:

Неверно работает ArrayResize()

Все правильно. AsSeries просто флаг.
 
TheXpert:
Все правильно. AsSeries просто флаг.

Смотрите поведение элементов массива под влиянием ArraySetAsSeries(Arr,true), а также на то, как это работает в четверке.

Хочется добавить. что в конце 2011 года все работало правильно, т.к. я писал на эту тему код, который теперь работать перестал.  

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