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

 
Tretyakov Rostyslav #:

к сожалению, ничего не изменилось... (

IndicatorDigits() - эта функция устанавливает формат точности для визуализации значений индикатора.

визуально и так было 5 знаков. тем более, у меня не индикатор...

но спасибо в любом случае...

 
Vladimir Zotov #:

if (iMA(NULL,1,24,0,MODE_EMA,PRICE_MEDIAN,0)>iMA(NULL,1,60,0,MODE_EMA,PRICE_MEDIAN,0))//проверяем М1 вверх

  {

  kM1="Бычий";

  for (int i=0;NormalizeDouble(iMA(NULL,1,24,0,MODE_EMA,PRICE_MEDIAN,i),Digits)>NormalizeDouble(iMA(NULL,1,24,0,MODE_EMA,PRICE_MEDIAN,i),Digits);i++)

  iM1++;

   if(iMA(NULL,1,24,0,MODE_EMA,PRICE_MEDIAN,0)>iMA(NULL,1,60,0,MODE_EMA,PRICE_MEDIAN,0))//проверяем М1 вверх
     {
      kM1="Бычий";
      for(int i=0;i<5;i++)
        {
         if(NormalizeDouble(iMA(NULL,1,24,0,MODE_EMA,PRICE_MEDIAN,i),Digits)>NormalizeDouble(iMA(NULL,1,24,0,MODE_EMA,PRICE_MEDIAN,i),Digits)
         iM1++;
        }
     }
 
retired #:

к сожалению, ничего не изменилось... (

IndicatorDigits() - эта функция устанавливает формат точности для визуализации значений индикатора.

визуально и так было 5 знаков. тем более, у меня не индикатор...

но спасибо в любом случае...

У трендовых линий две цены, попробуйте 

ObjectGetDouble(0,m_objname,OBJPROP_PRICE2);
 
Tretyakov Rostyslav #:

У трендовых линий две цены, попробуйте 

знаю, что два окончания... )

обозначаются 0 и 1, а не 2.

это учтено в моем варианте - беру точку 0 - ObjectGetDouble(0,m_objname,OBJPROP_PRICE,0)

в точке 1 аналогичное значение до 4-го знака после запятой...
 
Tretyakov Rostyslav #:

тоесть если я правильно понял, то ошибка состоит лишь в том что я сравнения имашек запихнул в выражение цикла?

 
Vladimir Zotov #:

Всем привет! столкнулся с такой проблемой, есть некоторая часть кода MQL4, где цикл for находится внутри оператора IF и при правильности условий цикл все равно игнорируется... Что тут можно сделать чтобы цикл не игнорировался?


  if (iMA(NULL,1,24,0,MODE_EMA,PRICE_MEDIAN,0)>iMA(NULL,1,60,0,MODE_EMA,PRICE_MEDIAN,0))//проверяем М1 вверх

  {

  kM1="Бычий";

  for (int i=0;NormalizeDouble(iMA(NULL,1,24,0,MODE_EMA,PRICE_MEDIAN,i),Digits)>NormalizeDouble(iMA(NULL,1,24,0,MODE_EMA,PRICE_MEDIAN,i),Digits);i++)

  iM1++;

  } 

  if (iMA(NULL,1,24,0,MODE_EMA,PRICE_MEDIAN,0)<iMA(NULL,1,60,0,MODE_EMA,PRICE_MEDIAN,0))//проверяем М1 вниз

  {

  kM1="Медвежий";

  for (int i=0;NormalizeDouble(iMA(NULL,1,24,0,MODE_EMA,PRICE_MEDIAN,i),Digits)<NormalizeDouble(iMA(NULL,1,24,0,MODE_EMA,PRICE_MEDIAN,i),Digits);i++)

  iM1++; 

  } 

Посмотрите внимательно условие цикла. На первый взгляд, у вас условие вида X[i]>X[i], которое всегда будет ложным.

И вставляйте код правильно, через кнопку "</>".

 
JRandomTrader #:

Посмотрите внимательно условие цикла. На первый взгляд, у вас условие вида X[i]>X[i], которое всегда будет ложным.

И вставляйте код правильно, через кнопку "</>".

почему оно всегда будет ложным?

 
Vladimir Zotov #:

почему оно всегда будет ложным?

Грубо, 1>1 - может быть истинным?

 
JRandomTrader #:

Грубо, 1>1 - может быть истинным?

Вы извините, там 2 разные ЕМА 1-24, 2-60, даже теоретически они не могут быть всегда одинаковыми

 
retired #:

знаю, что два окончания... )

обозначаются 0 и 1, а не 2.

это учтено в моем варианте - беру точку 0 - ObjectGetDouble(0,m_objname,OBJPROP_PRICE,0)

в точке 1 аналогичное значение до 4-го знака после запятой...

  

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