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

 
novichok2018:

Данная переписка как раз свидетельствует, что в моём случае if(!rost)  не то же самое, что if(rost==false). Потому что для false отдельное условие.

Вам с азов начинать нужно. Это - две абсолютно идентичные записи.

 
Artyom Trishkin:

 Это - две абсолютно идентичные записи.

Только, если логика мкл4 не соответствует логике русского языка (и математической логике). Т.к. выражение ("НЕ"rost) вовсе не значит, что rost==(равно)false, т.к. существует отдельное условие, оговаривающее, когда rost==false. Т.е. "не 5" вовсе не означает "2".

 
novichok2018:

Только, если логика мкл4 не соответствует логике русского языка (и математической логике). Т.к. выражение ("НЕ"rost) вовсе не значит, что rost==(равно)false, т.к. существует отдельное условие, оговаривающее, когда rost==false. Т.е. "не 5" вовсе не означает "2".

Если вы хотите не 5 и не 2 то и задавайте rost как int 
 
novichok2018:

Только, если логика мкл4 не соответствует логике русского языка (и математической логике). Т.к. выражение ("НЕ"rost) вовсе не значит, что rost==(равно)false, т.к. существует отдельное условие, оговаривающее, когда rost==false. Т.е. "не 5" вовсе не означает "2".

Учите азы ;)

Мало того, я вам скажу ещё, что если bool rost у вас будет задано как 5 или 2, или -5 или -2, то это однозначно true, потому как для булевых переменных false - это ноль, true - всё остальное.

 
Artyom Trishkin:

Учите азы ;)

Мало того, я вам скажу ещё, что если bool rost у вас будет задано как 5 или 2, или -5 или -2, то это однозначно true, потому как для булевых переменных false - это ноль, true - всё остальное.

То есть Вы пытаетесь мне втолковать то же, что ранее объяснил Vladislav Andruschenko, но до меня не дошло: "Вторая строчка не имеет значения  потому, что у вас rost = bool и может принимать только 2 значения и по умолчанию оно равно false ".

Тогда как мне оговорить второе условие? Дополнительным флагом? Или вообще без флагов, просто "условием в условиях" ? Наверное так лучше.

Спасибо.

 
novichok2018:

То есть Вы пытаетесь мне втолковать то же, что ранее объяснил Vladislav Andruschenko, но до меня не дошло: "Вторая строчка не имеет значения  потому, что у вас rost = bool и может принимать только 2 значения и по умолчанию оно равно false ".

Тогда как мне оговорить второе условие? Дополнительным флагом? Или вообще без флагов, просто "условием в условиях" ? Наверное так лучше.

Вам будет легче понять, если Вы примете на веру, что в языках программирования есть условности. Например n=n+10; Разве это правильно с точки зрения математики и логики? И таких условностей много. Надо поверить, что любому числу соответствует логическое значение. 0 = false; Все остальные числа, как положительные, так и отрицательные = true. Вот скрипт, подтверждающий это:

//+------------------------------------------------------------------+
//| Логика языка mql-4                                     PROBA.mq4 |
//+------------------------------------------------------------------+
#property strict
void OnStart()
{
  string s1="Числовое значение n:   ";
  string s2="Логическ значение n: ";
  string s3="ЛогичЧис значение x: ";
  string s4="Числовое значение x:   ";
  bool x;
  int k;
  Alert("-------------------------");
  for(int n=-4; n++<3;)                  // Вот еще: можно ли так цикл записать?  а Вы попробуйте!!!
  {
     s1 +=string(n)+"        ";
     s2 += (n ? "TRUE" : "false")+"   ";
     x=n;
     s3 += (x ? "TRUE" : "false")+"   ";
     k=x;
     s4 += (string)k + "         ";
  }
  Alert(s4);
  Alert(s3);
  Alert(s2);
  Alert(s1);
}

А вот результат: 

 
STARIJ:

Вам будет легче понять, если Вы примете на веру, что в языках программирования есть условности. Например n=n+10; Разве это правильно с точки зрения математики и логики? И таких условностей много. Надо поверить, что любому числу соответствует логическое значение. 0 = false; Все остальные числа, как положительные, так и отрицательные = true. Вот скрипт, подтверждающий это:

А вот результат: 

Спасибо! Про условности понял, учту. А вот чтобы разобраться в предложенном скрипте, увы, моих знаний мкл4 недостаточно. Простите :( .

 
Средства на счёте закончились, а советник пытается ордер открыть. Сервер писал "недостаточно средств для..." в итоге БАНН. Есть какой нибудь способ не рыпаться если лаве больше нету?
 
PolarSeaman:
Средства на счёте закончились, а советник пытается ордер открыть. Сервер писал "недостаточно средств для..." в итоге БАНН. Есть какой нибудь способ не рыпаться если лаве больше нету?

Да, имеется.

AccountFreeMarginCheck - Информация о счете - Справочник MQL4
AccountFreeMarginCheck - Информация о счете - Справочник MQL4
  • docs.mql4.com
Размер свободных средств, которые останутся после открытия указанного ордера по текущей цене на текущем счете. Если свободных средств не хватает, то будет сгенерирована ошибка 134 (ERR_NOT_ENOUGH_MONEY).
 
Ihor Herasko:

Да, имеется.

Спасибо.