新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1415 1...140814091410141114121413141414151416141714181419142014211422...1953 新评论 Alexey Viktorov 2021.03.13 18:41 #14141 ANDREY:我添加了方括号 void PrintArray(double &eArray[]) 编译器没有显示任何错误或警告。 BUT.....,Print() 函数由于某种原因没有打印出一次。我理解你的懒惰,因为我自己就是这样。如果你不是太懒,我的热情取代了它,如果你告诉我自定义函数还有什么问题,我将非常感激。谢谢你的帮助,很抱歉给你带来麻烦。也许阵列是空的?通过改变一下函数来检查它void PrintArray(double &eArray) { int eSize=ArraySize(eArray); string eStr="Размер массива "+eSize+" : "; for(int i=0; i<eSize; i++) { eStr+=IntegerToString(i)+": "+DoubleToString(eArray[i],4)+", "; } Print(str); } 如果打印结果为0,则寻找阵列填充的问题。 ANDREY 2021.03.13 19:11 #14142 Alexey Viktorov: void PrintArray(double &eArray) { int eSize=ArraySize(eArray); string eStr="Размер массива "+eSize+" : "; for(int i=0; i<eSize; i++) { eStr+=IntegerToString(i)+": "+DoubleToString(eArray[i],4)+", "; } Print(str); } 我发现了一个错误。在最后的Print(str);行中,你传递了str 而不是estr。 我把它修好了,一切都很好。 感谢你,我现在不仅在大纲上,而且在细节上掌握了这个主题。唯一没有回答的问题是关于我第1442号 帖子中的加分项 谢谢你的帮助和支持。 Tretyakov Rostyslav 2021.03.13 19:38 #14143 Maxim Kuznetsov:在论坛上和出版物中,关于C#、Delphi和其他所有的东西......。 我从来没有做过这个,能不能给 "傻瓜 "一些链接? Alexey Viktorov 2021.03.13 19:48 #14144 ANDREY:我发现了一个错误。在最后的Print(str);行中, 你传递了 str 而不是estr。 我把它修好了,一切都很好。感谢你,我现在不仅在大纲上,而且在细节上掌握了这个主题。唯一未回答的问题是 关于我第1442号 帖子中的加分项 谢谢你的帮助和支持。不是我传的。 关于交易、自动交易系统和测试交易策略的论坛 新手对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Aleksei Stepanenko, 2021.03.13 09:04 Print("-LoY[0]-", DoubleToString(LoY[0],4), "---LoY[1]--", DoubleToString(LoY[1],4), "---LoY[2]--" , DoubleToString(LoY[2],4), "---LoY[3]--" , DoubleToString(LoY[3],4),................ "---LoY[30]--" , DoubleToString(LoY[30],4) ); 你可能想打印一个数组,或者做一个单独的函数来打印一个数组。 void PrintArray(double &eArray) { string eStr=""; int eSize=ArraySize(eArray); for(int i=0; i<eSize; i++) { eStr+=IntegerToString(i)+": "+DoubleToString(eArray[i],4)+", "; } Print(str); } 并从任何地方调用它 PrintArray(LoY); 我只是没有注意到这一点。我只是不明白编译怎么会没有错误......如果你已经想通了,并写出了整个序列,那么答案是什么?ANDREY: 我想我终于想明白了(我是一个有点迟钝的人) ......在第一次迭代中,字符串变量str是空的。字符=+告诉str将自己赋值为空(没有值),并在自己的空处添加一个带值的字符串,即"--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+", ";。这个字符串的值是 " --LoY[0]--, --1.6104-- "。在这些操作之后,str在第一次迭代时得到的数值 是 "--LoY[0]--, --1.6104-- "。按照我对你的术语的理解,这被称为第一要素。在第二次迭代时,str已经有了第一个元素,其值为" --LoY[0]--, --1。6104-- " 字符=+指示str 将第一个元素的值 分配给自己,并将其分配给本身带有第一个元素的值,添加一个带有其他值的字符串,即"--LoY["+"+IntegerToString(r)+"]--,"+DoubleToString(LoY[r],4)+",";。这个字符串的值已经是 " --LoY[1]--, --1.6105--"。经过这些操作,str在第二次迭代时得到的数值 是"--LoY[0]-- --1.6104----LoY[1]-- --1.6105--" 。也就是说,str已经有了第二个元素,在第三十次迭代时,str将包含30个元素,数组元素的值各不相同。循环结束后,有30个项目的字符串变量str将在循环外打印一次。 我花了很长时间才弄明白这个算法,因为当你说到加法时,我只注意了红色的加号"--LoY["+IntegerToString(r)+"]--,"+DoubleToString(LoY[r],4)+",没有注意str+=。所以对我来说,那些红色的加号"--LoY["+IntegerToString(r)+"]--,"+DoubleToString(LoY[r],4)+" 在这个算法中起什么作用还是个谜。谢谢你的帮助。 如果所有的时间安排正确的话,这仍然是一个谜...... Maxim Kuznetsov 2021.03.13 20:37 #14145 MakarFX: 我从来没有做过,可以为 "傻瓜 "提供一些链接吗? 如果你以前没有用C#、Delphi和类似的语言写过东西,那是没有用的......Windows的创建和其他地方一样,但首先你必须学会如何 "到处 "做。 首先是C#的短期课程,WinForms(例如)。互联网上应该有一堆这样的人。这有点超出了本论坛的范围。 ANDREY 2021.03.13 20:42 #14146 阿列克谢-维克多罗夫 。 Alexey Viktorov: 如果一切都写得正确的话,那又是多么神秘的事情啊 我很久没有理解这个算法,因为当你说到 加法 时,我只注意到红色的 加号"--LoY["+IntegerToString(r)+"]--,"+DoubleToString(LoY[r],4)+",但没有注意到str+=。 这就是为什么我仍然想知道这些红色加号"--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+" 在这个算法中起到什么作用。 从我描述的方式中可以清楚地看出,我的理解是,在每个迭代中,字符串的连接发生在一个地方,并且 与str+= 赋值操作一起发生一次 也就是说,使用符号+,字符串变量str中的一个元素的值与同一字符串变量str的另一个元素的值连接(加号)。我还是不明白这些 红色的+ 表示什么str+="--LoY["+IntegerToString(r)+"]--,"+DoubleToString(LoY[r],4)+"," ;。在我看来,没有对这些红色pluses之间的数值进行求和操作.....。如果我是对的,这些红色加号有什么功能?如果我错了,我一定是没有理解到什么。 顺便说一下,在你的帖子#14109 中,在黄线中,在+DoubleToString(LoY[r],4) 之前只有一个这样的红色加号。但我没有看到它之后。 谢谢你的帮助。 ANDREY 2021.03.13 21:00 #14147 Alexey Viktorov:只是不清楚编译是如何进行的,没有错误,不清楚... 当我看到编译器指出str是未定义的 时候,我自己在用户函数的正文中初始化了str。但我忘了告诉你这件事。 然后我从用户函数的各处删除了str,并在用户函数的最后一行把eStr 放在括号里而不是str。 Tretyakov Rostyslav 2021.03.13 21:25 #14148 Maxim Kuznetsov:如果你以前没有用C#、Delphi和类似的语言写过东西,那是没有用的......Windows的创建和其他地方一样,但首先你必须学会如何 "到处 "做。首先是C#的短期课程,WinForms(例如)。互联网上应该有一堆这样的人。这有点超出了论坛的范围。 那么这个表格是可以创建的。 我更感兴趣的是我的窗口和专家顾问之间的数据交换应该如何进行。 Aleksei Stepanenko 2021.03.13 22:21 #14149 void PrintArray(double &eArray[]) { string eStr=""; int eSize=ArraySize(eArray); for(int i=0; i<eSize; i++) { eStr+=string(i)+": "+DoubleToString(eArray[i],4)+", "; } Print(eStr); } ANDREY 2021.03.14 02:16 #14150 Aleksei Stepanenko: void PrintArray(double &eArray[]) { string eStr=""; int eSize=ArraySize(eArray); for(int i=0; i<eSize; i++) { eStr+=string(i)+": "+DoubleToString(eArray[i],4)+", "; } Print(eStr); } 谢谢你的澄清。 顺便说一下,我去掉了黄色加号,编译器出现了错误。所以他们在这整个建设中发挥了一些作用。但是....,我还是不明白。当只通过使用蓝色加号来进行字符串加法 时,需要它们做什么。从你的解释来看,如果我没弄错的话,这个建筑中没有其他东西.....。 而关于字符串(i)...关于类型转换 ....对我来说,这或多或少是清楚的。不清楚的是,.....string是一个变量类型的名称。i是一个计数器变量,表示一个数组元素的索引。 还有,为什么i在括号里()? 到目前为止,我一直认为括号是一种函数特性。例如,Print( )。在一些函数中,不同的数据被放在小括号里。 但是小括号是什么意思,或者小括号对i和整个结构--string(i)有什么作用?乍一看,似乎之前i 变量的类型是int(整数),然后你把i变量的类型从int改为string(字符串) 。 但包含我 的圆括号并没有让我这么想。 谢谢你的解释。 1...140814091410141114121413141414151416141714181419142014211422...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我添加了方括号 void PrintArray(double &eArray[]) 编译器没有显示任何错误或警告。
BUT.....,Print() 函数由于某种原因没有打印出一次。
我理解你的懒惰,因为我自己就是这样。如果你不是太懒,我的热情取代了它,如果你告诉我自定义函数还有什么问题,我将非常感激。
谢谢你的帮助,很抱歉给你带来麻烦。
也许阵列是空的?通过改变一下函数来检查它
如果打印结果为0,则寻找阵列填充的问题。我发现了一个错误。在最后的Print(str);行中,你传递了str 而不是estr。 我把它修好了,一切都很好。
感谢你,我现在不仅在大纲上,而且在细节上掌握了这个主题。唯一没有回答的问题是关于我第1442号 帖子中的加分项
谢谢你的帮助和支持。
在论坛上和出版物中,关于C#、Delphi和其他所有的东西......。
我发现了一个错误。在最后的Print(str);行中, 你传递了 str 而不是estr。 我把它修好了,一切都很好。
感谢你,我现在不仅在大纲上,而且在细节上掌握了这个主题。唯一未回答的问题是 关于我第1442号 帖子中的加分项
谢谢你的帮助和支持。
不是我传的。
关于交易、自动交易系统和测试交易策略的论坛
新手对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论
Aleksei Stepanenko, 2021.03.13 09:04
你可能想打印一个数组,或者做一个单独的函数来打印一个数组。
并从任何地方调用它
我只是没有注意到这一点。我只是不明白编译怎么会没有错误......
如果你已经想通了,并写出了整个序列,那么答案是什么?
我想我终于想明白了(我是一个有点迟钝的人) ......
在第一次迭代中,字符串变量str是空的。字符=+告诉str将自己赋值为空(没有值),并在自己的空处添加一个带值的字符串,即"--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+", ";。这个字符串的值是 " --LoY[0]--, --1.6104-- "。在这些操作之后,str在第一次迭代时得到的数值 是 "--LoY[0]--, --1.6104-- "。按照我对你的术语的理解,这被称为第一要素。
在第二次迭代时,str已经有了第一个元素,其值为" --LoY[0]--, --1。6104-- " 字符=+指示str 将第一个元素的值 分配给自己,并将其分配给本身带有第一个元素的值,添加一个带有其他值的字符串,即"--LoY["+"+IntegerToString(r)+"]--,"+DoubleToString(LoY[r],4)+",";。这个字符串的值已经是 " --LoY[1]--, --1.6105--"。经过这些操作,str在第二次迭代时得到的数值 是"--LoY[0]-- --1.6104----LoY[1]-- --1.6105--" 。也就是说,str已经有了第二个元素,在第三十次迭代时,str将包含30个元素,数组元素的值各不相同。
循环结束后,有30个项目的字符串变量str将在循环外打印一次。
我花了很长时间才弄明白这个算法,因为当你说到加法时,我只注意了红色的加号"--LoY["+IntegerToString(r)+"]--,"+DoubleToString(LoY[r],4)+",没有注意str+=。
所以对我来说,那些红色的加号"--LoY["+IntegerToString(r)+"]--,"+DoubleToString(LoY[r],4)+" 在这个算法中起什么作用还是个谜。
谢谢你的帮助。
我从来没有做过,可以为 "傻瓜 "提供一些链接吗?
如果你以前没有用C#、Delphi和类似的语言写过东西,那是没有用的......Windows的创建和其他地方一样,但首先你必须学会如何 "到处 "做。
首先是C#的短期课程,WinForms(例如)。互联网上应该有一堆这样的人。这有点超出了本论坛的范围。
阿列克谢-维克多罗夫 。
如果一切都写得正确的话,那又是多么神秘的事情啊我很久没有理解这个算法,因为当你说到 加法 时,我只注意到红色的 加号"--LoY["+IntegerToString(r)+"]--,"+DoubleToString(LoY[r],4)+",但没有注意到str+=。
这就是为什么我仍然想知道这些红色加号"--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+" 在这个算法中起到什么作用。
从我描述的方式中可以清楚地看出,我的理解是,在每个迭代中,字符串的连接发生在一个地方,并且 与str+= 赋值操作一起发生一次
也就是说,使用符号+,字符串变量str中的一个元素的值与同一字符串变量str的另一个元素的值连接(加号)
。我还是不明白这些 红色的+ 表示什么str+="--LoY["+IntegerToString(r)+"]--,"+DoubleToString(LoY[r],4)+"," ;。在我看来,没有对这些红色pluses之间的数值进行求和操作.....。如果我是对的,这些红色加号有什么功能?如果我错了,我一定是没有理解到什么。
顺便说一下,在你的帖子#14109 中,在黄线中,在+DoubleToString(LoY[r],4) 之前只有一个这样的红色加号。但我没有看到它之后。
谢谢你的帮助。
只是不清楚编译是如何进行的,没有错误,不清楚...
当我看到编译器指出str是未定义的 时候,我自己在用户函数的正文中初始化了str。但我忘了告诉你这件事。
然后我从用户函数的各处删除了str,并在用户函数的最后一行把eStr 放在括号里而不是str。
如果你以前没有用C#、Delphi和类似的语言写过东西,那是没有用的......Windows的创建和其他地方一样,但首先你必须学会如何 "到处 "做。
首先是C#的短期课程,WinForms(例如)。互联网上应该有一堆这样的人。这有点超出了论坛的范围。
那么这个表格是可以创建的。
我更感兴趣的是我的窗口和专家顾问之间的数据交换应该如何进行。
Aleksei Stepanenko:
谢谢你的澄清。
顺便说一下,我去掉了黄色加号,编译器出现了错误。所以他们在这整个建设中发挥了一些作用。但是....,我还是不明白。当只通过使用蓝色加号来进行字符串加法 时,需要它们做什么。从你的解释来看,如果我没弄错的话,这个建筑中没有其他东西.....。
而关于字符串(i)...关于类型转换 ....对我来说,这或多或少是清楚的。不清楚的是,.....string是一个变量类型的名称。i是一个计数器变量,表示一个数组元素的索引。 还有,为什么i在括号里()? 到目前为止,我一直认为括号是一种函数特性。例如,Print( )。在一些函数中,不同的数据被放在小括号里。 但是小括号是什么意思,或者小括号对i和整个结构--string(i)有什么作用?乍一看,似乎之前i 变量的类型是int(整数),然后你把i变量的类型从int改为string(字符串) 。 但包含我 的圆括号并没有让我这么想。
谢谢你的解释。