- 精华
- 0
- 在线时间
- 48 小时
- UID
- 18471
- 积分
- 201
- 帖子
- 38
- 阅读权限
- 40
- 注册时间
- 2010-10-27
- 最后登录
- 2023-9-20
- 精华
- 0
- UID
- 18471
- 积分
- 201
- 帖子
- 38
- 主题
- 10
- 阅读权限
- 40
- 注册时间
- 2010-10-27
- 最后登录
- 2023-9-20
|
本人程序化实盘已经一段时间,也曾经遇到过A_OrderFilledPrice返回为0的情况,但在模拟期间确实没有问题,经过观察和思考,解决了该问题。
我也曾在论坛问过该问题,但TB官方视而不见听而不闻,作为实盘使用者,你们收了钱,良心何在?今将解决代码公布,与各位共享。
本人在下单的时候,将订单编号记录,其值为:nOrderIndex,记录开仓时间,其值为nOpenTime
nOrderStatus = A_OrderStatus(nOrderIndex);
If( (nOrderStatus == Enum_Canceled) || (nOrderStatus == Enum_Filled) )
{
//取得成交数量
nFilledLot = A_OrderFilledLot(nOrderIndex);
//成交数量大于0
If( nFilledLot >0 )
{
//取得成交价格
nOrderPrice = A_OrderFilledPrice(nOrderIndex);
//尚未返回成交价格并且时间小于30秒,则继续等待
If( (nOrderPrice<0.01) && (TimeDiff(Time,nOpenTime)<30) )
Return;
//30秒尚未返回成交价格,则使用委托价格
If( nOrderPrice<0.01 )
{
nOrderPrice = A_OrderPrice(nOrderIndex);
}
//继续其他处理
......
}
} |
|