Вопрос об условии

 

Вопрос простой:

Можно ли в условии использовать функцию?

if (БУ(Массив1)+БУ(Массив1)>0) .....

где БУ() - функция.
Ругается, говорит, что лишняя скобка.

 
можно... ругается по-другому поводу...
 
Pingvin-man писал (а):

. . .

if (БУ(Массив1)+БУ(Массив1)>0) .....
. . .

Предлагаю перефразировать "афоризм" - "дьявол кроется в многоточии". :(

 
Наверно массивы передаются в функцию БУ вместе с квадратными скобками.
 
Pingvin-man писал (а):

if (БУ(Массив1)+БУ(Массив1)>0) .....

где БУ() - функция.
Ругается, говорит, что лишняя скобка.

я не спец. Но мне представляется, что здесь явная ошибка. Вот какая.

 

Разве знак "+" имеет приоритет над знаком ">" ?

Запись кажется мне странной. Скобок(двух) явно не хватает. Надо, видимо, сделать так:

if ((БУ(Массив1)+БУ(Массив1))>0)
Кстати, Pingvin-man, как вы безубыток вычисляете?
 
rid:

Разве знак "+" имеет приоритет над знаком ">" ?

Запись кажется мне странной. Скобок(двух) явно не хватает. Надо, видимо, сделать так:


у знака "+", как вы выражаетесь приоритете точно есть. Можно записывать  без скобок. Проверено.
 

Возможно. Но так сказать, что бы не думалось. Я бы всё таки сделал со скобками.

а+в>0

(a+b)>0

Всё таки вторая запись кажется мне более корректной! Кроме того, я не вижу иной причины ошибки при компиллированиии ...

 
rid:

Разве знак "+" имеет приоритет над знаком ">" ?

Запись кажется мне странной. Скобок(двух) явно не хватает. Надо, видимо, сделать так:

Кстати, Pingvin-man, как вы безубыток вычисляете?

Да, с этой ошибкой уже разобрался. Причём через пару минут после того, как создал топик.

А вот насчёт безубытка - вопрос встал во весь рост.

Как вычислять, если ордера направлены в одну сторону, представляю себе очень хорошо.

Безубыток = сумма вложений / сумму лотов, или

         lots=lots+OrderLots();
         sum=sum+OrderLots()*OrderOpenPrice();
         BU=sum/lots;

А вот что нужно делать, если ордера направлены в разные стороны?

Верно ли будет такое решение:

      if (OrderType()==0)
      {
         lots=lots+OrderLots();
         sum=sum+OrderLots()*OrderOpenPrice();
      }
      if (OrderType()==1)
      {
         lots=lots-OrderLots();
      sum=sum-OrderLots()*OrderOpenPrice();
      }
 BU=sum/lots;


В случае Sell лоты будут плюсоваться, и сумма будет плюсоваться (расти в плюс), т.к. значение количества лотов будет возвращаться отрицательное, минус на минус - будет плюс. Правильно ли это? Или же для Селов должны получаться отрицательные значения суммы и количества лотов?

Башка совсем не варит.

Help.

 

Да, нужно сначала поиском пользоваться.

Блин, на сапре сам пишу людям, чтобы при задании вопроса сначала воспользовались поиском. А тут сам в лужу сел...

https://forum.mql4.com/ru/7057

 
rid:

Возможно. Но так сказать, что бы не думалось. Я бы всё таки сделал со скобками.

а+в>0

(a+b)>0

Всё таки вторая запись кажется мне более корректной! Кроме того, я не вижу иной причины ошибки при компиллированиии ...

верно

пусть там приоритеты по умолчанию какие угодно будут!

так наглядней к тому же

Причина обращения: