小额资金管理-指标被新的MQL4毁掉了 - 页 3

 
mar:

angevoyageur,我想你没有看到我发的这个帖子。

mar 2014.04.02 08:16#

你是对的...我无法回避它。 :-)

"我的意思是,我能否等到更新完成后再继续进行SL-计算?问题是我不能给SL一个随机值,因为那样整个指标就没有用了。所以我想检查一下错误4066,如果发生了,我想等一下再检查一下,然后再继续。"

在这里你可以看到,描述了我不能遵循建议,因为我得出了这个解决方案,你也可以看到,我肯定检查了qjol建议我的东西。

不,你没有,qjol写道:

所以你必须检查其中一个变量是否等于0....,以避免零除的情况。

然后你就会报告一个零除法错误。但这是你希望的。

 
mar:

另一个例子。

如果你打开MetaTrader,结果将是零!而且一直是零,直到你改变时间框架或货币对。而且一直是零,直到你改变时间框架或货币对。我认为这正是除以零错误的问题。你不也认为吗?

你是在周末试的吗,当时没有传入的点位?这是我能想到的评论不更新的唯一原因。
 
GumRai:

你是在周末试的吗,当时没有传入蜱虫?这是我能想到的评论不更新的唯一原因。

我也一样。没有虱子就没有更新。
 

没有,我今天试了一下。有许多点进来了,但没有更新AccountBalance。我等了将近一分钟,但账户余额仍然是零。


问题是,这个问题在过去几年从未发生过。自从新的MetaTrader推出后,这个问题就存在。所以我不认为这与代码有什么关系。一定是平台本身的内部变化导致了这个代码的失败。而这个指标只有一条评论线,它却失败了。所以这一定是一个平台/数据问题。

 
mar:

没有,我今天试了一下。有许多点进来了,但没有更新AccountBalance。我等了将近一分钟,但账户余额仍然是零。


问题是,这个问题在过去几年从未发生过。自从新的MetaTrader推出后,这个问题就存在。所以我不认为这与代码有什么关系。一定是平台本身的内部变化导致了这个代码的失败。而这个指标只有一条评论线,它却失败了。所以这一定是一个平台/数据问题。


你确定该指标与你发布的代码完全相同吗?

似乎你在检查 一个指标,它的一行代码在init而不是在start中。

 

我已经回答了你所有的问题(包括关于这个问题的未来问题),但也许你没有仔细阅读它们,那么让我再做一次。


qjol:

显然你不能避免更新;-)但你必须避免出现 "零除法 "的情况

所以你必须检查其中一个变量是否等于0....,以避免零除法的情况。

因为你不能停止一个指标,你必须想办法。


先生。


我可以等到更新完成后再继续进行SL计算吗?

不,你不能(已经写在上面)。

qjol:
因为你不能停止 一个指标,所以你必须想办法。


mar:


问题是我不能给SL一个随机值,因为那样整个指标就没有用了。


我已经给了你一个解决方案

SL = MathFloor((iATR(NULL, PERIOD_D1, 7, 0)*MathPow(10,Digits-exp)+1)*0.1);
if (SL == 0) // because error 4066 (for example)
   {
   SL = Someting;
   }
lots=MoneyRisk/SL/(MarketInfo(Symbol(), MODE_TICKVALUE)*multi);


它是随机的,直到更新完成(不超过2-3秒)(我认为这比得到一个错误信息和指标完全不工作要好)。

如果你有其他解决方案,请自由使用,不需要我的许可;-)


的意思是说


切换到你喜欢的任何时间框架,除了D1。然后你把指标拖到你的图表上。结果会出现上面那样的错误。在我看来,日线图的ATR(5)是不正确的,因为缺少DAILY数据。在D1时间框架中打开一个 "新 "图表,完全没有问题。当你切换到另一个时间框架时,它也是好的,因为ATR(5)是正确的。我注意到,只要我停留在D1图表中,我可以切换到任何货币对。但是,只要MetaTrader没有收到每日数据,在D1以外的其他时间框架中切换到其他货币对就会出现问题。 因此,我现在的问题是,当我在非D1的时间框架中打开一个新的图表时,我怎样才能得到每日数据,使我的ATR计算正确?


因为你使用的是iATR......PERIOD_D1,而且......你必须等待日线对完成更新(2-3秒,除非你使用的是拨号连接)。

 

qjol,我为这么多的误解感到抱歉!现在我明白了,你让我用一些随机的数据输入指标,只是因为除以零 的现象消失了。我也没有想到,在数据更新后,指标会使用正确的值。我为自己的愚蠢感到抱歉... :D

但尽管如此,问题还是没有解决:为什么以前会有这样的效果?新的MetaTrader有什么问题?

 
mar:


但尽管如此,问题还是没有解决:为什么以前会有这样的效果?新的MetaTrader有什么问题?


这与新旧MT4无关,而是与指标的工作和执行方式有关。
因为指标"不能 等待",已经被立即执行了
但是,在这个时候,你没有iATR的数据 ...PERIOD_D1,所以它等于0。
这就是为什么你的除数为零
 
这对我来说是绝对清楚的。但是我使用这个指标已经很长时间了,我从来没有出现过数据丢失之类的问题。所以我想知道为什么在我第一次使用MT4的build-625版本时发生了这种情况。
 
mar:

没有,我今天试了一下。有许多点进来了,但没有更新AccountBalance。我等了将近一分钟,但账户余额仍然是零。


问题是,这个问题在过去几年从未发生过。自从新的MetaTrader推出后,这个问题就存在。所以我不认为这与代码有什么关系。一定是平台本身的内部变化导致了这个代码的失败。而这个指标只有一条评论线,它却失败了。所以这一定是一个平台/数据问题。

你确定该指标与你发布的代码完全相同吗?

似乎你在检查 一个指标,它的一行代码在init而不是在start中。