从头开始自学MQL5语言 - 页 41

 
MrBrooklin:

这就对了!我的时间是以天计算的。还有训练期,以及从我开始到现在已经过了多少天。我想我不明白什么。

尊敬的弗拉基米尔。

就条件逻辑而言,"我将学习这门语言 "这个字符串可以作为计算学习时间和耐心的结果而输出。如果其中一个参数(时间或耐心)等于零,那么该语言就不能被学习。因此,条件中存在一个逻辑错误。
 
MrBrooklin:

谢谢你,彼得!我已经得到了帮助,了解了这个问题。

我正在继续学习MQL5编程语言,今天我粘贴了一个脚本的代码,这是本主题参与者的一个任务的延续。我在所有模式下测试了该脚本。一切都在正常运行。我已经把输入参数设置到最低限度,开始时。

问候,弗拉基米尔。

你是否......在变量和函数的名称中写完了俄罗斯的名字。这被认为是非常糟糕的形式。显然,你是在为自己做程序,但这毕竟不是1C。一次性习惯于标准的代码风格。然后,你将更容易从专家顾问和指标中阅读其他人的代码,你肯定会需要这些。

 
Реter Konow:
就条件逻辑而言,"我将学习这门语言 "这个字符串可以作为计算学习时间和耐心的结果而输出。如果其中一个参数(时间或耐心)等于零,你将无法学习这门语言。因此,条件中存在一个逻辑错误。

你是指函数本身的条件有逻辑错误,还是脚本的操作有逻辑错误?

问候,弗拉基米尔。

 
Vasiliy Sokolov:

你应该......停止在变量和函数的名称中写俄文名称。这被认为是非常糟糕的形式。很明显,你在为自己制作节目,但毕竟不是1C。一次性习惯于标准的代码风格。然后,你将更容易阅读其他人的专家顾问和指标的代码,你肯定会需要这些。

瓦西里,你不会相信的,但我完全赞成!"。只是任务的条件是用俄语给出的,因此要继续下去。我一定会用英语重写剧本。

问候,弗拉基米尔。

 
MrBrooklin:

你是指函数本身的条件有逻辑错误,还是脚本的操作有逻辑错误?

尊敬的弗拉基米尔。

代码中没有语法错误,但逻辑是错误的,你必须密切关注。

sufficiency_time函数中的计算本身是不合逻辑的。当时间不等于零时就足够了。该函数计算时间差,并返回布尔值是/否。也就是说,该函数的结构不正确。重新审视sufficiency_time()的计算。

虽然,没有。该函数返回ushort,但仍然没有逻辑。Sufficiency_time应该大于0。
 
Реter Konow:
代码中没有语法错误,但逻辑是错误的,你必须密切注意。

sufficiency_time函数中的计算本身是不合逻辑的。时间不为零时就足够了。该函数计算时间差,并返回一个逻辑上的是/否。也就是说,该函数的结构不正确。重新计算sufficiency_time()。

虽然,没有。该函数返回ushort,但仍然没有逻辑。sufficiency_time应该大于0。

现在已经很清楚了,只是需要想出办法来。这将是周末要做的事情。

问候,弗拉基米尔。

 
Реter Konow:
代码中没有语法错误,但逻辑是错误的,你必须仔细观察。

sufficiency_time函数中的计算本身是不合逻辑的。时间不为零时就足够了。该函数计算时间差,但返回一个逻辑上的是/否。也就是说,该函数的结构不正确。重新审视sufficiency_time()的计算。

虽然,没有。该函数返回ushort,但仍然没有逻辑。Sufficiency_time应该大于0。

如果你是为初学者写的,就用平实的语言写,没有什么可以从远处进入的,可以轻视的。

和你的威胁将看到他们可能感兴趣的地方
 

