Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Установил MetaTrader 5? Узнай о нем подробно!
Natashe4ka
80
Natashe4ka 2016.11.23 15:08 

Не могу разобраться, при #property strict выдаёт 4 ошибки и как исправить не пойму.

Ошибки на return(k==-1); и return(k > 0);
Просто поменять на return(0); нельзя!!!

bool checkLowStrict(int count, int i) {
for (int k=count-1; k>=0; k--)
if (Low[i+count] >= Low[i+k]) break;  
return(k==-1);
}
//-------------------------------------+
bool checkLowRef (int count, int i) {
for (int k=count-1; k> 0; k--)
if (Low[i+k] < Low[i]) break;  
return(k > 0);
}
Vitalie Postolache
11039
Vitalie Postolache 2016.11.23 15:17  
Natashe4ka:

Не могу разобраться, при #property strict выдаёт 4 ошибки и как исправить не пойму.
Индикатор МТ4. Нужна помощь!! 

В ретурне нельзя ставить условия, возвращайте только значение.

Например,  return(true)

Natashe4ka
80
Natashe4ka 2016.11.23 15:22  
Vitalie Postolache:

В ретурне нельзя ставить условия, возвращайте только значение.
Например,  return(true)
Но только тип функции придётся поменять. Или возвращать тру-фалс. 

Эт как?)) Но значение надо вернуть.
Vitalie Postolache
11039
Vitalie Postolache 2016.11.23 15:25  
Natashe4ka:
Эт как?)) Но значение надо вернуть.

Ну например так

bool checkLowStrict(int count,int i)
{
   bool r=false;
   for(int k=count-1; k>=0; k--)
      if(Low[i+count]>=Low[i+k]) {break;r=true;}
return(r);
}

З.Ы.: извиняюсь, ошибочка была, исправил.

Vitalie Postolache
11039
Vitalie Postolache 2016.11.23 15:36  

По-моему в коде слишком много break )))

И в главном цикле лучше на одну итерацию меньше делать, а то ругатся на вылет за пределы массива будет -    for(i=limit-1; i>=0; i--)


Natashe4ka
80
Natashe4ka 2016.11.23 15:36  
Vitalie Postolache:

Ну например так

Не работает так, все сигналы пропадают.
Также если просто заменить на return(0); сигналы тоже пропадают вообще  

Надо как то вернуть значение. 

Vitalie Postolache
11039
Vitalie Postolache 2016.11.23 15:37  
Natashe4ka:

Не работает так, все сигналы пропадают.
Также если просто заменить на return(0); сигналы тоже пропадают вообще  

Надо как то вернуть значение. 

Код написан так, чтобы в условии сравнивать результат на правдивость. Значит возвращать нужно тру-фалс, как я написал.

Чтобы возвращать что-то другое, нужно будет поменять тип функций и условия. 

Опишите словами, что вы хотите от этого индикатора.
Vitalie Postolache
11039
Vitalie Postolache 2016.11.23 15:40  

Например, что вы ожидаете получить с этого?

if(High[i]){}???

Мойа не понимать... 

Natashe4ka
80
Natashe4ka 2016.11.23 15:41  
Vitalie Postolache:

И в главном цикле лучше на одну итерацию меньше делать, а то ругаться на вылет за пределы массива будет -    for(i=limit-1; i>=0; i--)

Тут же есть -1
limit = MathMin(Bars-counted_bars,Bars-1); // Bar-1
for(i=limit; i>=0; i--) {


 

Vitalie Postolache
11039
Vitalie Postolache 2016.11.23 15:42  
Natashe4ka:

Тут же есть -1
limit = MathMin(Bars-counted_bars,Bars-1); // Bar-1
for(i=limit; i>=0; i--) {


 

Тем не менее, у меня ругалось на вылет.
Natashe4ka
80
Natashe4ka 2016.11.23 15:44  
Vitalie Postolache:

Например, что вы ожидаете получить с этого?
if(High[i]){}???
Мойа не понимать... 

Сами условия для сигналов в коде убраны (конспирация) 
надо только исправить ошибки, но не терять возвращаемое значение)) 

/ /123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий