设为首页收藏本站

 找回密码
 注册
查看: 6284|回复: 6
打印 上一主题 下一主题

请问A_OrderStatus返回了枚举值 6。是代表什么意思? [复制链接]

Rank: 1

精华
0
UID
200458
积分
8
帖子
7
主题
1
阅读权限
10
注册时间
2014-12-30
最后登录
2015-12-1
跳转到指定楼层
1#
发表于 2015-12-1 11:43:10 |显示全部楼层 |倒序浏览
我的程序交易委托8张平仓。只成交了6张。这时A_OrderStatus返回了枚举值 Enum_FillPart:2

超时后,程序对它进行撤单。TB显示部成部撤。A_OrderStatus返回了枚举值 6 ,但我试了所有的Enum枚举值,没有等于6的。

请问A_OrderStatus返回了枚举值 6。是代表什么意思?

Rank: 1

精华
0
UID
200458
积分
8
帖子
7
主题
1
阅读权限
10
注册时间
2014-12-30
最后登录
2015-12-1
2#
发表于 2015-12-1 13:53:46 |显示全部楼层
小米 发表于 2015-12-1 13:49
a_orderstatus 是需要配合枚举值进行判断得到返回值的。
并不清楚你所说的数值6代表什么意思,建议使用枚举 ...

a_orderstatus 返回了数值6 跟Enum_Deleted等枚举值,我试过没有一个能匹配上、6代表什么意思?

使用道具 举报

Rank: 1

精华
0
UID
200458
积分
8
帖子
7
主题
1
阅读权限
10
注册时间
2014-12-30
最后登录
2015-12-1
3#
发表于 2015-12-1 14:06:55 |显示全部楼层
小米 发表于 2015-12-1 14:02
您都试过哪些枚举值没有匹配上呢?
枚举值是以enum_xxx 打头的一系统函数,a_orderstauts是一定要与某枚 ...

我这么跟你说吧。你们的帮助指南F1里的所有enum_XXX打头的我都试过了

使用道具 举报

Rank: 1

精华
0
UID
200458
积分
8
帖子
7
主题
1
阅读权限
10
注册时间
2014-12-30
最后登录
2015-12-1
4#
发表于 2015-12-1 14:09:13 |显示全部楼层
小米 发表于 2015-12-1 14:02
您都试过哪些枚举值没有匹配上呢?
枚举值是以enum_xxx 打头的一系统函数,a_orderstauts是一定要与某枚 ...

日志都打印出来了:Enum_Declared:1,Enum_Canceling:7,Enum_Declare:11,Enum_Deleted:5,Enum_FillPart:2
就是没有等于6. 如果你们也没法解释,我觉得你们的平台就做的比较差了。

使用道具 举报

Rank: 1

精华
0
UID
200458
积分
8
帖子
7
主题
1
阅读权限
10
注册时间
2014-12-30
最后登录
2015-12-1
5#
发表于 2015-12-1 14:15:19 |显示全部楼层
小米 发表于 2015-12-1 14:10
你是在交易前,就已经在公式里就写了多条语句,对某个委托索引号分别与所有的enum_xxx函数进行比较判断的 ...


没错。而且这个6就是我把A_OrderStatus返回值打印出来日志看到的。
代码就是,我对部分成交的委托进行超时撤单后,就是原来该笔委托A_OrderStatus是enum_Fillpart,撤完单后就等于6
                               

使用道具 举报

Rank: 1

精华
0
UID
200458
积分
8
帖子
7
主题
1
阅读权限
10
注册时间
2014-12-30
最后登录
2015-12-1
6#
发表于 2015-12-1 14:17:53 |显示全部楼层
小米 发表于 2015-12-1 14:10
你是在交易前,就已经在公式里就写了多条语句,对某个委托索引号分别与所有的enum_xxx函数进行比较判断的 ...

