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

 

Смешивать булевы и другие условия в одну кучу... Ладно.  Не хотите писать грамотный код, не пишите. Уговаривать и спорить с вами не буду.

MakarFX #:

А если говорить об универсальности функции, то...

Ну это уже ближе к здравому смыслу, нежели твоя предыдущая функция.

Правда, читабельность оставляет желать лучшего... Но кто когда об этом думает?... :)

 
Nerd Trader #:
То, которое по условию будет true

нет, имя у  "line_name" будет последнее присвоенное.

 
Mihail Matkovskij #:

Смешивать булевы и другие условия в одну кучу... Ладно.  Не хотите писать грамотный код, не пишите. Уговаривать и спорить с вами не буду.

ок, ок, буду твой пример использовать

 
Не нужно линии создавать и удалять постоянно. Есть флаги видимости объеета на таймфреймах. Нужно скрывать и отображать.
 
Mihail Matkovskij #:

Смешивать булевы и другие условия в одну кучу... Ладно.  Не хотите писать грамотный код, не пишите. Уговаривать и спорить с вами не буду.

Ну это уже ближе к здравому смыслу, нежели твоя предыдущая функция.

Правда, читабельность оставляет желать лучшего... Но кто когда об этом думает?... :)

Конкретнее, что не так?

И ты так и не ответил что вернет твоя функция при "-1"

 
MakarFX #:

нет, имя у  "line_name" будет последнее присвоенное.

ну да, почему с этим должны быть какие-то проблемы? Все равно удалится тот объект что проходит по условию.
 
MakarFX #:

Конкретнее, что не так?

И ты так и не ответил что вернет твоя функция при "-1"

она вернёт false - уже проверил
 
Nerd Trader #:
она вернёт false - уже проверил
А надо true.
 
MakarFX #:
А надо true.
С логическим НЕ будет true :)
 
MakarFX #:

Конкретнее, что не так?

bool FindObject(string name, int win)
{
   if(ObjectFind(0, name) == win) 
     return(true);
   return(false);
}
Более компактный вариант:
bool FindObject(string name,int win) { return (ObjectFind(0,name) == win); } 

Но ты кажется говорил, твоя функция претендует на универсальность?... Тогда ты забыл одну очень важную деталь:

bool FindObject(const long chart_id, const string name, const int win) { return (ObjectFind(chart_id, name) == win); } 

Самый универсальный и надёжный вариант.

И ты так и не ответил что вернет твоя функция при "-1"

Тебе лень написать простой скрипт для проверки? Ладно. Я сделал это за тебя:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() {
  for (int i = -10; i <= 10; i++) 
    if (i)
      printf("%d - true", i);
    else
      printf("%d - false", i);
}
//+------------------------------------------------------------------+

 А теперь смотри результат:

-10 - true

-9 - true

-8 - true

-7 - true

-6 - true

-5 - true

-4 - true

-3 - true

-2 - true

-1 - true

0 - false

1 - true

2 - true

3 - true

4 - true

5 - true

6 - true

7 - true

8 - true

9 - true

10 - true



Все отрицательные числа true. 0 - false. Вот, чудеса то какие... :)

Таким образом, твоя функция вернет true

А моя вернет false

bool objectExist(const long _chartID, const string _name) { return(ObjectFind(_chartID, _name) >= 0); } // чётко определим условие существования объекта!

Как, собственно, ей и полагается при отрицательных значениях.

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