设为首页收藏本站

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

请问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: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
15#
发表于 2017-8-18 14:51:39 |只看该作者
wfklhh2017 发表于 2017-8-17 21:31
以版主专业的智商 感觉有点在回避话题   楼主的意思已经很明白  人家是将a_orderstatus与枚举函数比较判 ...

确认了一下 返回6是“部成部撤”。目前现有的枚举函数里确实没有相对应得上的。

使用道具 举报

Rank: 2

精华
0
UID
251800
积分
61
帖子
49
主题
7
阅读权限
30
注册时间
2017-5-29
最后登录
2017-11-6
14#
发表于 2017-8-17 21:31:35 |只看该作者
小米 发表于 2015-12-1 14:31
抱歉啊。。个人水平有限,您写的函数也确实看不懂呢。。

如果对于某函数有疑问,建议您在公式应用里进行 ...


以版主专业的智商 感觉有点在回避话题   楼主的意思已经很明白  人家是将a_orderstatus与枚举函数比较判断后 a_orderstatus==Enum_**(每个函数都比较过)  发现没有一个枚举函数是符合的    然后去查a_orderstatus返回的委托状态 发现是编号6的一个状态   然后我们现有的枚举函数状态编号是6的好像没有  所以 他很郁闷

使用道具 举报

Rank: 1

精华
0
UID
188301
积分
19
帖子
12
主题
6
阅读权限
10
注册时间
2014-6-9
最后登录
2017-8-28
13#
发表于 2016-3-29 15:09:07 |只看该作者
我也出现了这种情况,A_OrderStatus()返回6,找不到对应的枚举值。怎么回事?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
12#
发表于 2015-12-1 14:31:58 |只看该作者
gfqh883012311 发表于 2015-12-1 14:17
AOrderTime=IIF(DataX==Data0.Symbol,Data0.A_OrderTime(j),IIF(DataX==Data1.Symbol,Data1.A_OrderTime( ...

抱歉啊。。个人水平有限,您写的函数也确实看不懂呢。。

如果对于某函数有疑问,建议您在公式应用里进行测试,而不要在自己封装的函数里进行。。
还是那句话,枚举值与数值没有什么 必然关系 。建议换个方式,直接使用a_orderstatus与枚举函数的比较判断来进行调试,而非某数值 。

使用道具 举报

Rank: 1

精华
0
UID
200458
积分
8
帖子
7
主题
1
阅读权限
10
注册时间
2014-12-30
最后登录
2015-12-1
11#
发表于 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)
...
}

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
10#
发表于 2015-12-1 14:23:05 |只看该作者
本帖最后由 小米 于 2015-12-1 14:28 编辑
gfqh883012311 发表于 2015-12-1 14:09
日志都打印出来了:Enum_Declared:1,Enum_Canceling:7,Enum_Declare:11,Enum_Deleted:5,Enum_FillPart:2
...


个人觉得枚举值与数值 没有必然的关系 。。
因为该函数的使用本身就与数值无关,所以不太清楚您如此打印出的数值来对于问题的解决有何帮助呢。
建议您公式里直接与让某委托单索引号直接与枚举函数进行比较吧。。

使用道具 举报

Rank: 1

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


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

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
7#
发表于 2015-12-1 14:10:55 |只看该作者
gfqh883012311 发表于 2015-12-1 14:06
我这么跟你说吧。你们的帮助指南F1里的所有enum_XXX打头的我都试过了

你是在交易前,就已经在公式里就写了多条语句,对某个委托索引号分别与所有的enum_xxx函数进行比较判断的吗?
方便将您的代码发过来看看?或是远程看一下具体的情况吗?

使用道具 举报

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

bottom

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

GMT+8, 2024-5-5 13:19

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部