AOrderTime=IIF(DataX==Data0.Symbol,Data0.A_OrderTime(j),IIF(DataX==Data1.Symbol,Data1.A_OrderTime(j),Data2.A_OrderTime(j)));
                        AOrderPrice=IIF(DataX==Data0.Symbol,Data0.A_OrderPrice(j),IIF(DataX==Data1.Symbol,Data1.A_OrderPrice(j),Data2.A_OrderPrice(j)));
                        AOrderFilledPrice=IIF(DataX==Data0.Symbol,Data0.A_OrderFilledPrice(j),IIF(DataX==Data1.Symbol,Data1.A_OrderFilledPrice(j),Data2.A_OrderFilledPrice(j)));
                        AOrderEntryOrExit=IIF(DataX==Data0.Symbol,Data0.A_OrderEntryOrExit(j),IIF(DataX==Data1.Symbol,Data1.A_OrderEntryOrExit(j),Data2.A_OrderEntryOrExit(j)));
                        AOrderBuyOrSell=IIF(DataX==Data0.Symbol,Data0.A_OrderBuyOrSell(j),IIF(DataX==Data1.Symbol,Data1.A_OrderBuyOrSell(j),Data2.A_OrderBuyOrSell(j)));
                        AOrderStatus=IIF(DataX==Data0.Symbol,Data0.A_OrderStatus(j),IIF(DataX==Data1.Symbol,Data1.A_OrderStatus(j),Data2.A_OrderStatus(j)));
                        //Enum_Declared:1,Enum_Filled():3,Enum_Deleted:5Enum_Canceled:4 Enum_Canceling:7,Enum_Declare:11
                        AOrderLot=IIF(DataX==Data0.Symbol,Data0.A_OrderLot(j),IIF(DataX==Data1.Symbol,Data1.A_OrderLot(j),Data2.A_OrderLot(j)));                                               
                        Data_Log("第"+Text(j)+"条交易:"+DataX+" "+IIFString(AOrderBuyOrSell==Enum_Buy(),"B","S")+IIFString(AOrderEntryOrExit==Enum_Entry(),"K","P")+" "+Text(AOrderPrice)+" "+Text(AOrderTime)+" "+Text(AOrderLot));
                        If(TimeDiff(AOrderTime,OrderTime)>WTWCTime){
                                Data_Log("委托时间:"+Text(AOrderTime)+"过早,不匹配");
                                //Break;
                        }
                        If(Abs(TimeDiff(OrderTime,AOrderTime))<=WTWCTime And OrderPrice==AOrderPrice And OrderLot==AOrderLot
                                And OrderType==IIFString(AOrderBuyOrSell==Enum_Buy(),"B","S")+IIFString(AOrderEntryOrExit==Enum_Entry(),"K","P")){
                                //Data_Log("Enum_Canceled:"+Text(Enum_Canceled)+",Enum_Deleted"+Text(Enum_Deleted)+",Enum_Filled"+Text(Enum_Filled));
                                Data_Log("找到对应的交易,是"+DataX+"第"+Text(j)+"单,委托时间:"+Text(AOrderTime)+",委托价格:"+Text(AOrderPrice)
                                +",类型:"+IIFString(AOrderBuyOrSell==Enum_Buy(),"买","卖")+",笔数:"+Text(AOrderLot)
                                +",开平:"+IIFString(AOrderEntryOrExit==Enum_Entry(),"开","平")+",状态:"+Text(AOrderStatus)
                                +" "+IIFString(AOrderStatus==Enum_Filled(),"成交","未成交"));       
                                //FileAppend(LogFile,"Data1委托超过"+Text(TimeDiff(Data1.A_OrderTime(j),CurrentTime()))+"秒");
                                If(ReturnContent==0) Return AOrderStatus;
                                Else If(ReturnContent==1) Return AOrderFilledPrice;
                                Else If(ReturnContent==2) Return j;
                        }

使用道具 举报

Rank: 1

精华
0
UID
200458
积分
8
帖子
7
主题
1
阅读权限
10
注册时间
2014-12-30
最后登录
2015-12-1
7#
发表于 2015-12-1 14:30:29 |显示全部楼层
本帖最后由 gfqh883012311 于 2015-12-1 14:32 编辑
小米 发表于 2015-12-1 14:23
个人觉得枚举值与数值 没有必然的关系 。。
因为该函数的使用本身就与数值无关,所以不太清楚您如此打印 ...


麻烦你看下你们的帮助说明,返回就是Integer 我对部成部撤的单,我要确定他撤单成功,我才能再进行追单啊。原来想平仓8手,只成交了6手。我还要再补2手。由于他返回的数据不等于Enum_Deleted,Enum_Canceled。我怎么敢再补这2手。返回6是什么鬼? 没有一个Enum_XXX能等得上!

说明 返回当前公式应用的帐户下当前商品的某个委托单的状态。
语法 Integer A_OrderStatus(Integer nIndex = 0)
参数 nIndex 当日委托单数组的索引值,以1为基值递增。
nIndex = 0 时取最后提交的委托单数据。  
备注 返回当前公式应用的帐户下当前商品的某个委托单的状态,返回值为整型。
该函数返回值可以与Enum_Declare、Enum_Declared、Enum_Filled等委托状态枚举值进行比较,根据类型不同分别处理。
注:不能使用于历史测试,仅适用于实时行情交易。  
示例 nCount = A_GetOrderCount();
For i = 1 To nCount
{
nStatus = A_OrderStatus(i);
If(nStatus == Enum_Filled)
...
}

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-5 12:16

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部