测试版530中的阵列大小调整问题 - 页 5

 
angevoyageur:

如果你想测试,并避免其他终端的更新,你必须删除以下文件夹。

  • Windows 7 : C:\ ProgramData (程序数据) (MetaQuotes (WebInstal)在更新成功后,测试终端对其他终端不更新。
  • Windows XP:C: (Documents and Settings) (All Users) (Application Data) (MetaQuotes) (Webinstall)。

这个信息(可能来自俄罗斯论坛)已经不再是最新的了。从v534开始,Win7+上的更新被放入%appdata%\metaquotes\webinstall,而不是%programdata%\metaquotes\webinstall。

在随后的版本中可能会再次改变。

 
cyclops993:

这个信息(可能来自俄罗斯论坛)已经不再是最新的了。从v534开始,Win7+上的更新被放入%appdata%/metaquotes/webinstall,而不是%programdata%/metaquotes/webinstall。

在随后的版本中可能会再次改变。

谢谢你。
 
angevoyageur:

我可能不是一个好例子,因为我是一个专业的程序员。所以对我来说,这不是一个巨大的努力,而且我喜欢学习新的编程语言。我对OOP也有一些经验。

.. . . .

在大多数情况下,我同意你所写的,我不是一个软件工程师,但我对mql5有一些涉猎,在我写的代码中不需要使用任何OOP ... ...但是,我通过阅读和理解别人的代码学到了很多,如果不理解OOP背后的原理,就很难遵循一些mql5的代码。
 
RaptorUK: 在大多数情况下,我同意你所写的,我不是一个软件工程师,但我对mql5有一些涉猎,在我写的代码中不需要使用任何OOP ...但是,我通过阅读和理解其他人的代码学到了很多东西,如果不理解OOP背后的原理,可能很难遵循一些mql5的代码。

我认为,OOP包括相信封装、抽象、继承和多态性。我认为你不应该因为抽象而 "跟随 "别人的代码。你只需要知道它是做什么的 。在一个更严肃的问题上,我相信OOP提供了一个组织/目录的水平,它被语言和IDE强制执行和支持。一个程序员不能有太多的组织,这可能最终会节省大多数程序员在未来项目 中的时间。

 

谢谢你的回答,Angelvoyager,这是一个熟悉硬币两面的人的好见解,我和Raptor在同一条船上,op的概念已经开始引起我的兴趣,我想了解更多关于它的信息,很高兴知道即使有mql5的功能,继续使用mql4也不是完全必要的,但我仍然想了解根据op概念和原则进行编码的优势是什么,它们在编码一个小项目 如EA中的应用如何?

 

当我编写一个EA的代码时,它通常最终与书中的类似,一个中央枢纽函数 积累事物的当前状态,并将这些信息存储在全局数组中,周围的外围函数使用这些相同的数组中的信息来决定做什么,它们每个都调用其他辅助函数来计算诸如手数等的东西。start()函数只是先调用中心枢纽函数,然后按优先级顺序调用外围函数。这个基本结构运行得很好,尽管我一直不喜欢整个事情以全局访问这些数组为中心的事实,但我并没有喜欢到要寻找不同的方法来实现它。换句话说,它工作得很好,所以我没有尝试去修复它,笑。

我想知道OOP的方法与此有什么不同,它的优点是什么。

 
SDC: 当我编写一个EA的代码时,它通常最终与书中的类似,一个中央枢纽函数积累事物的当前状态,并将这些信息存储在全局数组中,周围的外围函数使用这些相同数组中的信息来决定做什么,每个函数都调用其他辅助函数来计算诸如手数等。start()函数只是先调用中心枢纽函数,然后按优先级顺序调用外围函数。这个基本结构运行得很好,尽管我一直不喜欢整个事情以全局访问这些数组为中心的事实,但我并没有喜欢到要寻找不同的方法来实现它。换句话说,它工作得很好,所以我没有尝试去修复它,笑。

我想知道op的方法与此有什么不同,它的优点是什么。

我相信你描述的是一个程序流程。我不认为这就是OOP背后的大思想。(我认为)OOP试图解决以下问题。我是一个OOP的初学者,但我正在形成我的世界观。

1) 你的函数 是独立于全局变量的吗?换句话说,你的函数是独立的对象吗?封闭性

2) 你的函数是否隐藏了像局部变量名这样的细节?它是否简化了屏幕上的代码量?抽象性

3) 它是否有能力创建自己的复制件来进行修改?比如创建自己的数据类型的能力?继承性。

4)它是否有能力在运行中改变?例如:该函数能否处理integer_array以及double_arrays?多态性。

OOP帮助建立EA的方法类似于EA Builder帮助非编程人员建立专家顾问的方法。你只需抓住你最喜欢的订单会计功能 -> 数据功能 -> 事件跟踪功能 -> 成交量定义功能 -> 交易标准定义功能 -> 交易功能 -> 错误处理功能。然后,你就有了一个专家顾问。你多年来开发的所有交易标准定义功能都可以很容易地被调换进来或调换出去。

以我为例,如果你想修改我的专家顾问,你需要研究我的全局变量在哪里被应用,以及其他什么功能依赖于它(如你的状态或状态数组)。OOP使它变得像Accounting(Option_3); Display(Option_1); Caption(Option_5); TradingSys(Option_7); VolumeSize(Option2); OrderType(Option_2)一样简单,这就是整个专家。

这使得别人更容易使用你的库,而且通常对别人有用的东西在未来的某个时候也对你有用。如果不出意外的话,就把独立的对象放在流水线上 :)

 
***Ps:(我不想忘记这一点)。当然,我们大多数人都不喜欢不知道我们正在使用的代码中的内容。或者,我们会沉迷于试图理解别人的代码,否则我们可能不会使用它。然而,从我们的角度来看,mql4中的大多数本地函数(例如OrderSend())都是对象。我们看不到他们的代码,但是我们接受它。我相信这种对其他库的接受是一个从事大型项目的专业oop_programmer必须接受和建立的。否则,你就只能重新创造车轮了。
 

我的最新版本的EA正接近于此,现在都是include文件,但它们还不够强大,至少要经过一些修改才能开箱即用。我经常犯的错误是,直到事后我才发现自己把特定标准的代码写进了应该是模糊的函数 中,而且它们确实太依赖冰川数组了,当我有时间时,我打算使用更多的本地数组和更多的参数传递来弥补较少的全局访问。

 
ubzen:
***Ps:(我不想忘记这一点)。当然,我们大多数人都不喜欢不知道我们正在使用的代码中的内容。或者,我们会沉迷于试图理解别人的代码,否则我们可能不会使用它。然而,从我们的角度来看,mql4中的大多数本地函数(例如OrderSend())都是对象。我们看不到他们的代码,但是我们接受它。我相信这种对其他库的接受是一个从事大型项目的专业oop_programmer必须接受和建立的。否则,你就只能重新创造车轮了。
这是有区别的......。 如果我想下订单,我没有任何选择,只能使用OrderSend() ...... 我确实可以选择是否使用别人的库 ......即使是在尊重源码的情况下,我仍然会在尝试使用它之前尝试理解它,这就是发现和修复一些错误的方法 https://www.mql5.com/en/forum/133792/page3 "而我对 RaptorUK的 评论的纠正 "