计算平仓盈亏和持仓盈亏曾创能2010/03平仓盈亏和持仓盈亏计算原理构造游标构造三个游标CURSOR_COPEN:当日开仓记录从当日成交表中获取所有开仓记录(OffSetFlag='0'),按持仓实体(合约代码、会员代码、客户号、投保标志、方向、交易日期、成交编号)LOSETODAY:当日平仓记录从当日成交表中获取平今仓记录(OffSetFlag='3'),按持仓实体排序;LOSEYESTODAY:当日平昨仓记录从当日成交表中获取平昨仓记录(OffSetFlag='4');以下基于以上三个个游标,构建今开仓明细记录(即去掉当日平仓后的净新开仓)和平仓明细记录。今开仓明细计入TODAY_OPEN_DETAIL表,平仓明细计入CLOSE_DETAIL表。盈亏计算处理初始化: 打开CURSOR_COPEN;LOSETODAY;从CURSOR_COPEN中取第一条开仓记录;LOSETODAY中取第一条平今仓记录;剩余开仓数量==,即无当日平仓,那么CURSOR_COPEN中所有记录即为当日新开仓记录,计入TODAY_OPEN_DETAIL表,LOSETODAY不为空,那么需对平今记录进行循环处理。循环判断:LOSETODAY的指针已指向末尾,那么将当前CURSOR_COPEN计入当日新开仓明细表TODAY_OPEN_DETAIL,开仓数量取剩余开仓数量CURSOR_COPEN指针往后移剩余开仓数量=,进行如下处理:分支一:LOSETODAY中客户合约与CURSOR_COPEN中相同分支二:LOSETODAY中客户合约与CURSOR_COPEN不相同对于分支一的说明: 分支一表明:存在对当前开仓对应的持仓实体的平仓记录。此时需要处理平仓。按先开先平的原则,需要将持仓实体的当日开仓按成交编号逐一对冲。对于分支二的说明: 分支二表明:存在对当前开仓对应的持仓实体的平仓记录。此时,当日开仓记录对应的持仓实体已无当日平仓记录可处理。因此,需对分支一和分支二分别处理。对分支一的处理判断如果剩余平仓数量<剩余开仓数量,那么: LOSETODAY计入平仓明细表CLOSE_DETAIL,数量取剩余平仓数量,; 剩余开仓数量=剩余开仓数量-剩余平仓数量 剩余平仓数量=LOSETODAY指针往后移;剩余平仓数量=;否则,如果剩余平仓数量>剩余开仓数量 LOSETODAY计入平仓明细表CLOSE_DETAIL,数量取剩余开仓数量,; 剩余平仓数量=剩余平仓数量-剩余开仓数量剩余开仓数量=0CURSOR_COPEN指针往后移;剩余开仓数量=;否则,剩余平仓数量=LOSETODAY计入平仓明细表CLOSE_DETAIL,数量取剩余开仓数量,; 剩余平仓数量=0 剩余开仓数量=0CURSOR_COPEN指针往后移;LOSETODAY指针往后移;剩余开仓数量=;剩余平仓数量=;对分支二的处理对于分支二,有如下几种子分支:子分支A:平仓记录对应的
如何计算期货的平仓盈亏和持仓盈亏 来自淘豆网www.taodocs.com转载请标明出处.