任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 264 1...257258259260261262263264265266267268269270271...1178 新评论 Mikhail Kozhemyako 2013.11.20 06:06 #2631 但似乎就是这样的。如果数组的大小 没有预先设定,那么肯定需要ArrayResize。而在ArrayResize(array,0)的最后;是的,这很正确,从未想过...........Uchtu.......。谢谢)))) Mikhail Kozhemyako 2013.11.20 06:14 #2632 你不能在每个tick!!!!!!!,做ArrayResize。否则,你会在计算中陷入困境...................。而且没有多核处理器可以拯救你........ vlad-755 2013.11.20 06:33 #2633 发表于11.11.2013 07:54的文章 "ShowCandleSize "不能正确显示,也不能被编辑,原因不明。 11月15日就这个问题联系了支持部门,网址是noreply@metaquotes.net,但没有收到答复。 你能告诉我这种问题的正确地址吗? 注意到。 -- 弗拉迪斯拉夫-舒尔金。 在2013年11月20日。 Leo59 2013.11.20 06:46 #2634 artmedia70: 所有关闭的交易结果都可以在账户历史中查看。通过软件。有必要一直用它们塞满一个阵列吗?可能有很多人。最好是限制必要的历史深度,如果你真的离不开它,就把它填进阵列。 谢谢你的澄清! "所有关闭的交易结果都可以在账户历史中查看。通过软件。" - 如何? Alexey Subbotin 2013.11.20 07:01 #2635 VladislavVG: 在程序终止时,动态分配的内存必须被释放,以避免内存泄漏。我不知道MKL的开发者是否遵循这一点 它们是这样的,这就是为什么数组是静态的,把它们收集在一个地方,以后再释放。如果只是为了自我保证的话,在程序的最后ArrayResize(a,0)并没有什么意义。 Alexey Subbotin 2013.11.20 07:02 #2636 Leo59: 谢谢你的澄清!"所有关闭的交易结果都可以在账户历史中查看。程序化。" - 如何? OrderSelect(ticket,SELECT_BY_TICKET,MODE_HISTORY) 或 OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) Leo59 2013.11.20 07:41 #2637 alsu:OrderSelect(ticket,SELECT_BY_TICKET,MODE_HISTORY)或OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) 谢谢你! 科瓦列夫的教程有什么好处?我认为这很好,因为你学会了如何用简单的程序代码例子来解决简单的问题。 实际上,我是从Vladislav Goshkov的指标代码开始学习编程的。我用De-Mark的支持和阻力线画了那个指标。有以下几行: ObjectMove(buff_str, 1, UpBT[0], UpP[0]); ObjectMove(buff_str, 0, UpBT[1], UpP[1]); 我把它放在了。在测试器中看了一下,看到它是如何工作的。它通过分形画出射线,但它看的是过去而不是未来......))))。我开始问问题,结果成功了!尊重Vladislav!!!! 我后来看到了科瓦列夫的教科书。我希望有更多的问题能以这种形式回答。 还有一件事。 "你想写你自己的专家,但你不知道从哪里开始?随着Rosh的文章出现在Alpari网站上,创建专家的第一步可以变得简单和无痛。 Rosh以简单易懂的方式描述了每个EA作家所经历的步骤。编程的许多细微差别,其知识来源于长期的经验,现在每个人都可以获得。 一步一步地,从最基本的开始,你将学习错综复杂的外汇编程。" 也许你知道在哪个链接可以读到这篇文章的概述? Leo59 2013.11.20 07:42 #2638 VladislavVG: 因为准确地说,它不是一个数组。如果你想了解更多的细节--请看对C的描述。我指的是它,因为开发人员从一开始就说,对一切不清楚或不完整的内容--请看标准C。 当你声明变量double buffer[] 时,你为一个变量分配了内存,这个变量在C语言中被称为 "指针",具有整数类型,并存储内存单元的地址,阵列将从这里开始。如果你在MCL中检查变量的维度,你会得到0的值。这意味着数组本身没有被分配内存,当你试图分配一个值时,没有地方可以写:在MCL中没有地址运算,也不能处理指针。在C语言中,你可以写,但用 "未分配 "的内存,通常会导致系统崩溃。当你应用AreiResize(array,N),(N>0)时,这将为数组分配内存(至少一个元素)并为写值创造空间。然后,当检查时,数组的尺寸将与0不同。 就C语言而言,静态数组的概念有几种含义。 1.静态数组(以及静态变量/类型)是这样的变量/数组,其尺寸在编译阶段(MKL4的预编译)就已经知道。例如,当描述double buff[10000];时,编译器被告知变量的大小,并可以立即分配内存。与这个概念相比,还有一个 "动态数组 "的概念,即这样的数组,其大小在编译时是未知的,只有在运行时才会知道;这些都是可变大小的数组。当访问这种数组时,必须事先分配内存。内存是在静态程序内存之外分配的。 在C/C++中,如果一个数组被描述在一个块中,那么它的可见性就会受到该块的限制--无论是静态数组还是动态数组。程序中的错误如 "内存泄漏 "与本地定义的动态数组有关,即当一个内存指针因为离开可见区而被破坏,但分配给它的内存仍然被占用。 2 "静态 "数组的概念是用静态修饰符描述的变量--这种变量在离开块的范围时不会被销毁--它们位于一个单独的内存区域--因此它们的值被保留下来。内存泄漏的风险降低了。在p.1的意义上声明为动态的数组(即在编译阶段不知道数组的大小),在p.2的意义上也可以是静态的,即用修饰词 "static "声明。 当终止程序时,动态分配的内存必须被释放,以避免内存泄漏。我不知道MKL的开发者是否遵循这一点,但在我的程序中,我总是释放内存--来自C语言的习惯--ArreyResize(array,0)。 在MKL中,所有的数组在第2点的意义上是静态的。 现在关于你的问题。"为什么静态数组double buffer[]; 不能被赋值?"。因为没有为它分配内存(事实上,它是一个带有静态修改器的动态数组)。在赋值之前,应该分配内存,也就是说,应该对这个数组应用大小大于0的ArrayResize。对于数组,你需要控制内存超限(在数组之外)。 SZ 我希望我已经说得很清楚了。我试图让它尽可能地简单。 "你不能失去你的工匠精神"! 谢谢你!!!!!!!! Sergey Dzyublik 2013.11.20 07:49 #2639 VladislavVG: 因为准确地说,它不是一个数组。如果你想了解更多的细节,请看C语言的描述。 我之所以提到它,是因为开发人员从一开始就说,有什么不清楚或不完整的地方,请看C标准。 ........ 非常感谢你。醒来时眼睛卡住了,但很高兴读完了,再次感谢。 Alexey Subbotin 2013.11.20 07:53 #2640 Leo59: 你是否知道可以在哪里读到这篇评论文章的链接? https://www.mql5.com/ru/articles/mt4 啊,不,它再也打不开了(((。 1...257258259260261262263264265266267268269270271...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
11月15日就这个问题联系了支持部门,网址是noreply@metaquotes.net,但没有收到答复。
你能告诉我这种问题的正确地址吗?
注意到。
--
弗拉迪斯拉夫-舒尔金。
在2013年11月20日。
所有关闭的交易结果都可以在账户历史中查看。通过软件。有必要一直用它们塞满一个阵列吗?可能有很多人。最好是限制必要的历史深度,如果你真的离不开它,就把它填进阵列。
"所有关闭的交易结果都可以在账户历史中查看。通过软件。" - 如何?
在程序终止时,动态分配的内存必须被释放,以避免内存泄漏。我不知道MKL的开发者是否遵循这一点
它们是这样的,这就是为什么数组是静态的,把它们收集在一个地方,以后再释放。如果只是为了自我保证的话,在程序的最后ArrayResize(a,0)并没有什么意义。
谢谢你的澄清!"所有关闭的交易结果都可以在账户历史中查看。程序化。" - 如何?
OrderSelect(ticket,SELECT_BY_TICKET,MODE_HISTORY)
或
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
OrderSelect(ticket,SELECT_BY_TICKET,MODE_HISTORY)
或
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
谢谢你!
科瓦列夫的教程有什么好处?我认为这很好,因为你学会了如何用简单的程序代码例子来解决简单的问题。
实际上,我是从Vladislav Goshkov的指标代码开始学习编程的。我用De-Mark的支持和阻力线画了那个指标。有以下几行:ObjectMove(buff_str, 1, UpBT[0], UpP[0]);
ObjectMove(buff_str, 0, UpBT[1], UpP[1]);
我把它放在了。在测试器中看了一下,看到它是如何工作的。它通过分形画出射线,但它看的是过去而不是未来......))))。我开始问问题,结果成功了!尊重Vladislav!!!!
我后来看到了科瓦列夫的教科书。我希望有更多的问题能以这种形式回答。
还有一件事。
"你想写你自己的专家,但你不知道从哪里开始?随着Rosh的文章出现在Alpari网站上,创建专家的第一步可以变得简单和无痛。
Rosh以简单易懂的方式描述了每个EA作家所经历的步骤。编程的许多细微差别,其知识来源于长期的经验,现在每个人都可以获得。
一步一步地,从最基本的开始,你将学习错综复杂的外汇编程。"
也许你知道在哪个链接可以读到这篇文章的概述?
因为准确地说,它不是一个数组。如果你想了解更多的细节--请看对C的描述。我指的是它,因为开发人员从一开始就说,对一切不清楚或不完整的内容--请看标准C。
当你声明变量double buffer[] 时,你为一个变量分配了内存,这个变量在C语言中被称为 "指针",具有整数类型,并存储内存单元的地址,阵列将从这里开始。如果你在MCL中检查变量的维度,你会得到0的值。这意味着数组本身没有被分配内存,当你试图分配一个值时,没有地方可以写:在MCL中没有地址运算,也不能处理指针。在C语言中,你可以写,但用 "未分配 "的内存,通常会导致系统崩溃。当你应用AreiResize(array,N),(N>0)时,这将为数组分配内存(至少一个元素)并为写值创造空间。然后,当检查时,数组的尺寸将与0不同。
就C语言而言,静态数组的概念有几种含义。
1.静态数组(以及静态变量/类型)是这样的变量/数组,其尺寸在编译阶段(MKL4的预编译)就已经知道。例如,当描述double buff[10000];时,编译器被告知变量的大小,并可以立即分配内存。与这个概念相比,还有一个 "动态数组 "的概念,即这样的数组,其大小在编译时是未知的,只有在运行时才会知道;这些都是可变大小的数组。当访问这种数组时,必须事先分配内存。内存是在静态程序内存之外分配的。
在C/C++中,如果一个数组被描述在一个块中,那么它的可见性就会受到该块的限制--无论是静态数组还是动态数组。程序中的错误如 "内存泄漏 "与本地定义的动态数组有关,即当一个内存指针因为离开可见区而被破坏,但分配给它的内存仍然被占用。
2 "静态 "数组的概念是用静态修饰符描述的变量--这种变量在离开块的范围时不会被销毁--它们位于一个单独的内存区域--因此它们的值被保留下来。内存泄漏的风险降低了。在p.1的意义上声明为动态的数组(即在编译阶段不知道数组的大小),在p.2的意义上也可以是静态的,即用修饰词 "static "声明。
当终止程序时,动态分配的内存必须被释放,以避免内存泄漏。我不知道MKL的开发者是否遵循这一点,但在我的程序中,我总是释放内存--来自C语言的习惯--ArreyResize(array,0)。
在MKL中,所有的数组在第2点的意义上是静态的。
现在关于你的问题。"为什么静态数组double buffer[]; 不能被赋值?"。因为没有为它分配内存(事实上,它是一个带有静态修改器的动态数组)。在赋值之前,应该分配内存,也就是说,应该对这个数组应用大小大于0的ArrayResize。对于数组,你需要控制内存超限(在数组之外)。
SZ 我希望我已经说得很清楚了。我试图让它尽可能地简单。
谢谢你!!!!!!!!
因为准确地说,它不是一个数组。如果你想了解更多的细节,请看C语言的描述。 我之所以提到它,是因为开发人员从一开始就说,有什么不清楚或不完整的地方,请看C标准。
........
你是否知道可以在哪里读到这篇评论文章的链接?
https://www.mql5.com/ru/articles/mt4
啊,不,它再也打不开了(((。