prev_calculated - 页 10 1...34567891011121314 新评论 Alexey Viktorov 2016.10.19 07:47 #91 Dmitry Fedoseev: 它没有。将会有几条连接中断,有几条会有未初始化的垃圾。阿列克谢-科齐岑。 要么,就像上面Dmitry说的那样,有几个小节的连接中断......。顺便问一下,在连接失败的情况下,prev_calculated是否也会返回0?显然,此时确实出现了通讯中断的情况。2016.10.19 04:46:13.770 Network '4092672': scanning network finished 2016.10.19 04:45:37.260 Network '4092672': scanning network for access points 2016.10.19 04:45:36.630 Network '4092672': trading has been enabled - hedging mode 2016.10.19 04:45:36.630 Network '4092672': terminal synchronized with MetaQuotes Software Corp. 2016.10.19 04:45:36.000 Network '4092672': previous successful authorization performed from 31.173.80.3 on 2016.10.18 17:51:14 2016.10.19 04:45:36.000 Network '4092672': authorized on MetaQuotes-Demo through Access Point SG Singapore (ping: 583.86 ms) 2016.10.19 04:42:57.680 Network '4092672': connection to MetaQuotes-Demo lost而最有可能的是,当出现中断时,prev_calculated返回0。好吧,这是一个很长的休息时间,但什么导致了其他prev_calculated的空值?从这几句话来看。2016.10.18 23:51:34.895 Network '4092672': scanning network finished 2016.10.18 23:51:20.865 Network '4092672': scanning network for access points除了上述这些记录外,没有其他记录,只有像这样的贸易记录。2016.10.19 00:00:36.066 Trades '4092672': cancel order #103987819 buy stop 0.10 USDJPY at 103.977 sl: 103.377 tp: 104.077而且你可以看到在我之前的帖子中,prev_calculated有多少次归零。 prev_calculated ASCTrend system 堡垒。执法问题 Alexey Viktorov 2016.10.19 07:58 #92 Alexey Kozitsyn:有可能,错误可能在这里。if(rates_total > prev_calculated) { minEquity = 0; maxEquity = 0; } minEquity = NormalizeDouble(fmin((minEquity == 0 ? bal : minEquity), equity), 2); maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);当一个新的条形图 到来时,你把数值重置为0--很好。但这样一来,你就会检查minEquity和0是否相等,这并不推荐。为了证明我的话,这里有你的图像。你可以看到,如你所说,"垃圾 "值大约为零。 当然,你最好在图片中添加一个带有 "垃圾 "值的数据窗口。你能详细说明为什么不推荐这种方法吗?这段(minEquity ==0? bal : minEquity)的代码,如果minEquity ==0,将返回之前得到的bal的值; minEquity的值 不会改变,直到函数fmin()终止。虽然我同意这样的写作有点冒险......但这不是问题所在。 [删除] 2016.10.19 08:15 #93 Alexey Viktorov:你能更详细地解释为什么不推荐这种方法吗?这(minEquity ==0? bal : minEquity)部分的代码,如果minEquity ==0,将返回先前获得的bal值; minEquity的值 不会改变,直到函数fmin()终止。虽然我同意这种编写代码的方式有点冒险...但这不是问题所在。 我是专门针对这一点说的:minEquity ==0.你是在与相等数量的双胞胎 进行比较。这可能解释了数值下降到0的原因。 Alexey Viktorov 2016.10.19 08:40 #94 Alexey Kozitsyn: 我特别谈到了这一点:minEquity ==0.你在比较的是dabble数字的相等。这可能解释了数值下降到0的原因。我明白了,正确答案是minEquity ==0.0 ...我无法习惯它。而最后一句话我完全不明白。什么值为0? [删除] 2016.10.19 08:48 #95 Alexey Viktorov:我明白了,正确答案是minEquity ==0.0 ...我无法习惯它。而最后一句话我完全不明白。什么值为0?但我不知道隐式类型转换是否会导致错误。 我是指真实类型的 比较。即在这里,为了安全起见,我会这样写。CompareDoubles( minEquity, 0.0 );bool CompareDoubles(double number1,double number2) { if(NormalizeDouble(number1-number2,8)==0) return(true); else return(false); } Alexey Viktorov 2016.10.19 09:04 #96 Alexey Kozitsyn:然而,我不知道隐式类型转换是否会导致错误,我原则上说的是比较真实类型。也就是说,在这里,为了可靠性,我会这样写。CompareDoubles( minEquity, 0.0 );bool CompareDoubles(double number1,double number2) { if(NormalizeDouble(number1-number2,8)==0) return(true); else return(false); } 是的,我的版本是用两位小数来计算钱。这不是一个引子,不需要如此细致地对待它。 [删除] 2016.10.19 09:14 #97 Alexey Viktorov: 是的,我的版本是用两位小数来计算钱。这不是一个引文,所以你不能这么精确地描述它。这不是一个细致的问题,而是一个准确的问题。在你的案例中,它可能导致零值被写入缓冲区。如果你不想要这样的精度,就这样做。if(rates_total > prev_calculated) { minEquity = -1.0; maxEquity = 0.0; } minEquity = NormalizeDouble(fmin((minEquity < 0 ? bal : minEquity), equity), 2); maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);那么就不会有错误。 Alexey Viktorov 2016.10.19 09:26 #98 Alexey Kozitsyn:这不是一个细致的问题,而是一个准确的问题。在你的案例中,它可能导致零值被写入缓冲区。如果你不想要那么精确,就这样做。if(rates_total > prev_calculated) { minEquity = -1.0; maxEquity = 0.0; } minEquity = NormalizeDouble(fmin((minEquity < 0 ? bal : minEquity), equity), 2); maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);在这种情况下,不会有错误。为什么我这么傻?我怎么会没有猜到,用非零值初始化minEquity会更好?然后一切都会变得更容易...if(rates_total > prev_calculated) { minEquity = DBL_MAX; maxEquity = 0.0; } minEquity = NormalizeDouble(fmin(minEquity, equity), 2); maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);你也可以使用maxEquity =DBL_MIN。 [删除] 2016.10.19 09:27 #99 Alexey Viktorov:为什么我这么傻?我怎么会没有猜到,用非零值初始化minEquity会更好?那么一切都会变得更容易...if(rates_total > prev_calculated) { minEquity = DBL_MAX; maxEquity = 0.0; } minEquity = NormalizeDouble(fmin(minEquity, equity), 2); maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2); 嗯...或者说......。 Alexey Viktorov 2016.10.19 09:31 #100 Alexey Kozitsyn: 嗯...或者是这样... 这并不是真正的问题。虽然它以某种方式被规避了,但当指标启动时,指标缓冲区 里的垃圾是不对的。 1...34567891011121314 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
它没有。将会有几条连接中断,有几条会有未初始化的垃圾。
要么,就像上面Dmitry说的那样,有几个小节的连接中断......。顺便问一下,在连接失败的情况下,prev_calculated是否也会返回0?
显然,此时确实出现了通讯中断的情况。
2016.10.19 04:45:37.260 Network '4092672': scanning network for access points
2016.10.19 04:45:36.630 Network '4092672': trading has been enabled - hedging mode
2016.10.19 04:45:36.630 Network '4092672': terminal synchronized with MetaQuotes Software Corp.
2016.10.19 04:45:36.000 Network '4092672': previous successful authorization performed from 31.173.80.3 on 2016.10.18 17:51:14
2016.10.19 04:45:36.000 Network '4092672': authorized on MetaQuotes-Demo through Access Point SG Singapore (ping: 583.86 ms)
2016.10.19 04:42:57.680 Network '4092672': connection to MetaQuotes-Demo lost
而最有可能的是,当出现中断时,prev_calculated返回0。
好吧,这是一个很长的休息时间,但什么导致了其他prev_calculated的空值?
从这几句话来看。
2016.10.18 23:51:20.865 Network '4092672': scanning network for access points
除了上述这些记录外,没有其他记录,只有像这样的贸易记录。
而且你可以看到在我之前的帖子中,prev_calculated有多少次归零。
有可能,错误可能在这里。
{
minEquity = 0;
maxEquity = 0;
}
minEquity = NormalizeDouble(fmin((minEquity == 0 ? bal : minEquity), equity), 2);
maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);
当一个新的条形图 到来时,你把数值重置为0--很好。但这样一来,你就会检查minEquity和0是否相等,这并不推荐。
为了证明我的话,这里有你的图像。你可以看到,如你所说,"垃圾 "值大约为零。
当然,你最好在图片中添加一个带有 "垃圾 "值的数据窗口。你能详细说明为什么不推荐这种方法吗?
这段(minEquity ==0? bal : minEquity)的代码,如果minEquity ==0,将返回之前得到的bal的值; minEquity的值 不会改变,直到函数fmin()终止。
虽然我同意这样的写作有点冒险......但这不是问题所在。
你能更详细地解释为什么不推荐这种方法吗?
这(minEquity ==0? bal : minEquity)部分的代码,如果minEquity ==0,将返回先前获得的bal值; minEquity的值 不会改变,直到函数fmin()终止。
虽然我同意这种编写代码的方式有点冒险...但这不是问题所在。
我特别谈到了这一点:minEquity ==0.你在比较的是dabble数字的相等。这可能解释了数值下降到0的原因。
我明白了,正确答案是minEquity ==0.0 ...我无法习惯它。
而最后一句话我完全不明白。什么值为0?
我明白了,正确答案是minEquity ==0.0 ...我无法习惯它。
而最后一句话我完全不明白。什么值为0?
但我不知道隐式类型转换是否会导致错误。 我是指真实类型的 比较。即在这里,为了安全起见,我会这样写。
bool CompareDoubles(double number1,double number2)
{
if(NormalizeDouble(number1-number2,8)==0) return(true);
else return(false);
}
然而,我不知道隐式类型转换是否会导致错误,我原则上说的是比较真实类型。也就是说,在这里,为了可靠性,我会这样写。
bool CompareDoubles(double number1,double number2)
{
if(NormalizeDouble(number1-number2,8)==0) return(true);
else return(false);
}
是的,我的版本是用两位小数来计算钱。这不是一个引文,所以你不能这么精确地描述它。
这不是一个细致的问题,而是一个准确的问题。在你的案例中,它可能导致零值被写入缓冲区。如果你不想要这样的精度,就这样做。
{
minEquity = -1.0;
maxEquity = 0.0;
}
minEquity = NormalizeDouble(fmin((minEquity < 0 ? bal : minEquity), equity), 2);
maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);
那么就不会有错误。
这不是一个细致的问题,而是一个准确的问题。在你的案例中,它可能导致零值被写入缓冲区。如果你不想要那么精确,就这样做。
{
minEquity = -1.0;
maxEquity = 0.0;
}
minEquity = NormalizeDouble(fmin((minEquity < 0 ? bal : minEquity), equity), 2);
maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);
在这种情况下,不会有错误。
为什么我这么傻?我怎么会没有猜到,用非零值初始化minEquity会更好?然后一切都会变得更容易...
{
minEquity = DBL_MAX;
maxEquity = 0.0;
}
minEquity = NormalizeDouble(fmin(minEquity, equity), 2);
maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);
你也可以使用maxEquity =DBL_MIN。
为什么我这么傻?我怎么会没有猜到,用非零值初始化minEquity会更好?那么一切都会变得更容易...
{
minEquity = DBL_MAX;
maxEquity = 0.0;
}
minEquity = NormalizeDouble(fmin(minEquity, equity), 2);
maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);
嗯...或者是这样...