Самообучение языку MQL5 с полного нуля - страница 31

 
Valeriy Yastremskiy:

Именно логические, а не строковые, т.к. между ними И.))))

Значит, не до конца разобрался в Вашем вопросе. Упустил тот момент, когда Вы спрашивали о том: "... какого типа данная переменная...". Учусь. За подсказку спасибо!

С уважением, Владимир.

 
Igor Makanu:

это совершенно другое условие от написанного выше, и дело тут не в визуальном отличии

а в одновременном выполнении левой части "И" и правой части

Здравствуйте, Игорь! Уже понял в чём состояла ошибка. За подсказку спасибо!

С уважением, Владимир.

 
MrBrooklin:

Здравствуйте, Игорь! Уже понял в чём состояла ошибка. За подсказку спасибо!

С уважением, Владимир.

вчера Василий Соколов давал рекомендации по изучению языка, и основной упор делал на понимание работы функций

это праввильно и это практично - ускоряет разработку, позволяет задачу делить на блоки, позволяет повторно использовать код....

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

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


логические ошибки самые страшные, все будет работать, а вот как и когда и где будет подлагивать... да не найдешь потом )))


ну и по сабжу, если про условия, то напишите условие пересечения 2х МА, хоть все тематические форумы забиты этим вопрос-ответ, но часто бывает, что такой простой вопрос для человека, может не так просто быть формализован в виде логических условий ;)


UPD: Здравствуйте! забыл!

 

Ещё раз хочу поблагодарить Валерия и Игоря за то, что на таком простом примере помогли мне до конца разобраться и понять, как работает тип данных bool.

С уважением, Владимир.

 
Igor Makanu:
... ну и по сабжу, если про условия, то напишите условие пересечения 2х МА, хоть все тематические форумы забиты этим вопрос-ответ, но часто бывает, что такой простой вопрос для человека, может не так просто быть формализован в виде логических условий ;)...

Обязательно попробую, но чуть по-позже. Сижу на карантине с грипом и чувствую, что голова плохо переваривает новую информацию.

С уважением, Владимир.

 
Aliaksandr Hryshyn:
Контрольный вопрос:
"достаточно времени" — какого типа данная переменная может быть, чтобы не было предупреждений компилятора?

Ребята, фигней не майтесь. Не уводите Бруклина в сторону. Не упирайте на типы. 

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
string a="достаточно времени";
string b="достаточно терпения";
//---
   if(a!=b)
     {
      Print("я выучу язык MQL 5");
     }
  }

Код прекрасно работает. Потому что на уровне ядра, определена функция сравнения строк, которая возвращает истину, если строки равны, и ложь в противном случае. Когда мы пишем a != b, вызывается функция сравнения двух строк через литерал !=. К слову пользователь сам может определить функцию сравнения своих пользовательских типов, и тогда и они будут работать похожим образом. Т.е. дело не в типах, а снова в функциях.

Однако код не смотря на то что выполняется верно, внутренне противоречив. В реальности автор хотел выразить что "если достаточно времени" и "достаточно терпения" то результатом будет "Я выучу язык MQL 5". А по факту вышло, что одно значение обязательно не должно быть равно другому, что бы выучить язык.

 
Vasiliy Sokolov:

Ребята, фигней не майтесь. Не уводите Бруклина в сторону. Не упирайте на типы. 

Код прекрасно работает. Потому что на уровне ядра, определена функция сравнения строк, которая возвращает истину, если строки равны, и ложь в противном случае. Когда мы пишем a != b, вызывается функция сравнения двух строк через литерал !=. К слову пользователь сам может определить функцию сравнения своих пользовательских типов, и тогда и они будут работать похожим образом. Т.е. дело не в типах, а снова в функциях.

Однако код не смотря на то что выполняется верно, внутренне противоречив. В реальности автор хотел выразить что "если достаточно времени" и "достаточно терпения" то результатом будет "Я выучу язык MQL 5". А по факту вышло, что одно значение обязательно не должно быть равно другому, что бы выучить язык.

Здравствуйте, Василий! Спасибо за поддержку и доходчивое разъяснение! Всё-равно благодарю всех, кто делится со мной своими знаниями. Они для меня очень важны, особенно на данном этапе!

С уважением, Владимир.

 
MrBrooklin:

Здравствуйте, Василий! Спасибо за поддержку и доходчивое разъяснение! Всё-равно благодарю всех, кто делится со мной своими знаниями. Они для меня очень важны, особенно на данном этапе!

Выздоравливайте. Продолжим после.

 
Vasiliy Sokolov:

Выздоравливайте. Продолжим после.

Спасибо!

С уважением, Владимир.

 
Vasiliy Sokolov:
"... Однако код не смотря на то что выполняется верно, внутренне противоречив. В реальности автор хотел выразить что "если достаточно времени" и "достаточно терпения" то результатом будет "Я выучу язык MQL 5". А по факту вышло, что одно значение обязательно не должно быть равно другому, что бы выучить язык."

Сначала была такая версия скрипта:

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
string a="достаточно времени";
string b="достаточно терпения";
//---
   if(a!=b && b!=a)
     {
      Print("я выучу язык MQL 5");
     }
  }
//+------------------------------------------------------------------+

в котором использовал логическое "И". Затем посмотрел, что в условии достаточно будет и одного выражения a!=b, чтобы вывести на печать "я выучу язык MQL5". Короче говоря, в саму суть вопроса не проникся, о чем мне и подсказали Валерий с Игорем.

С уважением, Владимир.

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