OOP与程序化编程 - 页 5

 
Petros Shatakhtsyan:

这里有一个简单的任务(如果要详细解释,需要花很多笔墨)。

一切都发生在OnTick()中。假设,我们检查了一些条件并开了一个订单。条件并不重要,让我们假设,它是某个最大或最小值。

机器人自然而然地站在一些图表上,获得这个符号的报价。很明显,我们不仅有OnTick一个函数,还有其他函数:OnTrade、OnTimer、自定义函数等等。

因此,所有被共享的变量必须在代码开始时在这些函数之外声明。例如,如符号名称、卖出价、买入价、价差、报价的位数等。将会有几十个人。

这个机器人将只在一个符号上进行交易,即它所处的位置。让我们假设有20个这样的图表,我们将在所有图表上安装同一个机器人,同时对所有20个货币对进行交易。

但这并不是一个多货币交易机器人,正如市场上一些交易者所指出的那样。


在这里,我们需要把它变成一个多货币的机器人。也就是说,我们把它放在任何图表上(只放在1个图表上),它就会为20个配对打开交易。因此,我们在测试器中以单一模式启动它,它将与市场观察中的那些货币对进行交易。

下面是你如何在没有OOP的情况下实现它。你会把所有的普通变量转化为20个元素的数组吗?

那么对于所有的对子来说,将同时被调用的函数呢?

你不能没有OOP。:)


P.S. 我想指出,我没有接受过俄罗斯教育,这就是为什么我写得很长,没有时间读几页。

要创建一个多货币引擎,你必须首先编写一个多货币引擎,而不是重新设计一个为一个货币对定制的机器人。

创建多货币引擎的方法不需要使用OOP。我们可以写一个代码块,从所有的货币对中获取点数,并在所有地方应用相同的分析和下单功能。订单函数本身将包含变量,其值将根据配对情况而变化。这些值将由接收ticks的块改变。

 
Ре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,也就是说,没有什么不必要的。

 
Dmitry Fedoseev:

这里更相关的问题不是 "如何 "而是 "为什么"?为什么要对终端已经实现的东西进行编码呢--只要打开所需数量的图表,并将EA归入其中即可。此外,对于不同的符号和时间框架,参数必须是不同的。


在终端没有实施任何措施。首先,只有一个图表被打开,而不是20个;其次,在测试器中,你将无法同时测试许多货币对,考虑到所有未结头寸

不要告诉我有 "在MarketWatch中选择所有符号 "模式。

 

一个不理解 "对象 "概念如何描述的程序员可以被认为是一个业余的程序员,不知道现代编程的艺术。

 
Dmitry Fedoseev:

例如,100个尾随止损变体需要塞进一个专家顾问。当程序化编程时,你会得到这样的混乱。

100个相同的代码片段。当程序运行时,只有一个尾随止损点会被启用,其余的99个ifs只是消耗资源。

现在说说OOP的变体。在专家顾问的初始化过程中,我们根据轨迹的数量来扩展带有指针的数组,我们只为包含的轨迹创建对象。因此,下面的代码将一直工作。

如果启用了一个尾巴,那么cnt=1,也就是说,没有任何多余的东西。

这是一个非常、非常奇怪的方法来解决一般情况下的尾随者的任务。不应该有这样的任务--100种不同类型的尾随止损,每种都有不同的功能。

你需要在一个或多个公式中压缩这些类型,使之成为一个共同的尾随止损函数。这 就是全部。当然,你将不得不用灰色物质工作,但OOP与此无关......

 
Реter Konow:

对整个追踪止损问题采取了非常、非常奇怪的做法。不应该有100种不同类型的跟踪止损,而且每一种都有不同的功能。

这些类型需要压缩成一个或几个公式,以及一个共同的尾部函数。这 就是全部。当然,你将不得不与灰色物质打交道,但这与OOP没有关系......


假设MA的追踪止损,而且有几十个。

而且当你可以轻松生活时,为什么要压缩一些东西呢?
 
Dmitry Fedoseev:

我们假设跟踪MAs,有几十种。

而当你可以轻松地生活时,为什么要压缩一些东西呢?


事实证明,你赞成OOP的论点的本质是基于促进一个固有的荒谬的决定。这是个值得怀疑的论点...


为什么有几十个不同的尾随函数?对于一个严肃的OOP程序员来说,写一个通用的很难吗?

 
Реter Konow:


事实证明,你赞成OOP的论点的本质是基于促进一个固有的荒谬的解决方案。值得怀疑的说法...

为什么突然变得荒谬了呢?

只是,使用100个 "如果 "会有多荒唐呢?

 
Dmitry Fedoseev:

为什么突然变得荒谬了呢?

如果使用100个iffos,那就太可笑了。

你不需要使用100个iffos。你需要更有效地解决问题,做一个函数,对不同的参数进行尾部调整。
 
Реter Konow:
你不需要使用100个ifofs。你需要更有效地解决这个任务,做一个适应不同参数的带尾巴的函数。

那你打算如何使追踪止损适应不同的参数?仍然会有一些算法的分支,在某些参数组合下永远不会被执行。