已经平仓的单子,按原来价位重新开仓,遇到了问题

 

本意是一个单子被打了止损,但是仍想在原来的价位重新开仓,于是执行挂单操作,但是这个程序不运行,不知道哪里出了问题。

查了一下,猜测问题可能出在历史订单查询这一块,对历史订单了解详细的朋友帮忙看一下,多谢!

int i =0,ok=0;
while (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) )
i++;
OrderSelect(i-1,SELECT_BY_POS,MODE_HISTORY);//选择历史订单中最后平仓的单子

double price=OrderOpenPrice();//历史订单中最后平仓的单子的开盘价

for (int p=OrdersTotal(); p>=0; p--)//判断是否已经有相应的挂单存在
{
if (OrderSelect(p,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderOpenPrice()==price)
{
ok=1;
}
}
}

if(ok==0)//如果没有相应的挂单,就按实际情况挂单
{
OrderSelect(i-1,SELECT_BY_POS,MODE_HISTORY);//选择历史订单中最后平仓的单子
if(OrderType()==OP_SELL)
{
OrderSend(Symbol(),OP_SELLSTOP,lot,OrderOpenPrice(),3,0,0,NULL,MAGIC,0,Blue);
}
if(OrderType()==OP_BUY)
{
OrderSend(Symbol(),OP_BUYSTOP,lot,OrderOpenPrice(),3,0,0,NULL,MAGIC,0,Blue);
}
}

原因: