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

[Удален]  
Fry:

И Вам вечер добрый. Попробовал - однофигственно.

Результат одинаковый. Ошибка лезет в журнале на каждый тик.

За идею спасибо. Если SeriesInfoInteger() не обращается к Bars внутри себя, тогда всё более вероятно, что это "узкий" косяк данных на сервере брокера.

И это тоже удовлетворительный ответ на мой вопрос.

Ведь я же не понимаю, где ошибка всплывёт, могу ли я её избежать и т.п.

Возможно действительно ошибка у брокера, т.к. по сообщению удаляются какие-то "битые" бары... либо на пути данные успевают "убиться". Но, это только догадки с моей стороны. Кстати, а GetLastError() дает что-нибудь? Да, и что возвращает Bars()?
 
Tapochun:
Возможно действительно ошибка у брокера, т.к. по сообщению удаляются какие-то "битые" бары... либо на пути данные успевают "убиться". Но, это только догадки с моей стороны. Кстати, а GetLastError() дает что-нибудь? Да, и что возвращает Bars()?

Если Bars() возвращает 0, тогда приходит ошибка 4001 (ERR_INTERNAL_ERROR  4001  Неожиданная внутренняя ошибка).

Но через раз Bars() всё-таки возвращает кол-во баров и тогда ошибки нет (Bars() не меняет статус ошибки).

 

МТ4 билд 722, ME4 билд 989

Пытаюсь копировать данные текущего нулевого бара:

      MqlRates rates[1];
      int n=CopyRates(_Symbol,PERIOD_CURRENT,time[0],1,rates); 
      Print("n=",n);

Принтуется n=0 т.е. данные не копируются.

Если вместо  PERIOD_CURRENT записать _Period то работает.

Если копировать данные не нулевого бара (time[1] и др.) то независимо от записи PERIOD_CURRENT или _Period  будет правильно.

P.S. В сд надо оформить? 

[Удален]  
Fry:

Если Bars() возвращает 0, тогда приходит ошибка 4001 (ERR_INTERNAL_ERROR  4001  Неожиданная внутренняя ошибка).

Но через раз Bars() всё-таки возвращает кол-во баров и тогда ошибки нет (Bars() не меняет статус ошибки).

 "Неожиданность" ошибки еще раз наводит на мысль, что что-то не успевает дойти и удаляется, вследствие чего возникает ошибка. Насколько я понял, Вам нужно узнавать количество баров на D1..., а обязательно это делать на каждом тике? Как вариант, напишите функцию, которая будет запрашивать данные раз в минуту или реже. И посмотрите, будет ли возникать ошибка.

[Удален]  
kPVT:

МТ4 билд 722, ME4 билд 989

Пытаюсь копировать данные текущего нулевого бара:

Принтуется n=0 т.е. данные не копируются.

Если вместо  PERIOD_CURRENT записать _Period то работает.

Если копировать данные не нулевого бара (time[1] и др.) то независимо от записи PERIOD_CURRENT или _Period  будет правильно.

P.S. В сд надо оформить? 

Добрый вечер. Попробуйте..., хотя, если есть альтернатива, они вряд ли кинутся искать этот недочет. У меня две заявки уже неделю висят... ни ответа, ни привета.
 
Fry:

Что делать? Как иначе узнать кол-во баров на таймфрейме D1?

Индюк запущен на D1?
 
MigVRN:
Индюк запущен на D1?

Нет конечно. В этом весь смысл. Ибо когда на D1 запущен сам индюк, у нас банально есть "const int rates_total, // размер входных таймсерий".

Ну вот конкретный пример использования.

Мы инициализировали пару индикаторов и получили их хендлы (тут всё ОК). Далее в функции онтик надо убедиться, что к моменту вызова на требуемых хендлах(внешних индюках) уже посчитаны все данные. И вот что я делаю:

   //not all data may be calculated
   if (BarsCalculated(hCCI)<rates_total) {Print("Not all data of trend CCI is calculated. Error#",GetLastError()); return(0);}
   if (Period()!=PERIOD_D1 && BarsCalculated(hDayTrand)<Bars(Symbol(),PERIOD_D1)) return(0);

Причём, в данном случае hDayTrand - это хендл рекурсивный (этот же индюк, только именно на D1 подгружен).

Всё вроде делаю согласно документации и примерам из терминала и согласно рекомендациям. Результат - вся эта фигня ругается в журнале и жрёт мегабайты в минуту.

 
Fry:

Нет конечно. В этом весь смысл. Ибо когда на D1 запущен сам индюк, у нас банально есть "const int rates_total, // размер входных таймсерий".

Ну вот конкретный пример использования.

Мы инициализировали пару индикаторов и получили их хендлы (тут всё ОК). Далее в функции онтик надо убедиться, что к моменту вызова на требуемых хендлах(внешних индюках) уже посчитаны все данные. И вот что я делаю:

Причём, в данном случае hDayTrand - это хендл рекурсивный (этот же индюк, только именно на D1 подгружен).

Всё вроде делаю согласно документации и примерам из терминала и согласно рекомендациям. Результат - вся эта фигня ругается в журнале и жрёт мегабайты в минуту.

ИМХО, надо обратиться к брокеру (Открытие, так понял). На реал-счетах у них же такого нету, значит дело в серверных настройках каких-либо, скорей всего.
 
Dima_S:
ИМХО, надо обратиться к брокеру (Открытие, так понял). На реал-счетах у них же такого нету, значит дело в серверных настройках каких-либо, скорей всего.

Сейчас возможно и нет, но было. Было такое и на реале.

Вернусь в Мск и буду долбать брокера. Сейчас неудобно.

Сейчас главное узнал, что ошибка не характерна для всех и вряд ли связана с кодом с моей стороны.

За что всем участникам форума спасибо!

[Удален]  
Fry:

Сейчас возможно и нет, но было. Было такое и на реале.

Вернусь в Мск и буду долбать брокера. Сейчас неудобно.

Сейчас главное узнал, что ошибка не характерна для всех и вряд ли связана с кодом с моей стороны.

За что всем участникам форума спасибо!

А Вы запросы с периодичностью в минуту попробовали сделать? Не помогло?