请老师帮忙看一下这段代码
我写了一个程序,通过A_GetPreFills获取当天的成交单列表,进行分析,统计出盈亏和手续费列表。一共14个商品,同时操作2个模拟资金账户。当天在2个账户都有成交下单。当我只指定一个账户,执行结果是14条记录,都是正常的。但是当绑定2个账户。出来28记录。只有一个账户结果是正常,而另外一个账户的盈亏结果出现异常。通过对成交列表分析出的盈亏值明显不对。好像少算,把当前持仓的价格也算到盈亏里去了。但是如果单独绑定任何一个账户,结果都是正常的。想不出问题在哪,请老师帮我看一下,是否有语法问题。如果看代码没语法问题,也查不出原因,老师能否提供利用A_GetPreFills分析当日实时盈亏的范例。就是账户透视页面右下角的商品列表的当日盈亏的实时更新,在量化看盘里如何实现?找了帮助文档,没有这方面的例子,自己写的又出问题,不知道怎么查//------------------------------------------------------------------------// 简称: GPJY_W8// 名称: GPJY_W8 // 类别: 公式应用// 类型: 用户应用// 输出: Void//------------------------------------------------------------------------Params //此处添加参数Vars //此处添加变量Defs //此处添加公式函数 bool get_loss(IntegerRef fill_c,NumericRef loss_1,NumericRef loss_2,Integer acco_i=0) { Array<Fill> fills; Array<CodeProperty> props; GetProperty(Symbol, props); Integer i; Numeric loss1(0); Numeric loss2(0); if(CurrentTime >= 0.090000 and CurrentTime <= 0.133000) { A_GetPreFills(Symbol, fills, CurrentDate+0 + 0.090000 , 0, \"\", acco_i); }else if(CurrentTime >= 0.133000 and CurrentTime <= 0.210000) { A_GetPreFills(Symbol, fills, CurrentDate+0 + 0.133000 , 0, \"\", acco_i); }else if(CurrentTime >= 0.210000 and CurrentTime <= 0.235959) { A_GetPreFills(Symbol, fills, CurrentDate+0 + 0.210000 , 0, \"\", acco_i); }else if(CurrentTime >= 0.000000 and CurrentTime <= 0.090000) { A_GetPreFills(Symbol, fills, CurrentDate-1 + 0.210000 , 0, \"\", acco_i); } for i = 0 to GetArraySize(fills) -1 { if(fills[i].side == Enum_Buy and fills[i].combOffset == Enum_Entry) loss1 = loss1 - fills[i].fillPrice*props[0].contractUnit; if(fills[i].side == Enum_Sell and fills[i].combOffset == Enum_Entry) loss1 = loss1 + fills[i].fillPrice*props[0].contractUnit; if(fills[i].side == Enum_Buy and fills[i].combOffset != Enum_Entry) loss1 = loss1 - fills[i].fillPrice*props[0].contractUnit; if(fills[i].side == Enum_Sell and fills[i].combOffset != Enum_Entry) loss1 = loss1 + fills[i].fillPrice*props[0].contractUnit; loss2 = loss2 + fills[i].commission ; } if(A_BuyPosition>0) loss1 = loss1 + A_BuyPosition*C*props[0].contractUnit; if(A_SellPosition>0) loss1 = loss1 - A_SellPosition*C*props[0].contractUnit; fill_c = GetArraySize(fills); loss_1 = loss1; loss_2 = loss2; return true; } bool check_loss() { Integer k; Array<Numeric> loss1; Array<Numeric> loss2; Array<Integer> fill_count; For k = 0 To A_AccountCount - 1 { get_loss(fill_count[k],loss1[k],loss2[k],k); Print2Quote(\"商品名称\",Symbol,Symbol+\"@\"+A_AccountID(k)); Print2Quote(\"次数\",fill_count[k] ,Symbol+\"@\"+A_AccountID(k)); Print2Quote(\"毛盈亏\",loss1[k] ,Symbol+\"@\"+A_AccountID(k)); Print2Quote(\"手续费\",loss2[k] ,Symbol+\"@\"+A_AccountID(k)); Print2Quote(\"净盈亏\",loss1[k]-loss2[k] ,Symbol+\"@\"+A_AccountID(k)); Print2Quote(\"盈亏比\",loss1[k]/loss2[k] ,Symbol+\"@\"+A_AccountID(k)); } return true; }Events //此处实现事件函数 //初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作 OnInit() { } //在所有的数据源准备完成后调用,应用在数据源的设置等操作 OnReady() { check_loss(); }