我继续学习MQL5编程语言,现在发布一个脚本的代码,这是本主题参与者的一项任务的延续。该脚本已在所有模式下进行了测试。没有发现任何问题。应用最小数量的输入参数来开始。脚本代码是用英语写的,代码的注释是用俄语写的,以方便学习。正如我先前所承诺的那样,我试图以一个编程学校一年级学生可以理解的方式来描述这个脚本。

最好的问候,弗拉基米尔。

//+------------------------------------------------------------------+
//|                                                Learning_MQL5.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright   "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property description "Скрипт подводит итог обучения языку программирования MQL5. В зависимости от "
#property description "входных параметров печатает во вкладке \"Эксперт\" торгового терминала два"
#property description "сообщения на русском языке: \"Я выучу язык MQL5!\" или \"Я не выучу язык MQL5!\""
#property description "Код скрипта написан на основе примера, приведенного Valeriy Yastremskiy на сайте"
#property description "MQL5, в теме \"Самообучение языку MQL5 с полного нуля\"." 
#property description "======================================================"
#property description "Ссылка на пример https://www.mql5.com/ru/forum/352460/page30#comment_18646826"
//---
#property version     "1.00"              //версия скрипта 1.00
//---
#property script_show_inputs              //выводить окно со свойствами перед запуском скрипта 
//--- Зададим входные параметры скрипта: 
input ushort Period_learning=500;         //Полный период обучения в днях
input ushort Days_passed=10;              //Сколько дней прошло с начала обучения
input bool   Patience=true;               //Терпение (true - достаточно; false - не достаточно)
//--- Зададим глобальные переменные:
//переменная enough_time (достаточно времени), где ushort - минимальное значение "0", максимальное "65535"
ushort enough_time;
//переменная enough_patience (достаточно терпения), где bool - логическое значение: истина (true) или ложь (false)
bool enough_patience;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() //старт работы скрипта
  {
/* Зададим условие для работы скрипта. Если:
   1. значение функции "имею время" будет больше или равно "Полного периода обучения", заданного 
      во входных параметрах скрипта;
   2. и значение функции "имею время" не будет равно нулю;
   3. и значение функции "имею терпение" будет равно значению истина (true)
*/
   if(have_time()>=Period_learning && have_time()!=0 && have_patience()==true)
     {
      Print("Я выучу язык MQL5!");    //выводим сообщение "Я выучу язык MQL5!"
     }
   else //в противном случае
     {
      Print("Я не выучу язык MQL5!"); //выводим сообщение "Я не выучу язык MQL5!"
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//--- Функция "имею_время"
ushort have_time()            //создаём функцию "имею_время" и присвоим тип данных ushort
  {
   enough_time=Days_passed;   //задаём для значения enough_time (достаточно времени) значение равное
                              //входному параметру "Сколько дней прошло с начала обучения" (Days_passed)

   return(enough_time);       //возвращаем значение "достаточно времени" в функцию "имею время"
  }
//--- Функция "имею_терпение"
bool have_patience()          //создаём функцию "имею_терпение" и присвоим тип данных bool
  {
   enough_patience=Patience;  //задаём для переменной enough_patience (достаточно терпения) значение равное
                              //входному параметру "Терпение" (Patience): истина или ложь

   return(enough_patience);   //возвращаем значение "достаточно терпения" в функцию "имею терпение"
  }
//+------------------------------------------------------------------+
 

首先,向Dmitry Fedoseyev学习如何处理字符串变量,在学习别人的代码阶段,信息链是非常模糊的。

在他评论的文章中,一切都很清楚,同时你会学到很多东西,我是作为这里大多数文章的读者来说的,我想没有人比我读得更多)

 
MrBrooklin:

这就对了!我的时间是以天计算的。还有训练期,以及从我开始到现在已经过了多少天。我想我还不明白一些事情。

问候,弗拉基米尔。



你的代码和逻辑是正确的。在我的IMHO上,我昨天看了一下,起初我自己也很惊讶,但后来我发现了其中的差别......:-)