OrderType()==(OP_BUYSTOP||OP_SELLSTOP) && // The order selected is either a pending buy on stop order or a buy on sell orderOrderMagicNumber()==(Mnumber1||Mnumber1)) // The orders magic number is the same as the magic number used in this ea
我认为你需要这样做......。
((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) && // The order selected is either a pending buy on stop order or a buy on sell order
((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber2)) // The orders magic number is the same as the magic number used in this ea
externstring sComment4 = "Max Hours allowed before pending orders are deleted";
externint pendinglimit = 4;
// * EVERYTIME A TRADE GETS TRIGGERED
bartraded = TimeHour(TimeCurrent());
if(TimeHour(TimeCurrent()) > (bartraded + pendinglimit) && Tradeopen()==true) // Check to see if pending orders have expired
{
for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--) //scan through open orders
{
if (OrderSelect(tnumber, SELECT_BY_POS) &&
((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) && // The order selected is either a pending buy on stop order or a buy on sell order
((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3))) // The orders magic number is the same as the magic number used in this ea
{
OrderDelete(tnumber); // Delete it
}
}
}
externstring sComment4 = "Max Hours allowed before pending orders are deleted";
externint pendinglimit = 4;
// * EVERYTIME A TRADE GETS TRIGGERED*
bartraded = 0;
if (Time0 == Time[0]) return; Time0 = Time[0]; // make sure each bar is only scanned once
{
//-----------------------------------------------------------------------------------------------------------------------------------------------//TRADE COUNTER
bartraded++; // Each time a new bar opens add 1 to the counter//------------------------------------------------------------------------------------------------------------------------------------------------// DELETE PENDING ORDERS THAT HAVE NOT BEEN TRIGGERED WITHIN 'pendinglimit'if(bartraded > pendinglimit && Tradeopen()==true) // Check to see if pending orders have expired
{
for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--) //scan through open orders
{
if (OrderSelect(tnumber, SELECT_BY_POS) &&
((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) && // The order selected is either a pending buy on stop order or a buy on sell order
((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3))) // The orders magic number is the same as the magic number used in this ea
{
OrderDelete(tnumber); // Delete it
}
}
}
staticdatetime tradeopened;
//Everytime a trade is opened I run
tradeopened = TimeCurrent();
if((iBarShift(hothand(),60 ,tradeopened)>pendinglimit) && Tradeopen()==true) // Check to see if pending orders have expired
{
for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--) //scan through open orders
{
if (OrderSelect(tnumber, SELECT_BY_POS) &&
((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) && // The order selected is either a pending buy on stop order or a buy on sell order
((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3))) // The orders magic number is the same as the magic number used in this ea
{
OrderDelete(tnumber); // Delete it
}
}
}
我从来没有试过这个,但我认为它是无效的......。
我认为你需要这样做......。
我认为这样做的原因是 ...... 这相当于什么?(OP_BUYSTOP||OP_SELLSTOP)如果变量是bool 的话,可能会起作用 ... ...但我不认为它可以用int 来工作。
有一件小事,你不需要在OrderDelete之前进行OderSelect。一般来说,你只有在使用不使用int 票的Order函数 时才需要OrderSelect。例如OrderComment( ), OrderCommission( )等。
好吧,我修复了这个逻辑。但它仍然没有删除订单。
正如我之前提到的,我把计数器从酒吧换到了其他地方......
好的,谢谢你Raptor,我刚刚更新了我帖子上的代码。我记得你们说过,用条形来计算是不好的,所以我把它改为用条形时间。我修改了一下逻辑,看看是否可行。
是真的,但你需要看看这个评论是在什么情况下做出的。 酒吧 是不可靠的 ....
但这并不意味着你不能用条数来代替小时数。 例如,你的代码将如何应对周五 晚上和周日的情况?
另外,如果交易是在22:00进行的,会发生什么情况?
好吧,我看到了时间策略的问题。但如果我们用条形图作为计数器,一旦图表达到最大条形图,它也会失败,对吗?
我将回去看看我能想出什么办法......
好吧,这个方法如何?
好吧,我看到了时间策略的问题。但如果我们用条形图作为计数器,一旦图表达到最大条形图,它也会失败,对吗?
不是的,当前的H1条总是0条 ......在60分钟内,当前的H1条将是0条 ......条数问题 是如果你使用Bars, 意思是你图表上的条数 总数,或者你看的是你图表最左边的条数。
TimeHour(TimeCurrent())的条数是0,你可以使用iBarShift 获得你交易时的条数(你需要计算而不是存储它!!),然后做这样的事情。
好吧,第三次幸运了,我花了点时间才明白你想说什么。所以这是我所做的。但是订单仍然没有被删除 >:(
tradeopened = TimeCurrent()
不会给我条形图的开放时间,我必须使用Time[0]吗?试试这个;-)