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

 

我正在测试一个EA,我的Sleep()函数不工作。

我想让我的专家顾问在订单关闭后冻结很长时间,但它却一直在做假开仓。


bool cl() {if (OrderSelect(0,SELECT_BY_POS)==true){ int t=OrderType(); double l=OrderLots(); int tik=OrderTicket(); Alert("tik=", tik); }if (t==OP_BUY) OrderClose(tik,l,Bid,3,Red); if (t==OP_SELL) OrderClose(tik,l,Ask,3,Green); Sleep(300000000); }







 

睡眠 在测试器上不起作用。

 

我想知道是否有可能让EA对指标的颜色变化做出反应,比如说绿-买-红-卖。

在屏幕上出现不同的图标......也许在MT4有一个功能?

 
unumi >> :

我想知道专家顾问是否有可能对指标颜色的变化做出反应,比如说绿色-买入-红色-卖出。

而对于屏幕上不同图标的出现......也许MT4有一个功能?

如果指标改变了颜色,那么要么a)它的线被绘制在不同的缓冲区上,所以只要轮询它们就可以了解状态(在MT4中动态缓冲区的颜色不能改变,与MT5不同),要么b)指标线是由网格对象绘制的--那么你只需要读取ObjectGet(....)。

这同样适用于图标--它们可以通过缓冲器作为代码输出,也可以作为对象输出。

 
Svinozavr >> :

如果指标改变颜色,那么要么a)它的线条由不同的缓冲区显示,只需轮询它们就能了解状态(在MT4中,缓冲区的颜色不能动态改变,与MT5不同),要么b)指标线条由gr.objects显示--那么你只需要读取ObjectGet(....)属性。

图标也是如此--它们可以使用缓冲区作为代码绘制,也可以作为对象绘制。

>> 谢谢你,我知道了。

 

晚上好。

你能给我建议吗,我有两个相关的问题。

1.如何在每次打勾时将数组元素 归零(如果根据例子需要)。

2.如何正确地把数组元素的值加起来。

比如说。

每次打勾时,数组中的元素被填充,可以填充1或2或3或4....。或15个元素。

但每次我都需要数组元素值的算术和。

 
gvi2504 писал(а)>>

晚上好。

你能给我建议吗,我有两个相关的问题。

1.如何在每次打勾时将数组元素归零(如果根据例子需要)。

2.如何正确地把数组元素的值加起来。

比如说。

每次打勾时,数组中的元素被填充,可以填充1或2或3或4....。或15个元素。

但每次我都需要数组元素值的算术和。

1.ArrayInitialize(ArrayName,0)函数。

2.在填充数组的过程中,立即宣布一个变量,例如sum,给它赋值为0,然后在填充数组的过程中给这个变量添加一个值。

 
Integer >> :

1.ArrayInitialize(ArrayName,0)函数。

2.在数组被填满时,立即进行求和。 声明一个变量,例如求和,给它一个0的值,然后在数组被填满时给这个变量添加一个值。

很好。

正是你所需要的。>>非常感谢你。

 
Bion писал(а)>>

睡眠(300000000)。

即使Sleep()在测试器中能起作用,这么长的睡眠也是不可能的。打开后,可以记忆时间。

LastTime=TimeCurrent()。

在start()函数的开头做检查。

如果(TimeCurrent()<LastTime+Pause)返回(0)。

暂停 - 开启后的 "睡眠 "时间(以秒为单位)。

 
Integer писал(а)>>

这么长的睡眠时间是不可能的,即使Sleep()在测试器中可以工作。打开后,你可以记住打开的时间。

LastTime=TimeCurrent()。

在start()函数的开头做检查。

如果(TimeCurrent()<LastTime+Pause)返回(0)。

暂停 - 打开后的 "睡眠 "时间(以秒为单位)。

我按照你的建议做了。

datetime LastTime。
datetime Pause=3600。

int start()
{
如果(TimeCurrent()<LastTime+Pause)返回(0)。

...

bool cl() {if(OrderSelect(0,SELECT_BY_POS)==true){ int t=OrderType();
double l=OrderLots()。
int tik=OrderTicket();Alert("tik=", tik);
}
如果(t==OP_BUY) OrderClose(tik,l,Bid,3,Red)。
如果(t==OP_SELL) OrderClose(tik,l,Ask,3,Green)。
LastTime=TimeCurrent()。
}

然而,在测试器中,订单按照条件打开,但对时间没有反应。

此外,测试者对参数 "挂单存在的时间 "没有反应,也就是说,到了删除的时间,订单没有被删除。

它应该是这样的吗?

我们怎样才能使测试人员考虑到订单关闭后的时间?

原因: