OOP与程序化编程 - 页 5 123456789101112...48 新评论 Реter Konow 2017.08.11 20:37 #41 Petros Shatakhtsyan: 这里有一个简单的任务(如果要详细解释,需要花很多笔墨)。一切都发生在OnTick()中。假设,我们检查了一些条件并开了一个订单。条件并不重要,让我们假设,它是某个最大或最小值。机器人自然而然地站在一些图表上,获得这个符号的报价。很明显,我们不仅有OnTick一个函数,还有其他函数:OnTrade、OnTimer、自定义函数等等。因此,所有被共享的变量必须在代码开始时在这些函数之外声明。例如,如符号名称、卖出价、买入价、价差、报价的位数等。将会有几十个人。这个机器人将只在一个符号上进行交易,即它所处的位置。让我们假设有20个这样的图表,我们将在所有图表上安装同一个机器人,同时对所有20个货币对进行交易。但这并不是一个多货币交易机器人,正如市场上一些交易者所指出的那样。在这里,我们需要把它变成一个多货币的机器人。也就是说,我们把它放在任何图表上(只放在1个图表上),它就会为20个配对打开交易。因此,我们在测试器中以单一模式启动它,它将与市场观察中的那些货币对进行交易。下面是你如何在没有OOP的情况下实现它。你会把所有的普通变量转化为20个元素的数组吗? 那么对于所有的对子来说,将同时被调用的函数呢?你不能没有OOP。:)P.S. 我想指出,我没有接受过俄罗斯教育,这就是为什么我写得很长,没有时间读几页。要创建一个多货币引擎,你必须首先编写一个多货币引擎,而不是重新设计一个为一个货币对定制的机器人。 创建多货币引擎的方法不需要使用OOP。我们可以写一个代码块,从所有的货币对中获取点数,并在所有地方应用相同的分析和下单功能。订单函数本身将包含变量,其值将根据配对情况而变化。这些值将由接收ticks的块改变。 Dmitry Fedoseev 2017.08.11 20:43 #42 Реter Konow: 最好能引出一项具体的任务。这个描述不是很清楚。在我的实践中,当外部参数改变时,算法不会改变。对于这些参数的任何数值,它都是事先通用的。因此,你的意思并不十分清楚。用一个具体的例子来描述它。例如,100个尾随止损变体需要塞进一个专家顾问。当程序化编程时,你会得到这样的混乱。if(Trailing_01_ON){ Trailing1(); } if(Trailing_02_ON){ Trailing2(); } ... ... ... if(Trailing_99_ON){ Trailing99(); }100个相同的代码片段。当程序运行时,只有一个尾随止损点会被启用,其余的99个ifs只是消耗资源。现在说说OOP的变体。在专家顾问的初始化过程中,我们根据尾部柱子的数量,用指针缩放数组,只为启用的尾部柱子创建对象。因此,下面的代码将一直工作。for(int i=0;i<cnt;i++){ p[i].Main(); } 如果启用了一个跟踪止损,那么cnt=1,也就是说,没有什么不必要的。 Petros Shatakhtsyan 2017.08.11 20:44 #43 Dmitry Fedoseev:这里更相关的问题不是 "如何 "而是 "为什么"?为什么要对终端已经实现的东西进行编码呢--只要打开所需数量的图表,并将EA归入其中即可。此外,对于不同的符号和时间框架,参数必须是不同的。在终端没有实施任何措施。首先,只有一个图表被打开,而不是20个;其次,在测试器中,你将无法同时测试许多货币对,考虑到所有未结头寸。不要告诉我有 "在MarketWatch中选择所有符号 "模式。 Petros Shatakhtsyan 2017.08.11 20:50 #44 一个不理解 "对象 "概念如何描述的程序员可以被认为是一个业余的程序员,不知道现代编程的艺术。 Реter Konow 2017.08.11 20:51 #45 Dmitry Fedoseev: 例如,100个尾随止损变体需要塞进一个专家顾问。当程序化编程时,你会得到这样的混乱。100个相同的代码片段。当程序运行时,只有一个尾随止损点会被启用,其余的99个ifs只是消耗资源。现在说说OOP的变体。在专家顾问的初始化过程中,我们根据轨迹的数量来扩展带有指针的数组,我们只为包含的轨迹创建对象。因此,下面的代码将一直工作。如果启用了一个尾巴,那么cnt=1,也就是说,没有任何多余的东西。这是一个非常、非常奇怪的方法来解决一般情况下的尾随者的任务。不应该有这样的任务--100种不同类型的尾随止损,每种都有不同的功能。 你需要在一个或多个公式中压缩这些类型,使之成为一个共同的尾随止损函数。这 就是全部。当然,你将不得不用灰色物质工作,但OOP与此无关...... Dmitry Fedoseev 2017.08.11 20:52 #46 Реter Konow:对整个追踪止损问题采取了非常、非常奇怪的做法。不应该有100种不同类型的跟踪止损,而且每一种都有不同的功能。 这些类型需要压缩成一个或几个公式,以及一个共同的尾部函数。这 就是全部。当然,你将不得不与灰色物质打交道,但这与OOP没有关系......假设MA的追踪止损,而且有几十个。 而且当你可以轻松生活时,为什么要压缩一些东西呢? Реter Konow 2017.08.11 20:55 #47 Dmitry Fedoseev: 我们假设跟踪MAs,有几十种。 而当你可以轻松地生活时,为什么要压缩一些东西呢?事实证明,你赞成OOP的论点的本质是基于促进一个固有的荒谬的决定。这是个值得怀疑的论点...为什么有几十个不同的尾随函数?对于一个严肃的OOP程序员来说,写一个通用的很难吗? Dmitry Fedoseev 2017.08.11 20:55 #48 Реter Konow: 事实证明,你赞成OOP的论点的本质是基于促进一个固有的荒谬的解决方案。值得怀疑的说法...为什么突然变得荒谬了呢?只是,使用100个 "如果 "会有多荒唐呢? Реter Konow 2017.08.11 20:57 #49 Dmitry Fedoseev: 为什么突然变得荒谬了呢?如果使用100个iffos,那就太可笑了。 你不需要使用100个iffos。你需要更有效地解决问题,做一个函数,对不同的参数进行尾部调整。 Dmitry Fedoseev 2017.08.11 21:00 #50 Реter Konow: 你不需要使用100个ifofs。你需要更有效地解决这个任务,做一个适应不同参数的带尾巴的函数。那你打算如何使追踪止损适应不同的参数?仍然会有一些算法的分支,在某些参数组合下永远不会被执行。 123456789101112...48 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这里有一个简单的任务(如果要详细解释,需要花很多笔墨)。
一切都发生在OnTick()中。假设,我们检查了一些条件并开了一个订单。条件并不重要,让我们假设,它是某个最大或最小值。
机器人自然而然地站在一些图表上,获得这个符号的报价。很明显,我们不仅有OnTick一个函数,还有其他函数:OnTrade、OnTimer、自定义函数等等。
因此,所有被共享的变量必须在代码开始时在这些函数之外声明。例如,如符号名称、卖出价、买入价、价差、报价的位数等。将会有几十个人。
这个机器人将只在一个符号上进行交易,即它所处的位置。让我们假设有20个这样的图表,我们将在所有图表上安装同一个机器人,同时对所有20个货币对进行交易。
但这并不是一个多货币交易机器人,正如市场上一些交易者所指出的那样。
在这里,我们需要把它变成一个多货币的机器人。也就是说,我们把它放在任何图表上(只放在1个图表上),它就会为20个配对打开交易。因此,我们在测试器中以单一模式启动它,它将与市场观察中的那些货币对进行交易。
下面是你如何在没有OOP的情况下实现它。你会把所有的普通变量转化为20个元素的数组吗?
那么对于所有的对子来说,将同时被调用的函数呢?
你不能没有OOP。:)
P.S. 我想指出,我没有接受过俄罗斯教育,这就是为什么我写得很长,没有时间读几页。
要创建一个多货币引擎,你必须首先编写一个多货币引擎,而不是重新设计一个为一个货币对定制的机器人。
创建多货币引擎的方法不需要使用OOP。我们可以写一个代码块,从所有的货币对中获取点数,并在所有地方应用相同的分析和下单功能。订单函数本身将包含变量,其值将根据配对情况而变化。这些值将由接收ticks的块改变。
最好能引出一项具体的任务。这个描述不是很清楚。在我的实践中,当外部参数改变时,算法不会改变。对于这些参数的任何数值,它都是事先通用的。因此,你的意思并不十分清楚。用一个具体的例子来描述它。
例如,100个尾随止损变体需要塞进一个专家顾问。当程序化编程时,你会得到这样的混乱。
100个相同的代码片段。当程序运行时,只有一个尾随止损点会被启用,其余的99个ifs只是消耗资源。
现在说说OOP的变体。在专家顾问的初始化过程中,我们根据尾部柱子的数量,用指针缩放数组,只为启用的尾部柱子创建对象。因此,下面的代码将一直工作。
如果启用了一个跟踪止损,那么cnt=1,也就是说,没有什么不必要的。
这里更相关的问题不是 "如何 "而是 "为什么"?为什么要对终端已经实现的东西进行编码呢--只要打开所需数量的图表,并将EA归入其中即可。此外,对于不同的符号和时间框架,参数必须是不同的。
在终端没有实施任何措施。首先,只有一个图表被打开,而不是20个;其次,在测试器中,你将无法同时测试许多货币对,考虑到所有未结头寸。
不要告诉我有 "在MarketWatch中选择所有符号 "模式。
一个不理解 "对象 "概念如何描述的程序员可以被认为是一个业余的程序员,不知道现代编程的艺术。
例如,100个尾随止损变体需要塞进一个专家顾问。当程序化编程时,你会得到这样的混乱。
100个相同的代码片段。当程序运行时,只有一个尾随止损点会被启用,其余的99个ifs只是消耗资源。
现在说说OOP的变体。在专家顾问的初始化过程中,我们根据轨迹的数量来扩展带有指针的数组,我们只为包含的轨迹创建对象。因此,下面的代码将一直工作。
如果启用了一个尾巴,那么cnt=1,也就是说,没有任何多余的东西。
这是一个非常、非常奇怪的方法来解决一般情况下的尾随者的任务。不应该有这样的任务--100种不同类型的尾随止损,每种都有不同的功能。
你需要在一个或多个公式中压缩这些类型,使之成为一个共同的尾随止损函数。这 就是全部。当然,你将不得不用灰色物质工作,但OOP与此无关......
对整个追踪止损问题采取了非常、非常奇怪的做法。不应该有100种不同类型的跟踪止损,而且每一种都有不同的功能。
这些类型需要压缩成一个或几个公式,以及一个共同的尾部函数。这 就是全部。当然,你将不得不与灰色物质打交道,但这与OOP没有关系......
假设MA的追踪止损,而且有几十个。
而且当你可以轻松生活时,为什么要压缩一些东西呢?我们假设跟踪MAs,有几十种。
而当你可以轻松地生活时,为什么要压缩一些东西呢?事实证明,你赞成OOP的论点的本质是基于促进一个固有的荒谬的决定。这是个值得怀疑的论点...
为什么有几十个不同的尾随函数?对于一个严肃的OOP程序员来说,写一个通用的很难吗?
事实证明,你赞成OOP的论点的本质是基于促进一个固有的荒谬的解决方案。值得怀疑的说法...为什么突然变得荒谬了呢?
只是,使用100个 "如果 "会有多荒唐呢?
为什么突然变得荒谬了呢?
如果使用100个iffos,那就太可笑了。
你不需要使用100个ifofs。你需要更有效地解决这个任务,做一个适应不同参数的带尾巴的函数。
那你打算如何使追踪止损适应不同的参数?仍然会有一些算法的分支,在某些参数组合下永远不会被执行。