[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 346

 
歉意
 
Stepan241 >> :

在剧本的开头,你写道

#property show_inputs

外置双倍数Lot=0.1

之后,当脚本被附加到符号窗口时,会出现一个对话框。

我明白。但这不是我所需要的。有了这些命令,就会出现一个对话框--有一般的EA设置和当前的脚本设置,我问是否有这样的功能,可以用来一次性输出DO ONLY与脚本设置。

 
你能告诉我如何使所有未平仓的订单在指定时间平仓吗?
 
JackaLrus писал(а)>>

我明白。但这不是我所需要的。有了这些命令,就会出现一个对话框--有一般的EA设置和当前的脚本设置,我问是否有这样的功能,可以用来一次性输出DO ONLY与脚本设置。

那就只有MetaEditor了。

 
vik-777 >> :
请告诉我们如何在指定时间关闭所有未结订单?

如果(HourTime[0]=12)_CloseAllOrder

参见前一页或前一页的_CloseAllOrder函数。

 
Stepan241 >> :

如果(HourTime[0]=12)_CloseAllOrder

关于_CloseAllOrder函数本身,请参见最后一页或之前的页面。

谢谢你,这个功能非常方便

 

亲爱的专家们。

请告知造成这种结果的原因是什么。

gist:

int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}

它打印出 "c=3 q=2"

问题:怎么会有三分之二的成绩?

问题是,如果我把0.3换成0.4或任何其他分数,它就能如期解决问题。

比如说

int start()
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}

"c=3 q=2 v=4 w=4"

问题:怎么会有三分之二的成绩?

试着编译,也许我的电脑不能计算(只是愚蠢的......)。

 
mukata >> :

亲爱的专家们。

请告知造成这种结果的原因是什么。

gist:

int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}

它打印出 "c=3 q=2"

问题:怎么会有三分之二的成绩?

问题是,如果我把0.3换成0.4或任何其他分数,它就能如期解决问题。

比如说

int start()
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}

"c=3 q=2 v=4 w=4"

问题:怎么会有三分之二的成绩?

试着编译一下,也许我的电脑不知道如何计算(这很傻......)。


这不是胡说八道,只是在处理实数时常见的四舍五入错误。

在第一种情况下,例如c等于2.999999999,输出是四舍五入的,即3,但当分配到一个整数类型时,小数部分被丢弃了。

 
splxgf >> :

这不是胡说八道,是处理实数时常见的四舍五入错误。

例如,在第一种情况下,c等于2.99999999999......。

2.99999999怎么会是2.9999?0.3/0.1=3正好,这不像是我用1除以3,应该是0.33333......

但当分配给一个整数类型时,小数部分被丢弃。

一个整数类型被分配了一个值c,显然等于3,没有任何小数部分。 没有什么可以丢弃...

答案是100%的错误。

有其他选择吗?

 
mukata >> :


我不明白2.9999怎么会是2.9999?0.3/0.1=3就算了,又不是我用1除以3,应该是0.33333...。


这只是看起来很确切,而机器表示可以采取不同的值。即2.9999,3或3.00000001


为了摆脱这种误解,MQL有NormalizeDouble()函数