Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 886

 
Sergey Voytsekhovsky:

Да, действительно. не обратил на это внимание. А смотрится лучше, буковок опять же меньше.

А засунуть под одного оператора ?: сразу три исполнения (не знаю как правильно сказать) никак нельзя?

Только фигурные скобки - они ограничивают условие.

 
int a,b,c,d,e,f,g,j;
a=10;
b=5;
d=3;
f=4;
j=1;
a>b?{c=d;e=f;g=j}:{c=0;e=0;g=0};
Print("c=",c," e=",e," g=",g);

Попробовал нарисовать вот такую конструкцию, компилятор в меня плеснул чем-то плохопахнущим. Где ошибка?

 
Sergey Voytsekhovsky:

УУРРАА, и душа запела. Алексей, огромное спасибо !!!!!

Все заработало, не совсем понял, как получается обойтись без массива 

ведь его описание удалено. Значит здесь вообще можно обойтись без лишнего массива?


#property indicator_color3  clrGreen,clrRed

Это и есть массив.

 
Sergey Voytsekhovsky:

Да, действительно. не обратил на это внимание. А смотрится лучше, буковок опять же меньше.

А засунуть под одного оператора ?: сразу три исполнения (не знаю как правильно сказать) никак нельзя?

Можно. Создать две пользовательские функции и их вызывать.

int m = 5;//0;//
m = m == 0 ? f1 : f2;

int f1()
 {
  return(1);
 }
int f2()
 {
  return(2);
 }
 
Konstantin Nikitin:

Да о том-же. Ладно проскочили. Главное чтоб он понял что к чему...

Я все понял, спасибо.
Просто я запутался. Это все для меня новое

 
Alexey Viktorov:

Можно. Создать две пользовательские функции и их вызывать.

Правильно ли я Вас понял???

ColorHistogram_2Colors[i]=ExtMainBuffer[i]>=50?ColorUp(i):ColorDown(i);
//+------------------------------------------------------------------+ 
int ColorUp(int i)
 {
   ColorHistogram_2Buffer1[i]=50;
   ColorHistogram_2Buffer2[i]=ExtMainBuffer[i];
  return(0);
 }
int ColorDown(int i)
 {
   ColorHistogram_2Buffer1[i]=ExtMainBuffer[i];
   ColorHistogram_2Buffer2[i]=50;
  return(1);
 }

Прописал так в индикаторе - работает.

 
Sergey Voytsekhovsky:

Правильно ли я Вас понял???

Прописал так в индикаторе - работает.

Если работает, то правильно. Но я-бы сделал не так.

Во первых, не стал-бы чудить с заменой буферов в какой писать =50. Достаточно в один писать всегда 50 безо всяких условий.

А во второй буфер заносить значение больше или меньше 50. Затем при условии <=> останется только назначить цвет. И никаких отдельных функций.

 
Alexey Viktorov:

Если работает, то правильно. Но я-бы сделал не так.

Во первых, не стал-бы чудить с заменой буферов в какой писать =50. Достаточно в один писать всегда 50 безо всяких условий.

А во второй буфер заносить значение больше или меньше 50. Затем при условии <=> останется только назначить цвет. И никаких отдельных функций.

Согласился бы с Вами, если условие <>50 определяло бы только цвет, но ведь это еще и начало/конец гистограмной свечи. Потому спорить не буду, попробую проверить, хотя скорее всего Вы правы.

 
Alexey Viktorov:

Если работает, то правильно. Но я-бы сделал не так.

Да, действительно, любой из двух буферов DRAW_COLOR_HISTOGRAM2, определяющих начало/конец свечи, может быть как началом, так и концом. Теперь все гораздо проще:

   ColorHistogram_2Buffer1[i]=50;
   ColorHistogram_2Buffer2[i]=ExtMainBuffer[i];
   ColorHistogram_2Colors [i]=ExtMainBuffer[i]>=50?0:1;

Спасибо за науку.

 

Как сбрасывать значения INDICATOR_MAXIMUM и INDICATOR_MINIMUM при переключении режимов?

Суть в том что в одном режиме эти значения используются, а в другом нет. И при переключении режима на тот режим где эти максимумы и минимумы ненужны, они почему-то сохраняются. Эта проблема есть как в MQL4, так и в MQL5

Например, при запуске индикатора на первом режиме границы ненужны и всё работает корректно

Во втором режиме устанавливаются границы максимума и минимума окна индикатора. И при переключении с первого режима на второй всё работает корректно


А вот уже при переключении со второго режима на первый (в первом режиме границы не используются) эти максимумы и минимумы сохраняются и пользователь не может увидеть настоящих значений индикатора


Код на MQL4 в прикреплённых файлах

Хоть кто-то сталкивался с это проблемой? Может хоть у кого-то есть догадки как это решить?

Файлы:
test.mq4  4 kb
Причина обращения: