int BarOfLastOrder(int magic)
{
int i,ot=OrdersTotal();
for(i=ot-1; i>=0; i--);
{
OrderSelect(i,SELECT_BY_POS);
if(OrderMagicNumber()==magic) return(iBarShift(0,0,OrderOpenTime()));
}
return(-1);
}
int start()
{
........
int bar_of_last_order = BarOfLastOrder(magic); // указать магик, который использует советник
switch(bar_of_last_order)
{
case0:
//последний ордер открыт на текущем баре
...
break;
case -1:
//ордеров нет// здесь break не ставим, если ситуация "нет ордеров" и "последний ордер открыт не на текущем баре" нужно обрабатывать одинаково// в противном случае написать обработку и break;default:
//последний ордер открыт не на текущем баре
...
break;
}
.........
}
你可以这样做.....
这个变体不能正常工作,因为NewBar只在条形图的第一个刻度上给出真值。为了正确工作,我们应该把FunNewBar(); if(!NewBar)返回; 行放在交易开仓的条件内,并在成功开仓后。
虽然它不会完全正确。简而言之,r772ra的 变体应该被纠正,最好使用一个根本不同的方法,例如,观察历史上最后一个订单的开盘时间,并与当前栏的时间进行比较--这将更可靠。
情况是这样的。
谢谢你!我可以试一试...
调整了代码
耶!!!。我通过了
{
static datetime New_Time=0。
New_Bar=false。
如果(New_Time!=Time[0])
{
New_Time=Time[0];
New_Bar=true。
}
}
如果我把信号放在开盘后的第一个负数条上,它能起作用吗?