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

 
svds75:

Здравствуйте. Подскажите, почему при запросе свойств трендовой линии переменная res всегда true, хотя в ручную ставлю флаг показ только W1, или только MN1?

Необходимо что-бы она показывалась только  на одном из таймов.

Неверное количество параметров, вы вызываете функцию как 1 вариант, а надо как второй или сравнивать результат.
 
TheLiteShadow:
Так-то оно так, но получается, что при каждом новом баре обязательно "чистить" все последние "индексы" заданных буферов? Спрашивается зачем? В МТ4 такой ситуации не было, я понимаю, при первичной инициализации я его почистил, но потом по идее это должен делать сам МТ, впрочем по идее и при инициализации это должен делать МТ, а не программист, с какой целью буфер индикатора - это просто выделение памяти я не совсем понимаю...
Когда я несколько лет назад задавал этот вопрос, мне ответили, что так сделано в целях оптимизации. Вы проинициализируете ровно столько, сколько нужно. А если вы сразу заливаете туда какие-то рассчетные данные, то и вовсе не нужно предварительно записывать нули. МТ5 отличается от МТ4 во многом.
 
marketeer:
Когда я несколько лет назад задавал этот вопрос, мне ответили, что так сделано в целях оптимизации. Вы проинициализируете ровно столько, сколько нужно. А если вы сразу заливаете туда какие-то рассчетные данные, то и вовсе не нужно предварительно записывать нули. МТ5 отличается от МТ4 во многом.
То что МТ4 отличается от МТ5 понимают все, но насчёт оптимизации я бы не согласился, а программисту слишком много того, что приходится отслеживать дополнительно, не сравнимо с языками низкого уровня, но по мне так лишнее, в общем ясно, спасибо...
 
TheLiteShadow:
Неверное количество параметров, вы вызываете функцию как 1 вариант, а надо как второй или сравнивать результат.
Пробовал и так. Хотя реально флаги работают (линия кажет только на одном тайме), а эксперт видит что оба флага включены.
long res;
ObjectGetInteger(0,"line",OBJPROP_TIMEFRAMES,OBJ_PERIOD_W1|OBJ_PERIOD_MN1,res);
if((bool)res) Alert("линия line показывается на OBJ_PERIOD_W1 и OBJ_PERIOD_MN1");
 
svds75:
Пробовал и так. Хотя реально флаги работают (линия кажет только на одном тайме), а эксперт видит что оба флага включены.

А чего вы собственно хотите? Вы же запрашиваете видимость на недельном ИЛИ месячном таймфрейме. Так что программа вам вернет true если хотя бы один из них включен.

Запрашиваейте раздельно через 2 вызова. 

 
svds75:
Пробовал и так. Хотя реально флаги работают (линия кажет только на одном тайме), а эксперт видит что оба флага включены.

Так может Вам нужно прямо задавать видимость?

 ObjectSetInteger(0,"line",OBJPROP_TIMEFRAMES,OBJ_PERIOD_W1);
 
svds75:

Здравствуйте. Подскажите, почему при запросе свойств трендовой линии переменная res всегда true, хотя в ручную ставлю флаг показ только W1, или только MN1?

Необходимо что-бы она показывалась только  на одном из таймов.

Потому что линия всегда существует, потому и всегда считывается значение. Невидимость линии не означает ее отсутсвия.
 
barabashkakvn:

Так может Вам нужно прямо задавать видимость?

Нет задавать мне нужно в ручную, а проверять программно.
 
svds75:
Нет задавать мне нужно в ручную, а проверять программно.
Тогда надо читать флаг видимости и делать логическое & с константой.
 

Вот так:

   long cf=ObjectGetInteger(0,"name",OBJPROP_TIMEFRAMES);
   Alert(((cf&OBJ_PERIOD_H1)==OBJ_PERIOD_H1) || cf==0);
Если флаг видимости на H1 установлен, будет true.