线性减速是编程错误还是MT4的特点? - 页 11

 
Urain:

我很想知道MetaQuotes 是谁,我可以留言吗?


任何一个人。这是我们的会议室轶事。这是其中之一。
 

我快速看了一下代码。莱蒙托夫诗中的一段话立即浮现在脑海中。

Земля тряслась - как наши груди,
马和人混在一起,成了一堆。
千军万马的枪声
掉进了。 和千军万马的嚎叫......

现在回答你的问题。

-Aleks-。

在策略完善的阶段,尤其是战术,你必须订购各种添加物来测试这个想法,在这个阶段,完全可以容忍专家顾问的缓慢性。

但我对与主版EA相比慢了6倍的速度感到惊讶。至少对于分析性数据的收集来说,优化EA的调整 是必要的。

我的理解是否正确,不可能读懂别人的代码,最好是在我们将得到一个成功的EA后再订购另一个版本,但必须从头开始写,只有在这种情况下,我们才能确保高速和可靠?我个人认为,编译器的部分任务是削减重复的操作,例如...

我不是在谈论这个代码,而是在全球范围内。所以你反驳了这个说法?

如果你命令一个以 "人马混杂 "风格写作的程序员--你必须重写不是两次或三次,而是一直重写,而且总是100%重写,因为所有增加的预算。如果你向专业人士订购,改变20%、40%甚至80%的需求,不仅不需要完全重写代码,甚至还需要按相同的比例进行修改。但如果预算是"<50美元",那就别想了。

 
-Aleks-:

我认为应该人为地延迟发送订单给已开立的订单,但不需要等待确认它们已经开立,这样的假设是否正确?

你弄错了。不应存在任何人为的延误。MT5有一个简单的事件模型,应该用它来代替sleep() 的延迟。
 
micle:
当然,专家顾问应该处理任何订单发送错误。在最简单的情况下--显示一个关于不成功打开订单的信息。在更高级的版本中,它将决定进一步的行动。

所以我需要一个EA来代替我,所以进一步的行动是非常有意义的......但不确定它们是否会及时出现(例如,价格已经离计算的进入点很远了)。

sergeev:

没有让它发送。请编码员使用IsTradeContextBusy来检查。

谢谢你的提示,但我在下一个话题中讨论的正是这些细微差别。我怎么会知道这件事呢?

sergeev:

如果你使用509构建,那里有8个线程。 IsTradeContextBusy的情况应该不会发生。

如果是这样,请看上面的观点。

你也可以使用一个以上的终端。

我不明白,终端的数量会影响订单的传递吗? 我的意思是,我们可以为同一个账户启动几个终端,并从每个终端发送订单开仓,如果其中一半的终端砰然倒下,另一半将成功执行订单? 我认为订单必须由DC处理,只有这样才能接受下一个订单...

C-4:

我快速看了一下代码。莱蒙托夫诗中的一段话立即浮现在脑海中。

现在回答你的问题。

如果你命令一个程序员用 "人马混杂 "的风格来写,你就得重写,不是两次或三次,而是一直重写,而且总是100%重写,因为预算不断增加。如果你向专业人士订购,改变20%、40%甚至80%的需求,不仅不需要完全重写代码,甚至还需要按相同的比例进行修改。但如果预算是"<50美元",那就别想了。

现在它花了我100多美元,我知道我将会增加更多的费用。数学计算结果是这样的。

10次修改,价格为30美元,成本为300美元,而10次修改,价格为50美元,成本为500美元。节省200美元这样的费用对我来说意义重大。但当我对它感到满意时,我就可以从头开始订购一个EA(去掉不必要的东西),它的价格大约是80美元。这种方法是合理的,尤其是在开发过程中。除了你要磨掉的神经......。但那是运气好的时候。

C-4:
你搞错了。不应存在任何人为的延误。MT5有一个简单的事件模型,应该用它来代替sleep()延迟。
我说的是MT4,那么你确认我们可以 "轰炸 "经纪公司,该公司将从其 "缓冲区 "处理订单,如果价格走势强劲,则拒绝这些订单?
 
-Aleks-:

谢谢你的提示,但这些是我在下一个主题中讨论的细微差别。我应该如何了解它们?

我不需要进入它们并寻找什么。
如果有人提示应该如何,而你发现你的代码中缺乏这种提示,你最好默默地改变编码者。不要创建分支。

我不明白,终端的数量会影响订单的传递吗? 也就是说,你可以在同一个账户上启动几个终端,然后从每个终端发送订单开仓,如果其中一半的终端被噎住了,另一半的终端会成功执行订单?

终端的数量将等于要发送的线程的数量。10个终端将发送1个订单 - 将有10个订单。

 
-Aleks-:

所以我需要一个EA来代替我,进一步的行动在这里非常有意义......但不确定它们是否会及时出现(例如,价格已经离计算的进入点很远了)。

目前,专家顾问花了我100多美元,我知道我将会增加更多。所以这就是数学。

10次修订,价格为30美元,支出为300美元,而10次修订,价格为50美元,支出为500美元。节省200美元这样的费用对我来说意义重大。但是,当我对它感到满意时,我就可以从头开始订购我的专家顾问(删除不必要的东西),而且要花80美元。这种做法是有道理的,特别是在开发过程中。除了要耗尽你的神经...但这是一个运气问题。

这是你的错误做法。

你为测试人员订购代码,警告优化速度的重要性,对它进行必要的改进。而只有在测试版本准备好之后,你才会订购带有完全测试过的逻辑和所有修改/建议的真实版本。

你将会节省更多的钱。不是吗?

 
sergeev:

你不必去研究它们,找出什么是什么。
如果有人暗示它应该如何,而你发现代码中缺乏它--默默地改变编码者。不要创建分支。

终端的数量--同样是发送线程的倍数。10个终端将发送1个订单 - 将有10个订单。

那么经纪公司呢?毕竟,它是有一个卡住的订单的终端!那么发送众多订单的原因是什么呢?

artmedia70:

这是你方的错误做法。

你为测试者订购代码,通知它速度优化的重要性,并在其中引入必要的改进。而只有在测试版准备好之后,才能订购带有完全调试过的逻辑和所有必要修改/建议的真实版本。

你将会节省更多的钱。不是吗?

好吧,首先,我最初并没有建议测试的速度在很大程度上取决于测试者或真正的实施。

至于其他的,这就是我所做的,测试,提炼......或者你是说,如果我立即写上 "我不是真的,而是测试",价格会少很多倍?

 
-Aleks-:

那么DC呢?毕竟,是他有一个卡住的订单!?那么发送一堆订单有什么意义呢?

如果你不需要一下子发十几个订单,那我就不坚持了。

你可以从一个终端逐一发送,并等待上下文变得空闲,如此循环。

整整一打可能在几分钟内就能送完。

 
sergeev:

不,好吧,如果你一次不需要一打,那我就不坚持了。

你可以从一个终端一次发送一个,等待上下文释放,以此类推。

你可能在几分钟内就能发送一整打。

所以我问,因为我不知道经纪公司是如何处理订单的--是并行的还是顺序的?

 
-Aleks-:

并行还是依次?

竞价是按顺序进行的。但不确定买入会比下一个卖出执行得更快,因为有时还有另一个流动性提供者。

但为了简化世界--总是认为它是串联的。


提供这些信息的唯一原因是为了保持主题。