实测A_BuyAvgPrice与A_BuyAvgPriceO返回结果没差别,是文档描述问题么?
根据文档的描述A_BuyAvgPrice和A_BuyAvgPriceO返回的是分别按照结算价计算和按照成 本价计算的持仓均价,实际测试了一下返回结果相通,以下是测试过程:所有的操作都是在同一日完成的,没有跨交易日先买入2手ni, 持仓均价127620通过策略调用A_BuyAvgPrice和A_BuyAvgPriceO, 显示返回的结果都是127620稍后等价格下跌又买入3手nie, 这次成交价是127093通过策略调用A_BuyAvgPrice和A_BuyAvgPriceO, 发生了变化,显示返回的结果都是127304按照一般理解的持仓均价概念,这两次操作买入的持仓均价=(127620 x 2 + 127093 x 3)/ (2 + 5) = 127303.8, 四舍五入得到127304,也算是跟计算结果一致我的问题是:#1 这两个函数应该返回同样的结果么?#2 A_BuyAvgPrice的计算规则是什么?#3 A_BuyAvgPriceO的计算规则是什么?附上代码:If(QuoteStatus == Enum_QuoteStatus_RealTime and BarStatus == 2)
{
Numeric buyavg = A_BuyAvgPrice();
Numeric buyavgo = A_BuyAvgPriceO();
Print("A_BuyAvgPrice = " + Text(buyavg));
Print("A_BuyAvgPriceO = " + Text(buyavgo));
}关联之前提问帖: https://bbs.tbquant.net/thread/20250110173357699724
隔了一个交易日查看:A_BuyAvgPrice = 128020A_BuyAvgPriceO = 127477PreSettlement:128020Tick last Price:127410
第二天查看A_BuyAvgPrice = 127570 (不符合)A_BuyAvgPriceO = 127477 (符合昨日预期)昨日结算价为:Tick. PreSettlement:127570跟昨天预期的值 A_BuyAvgPrice = (127520 x 5 + Tick.PreSettlement x 5) / 10 = (127520 x 5 + 127570 x 5)/10 = 127545
目前共有5手ni, 又以成交价127650买入了5手ni, 用于明日检查A_Buy_AvgPrice变化, 成交后的数据如下A_BuyAvgPrice = 127585 计算公式: (127520(昨日结算价) x 5 + 127650(成交价,作为盘中当日结算价) x 5)/10 = 127585A_BuyAvgPriceO = 127477 计算公式:(127304 x5 + 127650 x 5)/ 10 = 127477 目前数据与推测的都是对的上的,预计明天的结果是:A_BuyAvgPrice = (127520 x 5 + Tick.PreSettlement x 5) / 10A_BuyAvgPriceO = 127477
按照论坛帖子里的方法获取了昨日结算价, 与A_BuyAvgPrice()获取的数据一致Tick Last Price:127570 PreSettle Price:127520 (昨日结算价)Settle Price:0 (今日结算价)获取昨日结算价的方法: https://bbs.tbquant.net/thread/forum11965
做个记录供参考,第二日重新运行得到的数据是A_BuyAvgPrice = 127520A_BuyAvgPriceO = 127304
第二天再来看 ,隔日了才会结算
回复:好的,谢谢王老师