//+----------------------------------------------------------------------------+datetime SecondsAfterOpenLastPos(int op, int mn) {
datetime t=0;
int i, k=OrdersTotal();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS)) {
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()!=op) continue;
if (OrderMagicNumber()!=mn) continue;
if (t<OrderOpenTime()) t=OrderOpenTime();
}
}
return(TimeCurrent()-t);
}
//+----------------------------------------------------------------------------+
也就是说,要用Magic检查最后一个买入头寸开仓后的秒数,你需要
if (SecondsAfterOpenLastPos(OP_BUY, Magic)>3600) {
// Можно открывать следующий
}
//+----------------------------------------------------------------------------+datetime SecondsAfterOpenLastPos(int op, int mn) {
datetime t=0;
int i, k=OrdersTotal();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS)) {
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()!=op) continue;
if (OrderMagicNumber()!=mn) continue;
if (t<OrderOpenTime()) t=OrderOpenTime();
}
}
return(TimeCurrent()-t);
}
//+----------------------------------------------------------------------------+
也就是说,要用Magic检查最后一个买入头寸开仓后的秒数,你需要
if (SecondsAfterOpenLastPos(OP_BUY, Magic)>3600) {
// Можно открывать следующий
}
//+----------------------------------------------------------------------------+datetime BarsAfterOpenLastPos(int op, int mn) {
datetime t=0;
int i, k=OrdersTotal();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS)) {
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()!=op) continue;
if (OrderMagicNumber()!=mn) continue;
if (t<OrderOpenTime()) t=OrderOpenTime();
}
}
return((TimeCurrent()-t)/60/Period());
}
//+----------------------------------------------------------------------------+
//+----------------------------------------------------------------------------+datetime BarsAfterOpenLastPos(int op, int mn) {
datetime t=0;
int i, k=OrdersTotal();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS)) {
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()!=op) continue;
if (OrderMagicNumber()!=mn) continue;
if (t<OrderOpenTime()) t=OrderOpenTime();
}
}
return((TimeCurrent()-t)/60/Period());
}
//+----------------------------------------------------------------------------+
也许是这样。
其他的想法不会出现...
你在阅读字里行间。总之,看看你一开始在循环中放了什么。循环的行动区...
下午好!我不能让这个条件起作用。
OrderCloseTime()!=hour()
我希望一小时内开出的订单不超过一个!
所有相同的订单都被打开了!
下午好!我无法让这个条件发挥作用。
OrderCloseTime()!=hour()
我希望一小时内开出的订单不超过一个!
但所有相同的订单都被打开了!这可能是什么呢?
首先:OrderCloseTime() - 这是订单关闭的时间。如果该订单没有关闭,则等于零。你需要看一下开放的时间。
其次。Hour() - 这是EA开始的时间,这个时间在程序执行 期间不会改变。你需要将其与最后一次报价到达的时间进行比较 - TimeCurrent()
该函数返回当前符号的最后位置被打开后的秒数。
也就是说,要用Magic检查最后一个买入头寸开仓后的秒数,你需要
第一:OrderCloseTime()是关闭订单的时间。如果该订单没有关闭,则等于零。你需要注意开放时间。
第二。Hour() - 这是专家顾问开始工作的时间,这个时间在程序执行 期间不会改变。你需要将其与最后一次报价到达的时间进行比较 - TimeCurrent()
该函数返回当前符号的最后位置被打开后的秒数。
也就是说,要用Magic检查最后一个买入头寸开仓后的秒数,你需要
谢谢你的功能!你难道没有另一个功能吗? 这样,每个酒吧只能开一个订单?谢谢你的功能!你没有另一个功能吗? 这样每个酒吧只能打开一个订单?
同样的事情,只检查条数,不检查秒数
同样的事情,只检查条数,不检查秒数
它是有效的!但当我用TP关闭一个订单时,一个新的订单马上就会打开。
同样的事情,只检查条数,不检查秒数
它是有效的!但当一个订单在TP上关闭时,一个新的订单立即打开!我们如何才能解决它?
所以我们需要做另一个检查:检查最后一个订单关闭后的条数。