alf_ssm:
谢谢您呢!我这这样的写法不知道正确否?
int kongdan()
{
int a;
datetime time0;
if(OrderSelect(0,SELECT_BY_POS ,MODE_HISTORY)==TRUE)
{
time0=iTime(NULL,PERIOD_H1,0);
if(time0!=OrderCloseTime())a=1;
}
return a ;
}如果kongdan()==1则可以下单,否则不能下单?这样做有没有问题?
bool kongdan(int magic) { static int tf =PERIOD_H1; for(int i=OrdersHistoryTotal()-1;i>=0;i--){ if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){ if(OrderMagicNumber()==magic&&OrderSymbol()==Symbol()){ if(iBarShift(NULL,tf,OrderCloseTime())==0)return(true); } } } return(false); }
我是这样写的orderselect中的第一个参数应该是total -1。然后用当前的时间与最后一次交易时间做比较,如果大于一个周期的时间那就说明不在一个线上,如果小于一个周期的时间则要考虑是小于多少,分为2种情况。
code不在身边所以没法贴出来。
获取历史订单要注意,如果用户改变了历史订单列表的时间段,可能造成获取错误。
enbo lu:
的确说的非常有道理!
获取历史订单要注意,如果用户改变了历史订单列表的时间段,可能造成获取错误。
谢谢您呢!我这这样的写法不知道正确否?
int kongdan()
{
int a;
datetime time0;
if(OrderSelect(0,SELECT_BY_POS ,MODE_HISTORY)==TRUE)
{
time0=iTime(NULL,PERIOD_H1,0);
if(time0!=OrderCloseTime())a=1;
}
return a ;
}如果kongdan()==1则可以下单,否则不能下单?这样做有没有问题?