Vars
Tick mytick;
Global Integer timerID;
Global Numeric BuyorSell;
Global Integer ordL1;
Array<Integer> orderId;
Events
OnInit()
{
SubscribeBar( "l2209.DCE","TICK",SystemDateTime);//SystemDateTime
timerID = CreateTimer(5000,0);
}
OnTimer(Integer id,Integer millsecs)
{
If(id==timerID)
{
BuyorSell = IntPart( Rand(1,3));//取随机整数
PlotAuto("bos",BuyOrSell);
}
If(BuyOrSell==1)
{
A_SendOrderEx(Enum_sell,Enum_Entry,1,mytick.bidask1.askP,orderId);
ordL1=orderId[0];
print("1: 1");
}
}
OnOrder(OrderRef ord)
{
If(ord.status==Enum_Filled)//全部成交
{
If(ord.orderId==ordL1)
{
A_SendOrderEx(Enum_buy,Enum_ExitToday,1,ord.price-2,orderId);
Print("2= 2");
}
}
}
OnBar(ArrayRef<Integer> indexs)
{
GetTick(mytick);
//Print("买1= "+Text(mytick.bidask1.bidp));
//Print("mai1= "+Text(mytick.bidask1.askp));
}
print卖一买一到控制台价格没错,程序运行时无论买开、平空价格委托价格变成跌停价,多单开不了,空单平不了
只能手动撤单再平仓
各位大佬看看问题出在哪里?
谢谢!
myTick要定义为全局,否则,读到的是0,卖出价格为0,最后就变成以跌停价委托了。
Global Tick mytick;
你把你那个两个print放到ontimer里面去试试就明白了。