CTP2资金/持仓管理
order_insert/insert_order、order_action/insert_order_action/handle_exchange_order、ntf_exchange_order/handle_exchange_order、ntf_exchange_trade/ntf_trade、quote_insert/quote_insert分别是报单录入、报单操作录入、交易所报单回报、交易所成交回报以及报价录入的基础业务处理入口及其调用的函数,它们的共同点是均调用了函数handle_order以冻结或解冻资金/持仓,当报单未成交时对报单所对应的资金和持仓进行冻结处理是为了保证在报单成交时存在足够的资金或持仓用于实质转换,函数handle_order的特点是入口参数包括一个旧状态的报单记录和一个新状态的报单记录,先根据报单新旧状态下的剩余数量关系更新冻结持仓量,然后根据最新冻结持仓量信息更新冻结金额、冻结保证金、冻结手续费等资金信息,将冻结资金信息汇总至交易账户并确认是否有足够的资金用于该项冻结。
1. 对于郑商所报单录入,如果找到了原来的报单会报错:ERROR_DUPLICATE_ORDER_REF,所以旧的报单为空,新报单为插入的(并且经过检验不重复)报单,然后调用handle_order,这样不管是多头冻结也好,空头冻结也罢,都是肯定要增加冻结的。
2. 对于郑商所报单操作录入,入口参数含有一条报单记录和一条报单操作记录,需要检查报单记录的报单类型(若是报价衍生则必须等交易所回报后即OrderSysID有效才能撤),检查报单记录的报单状态(若是全部成交或者撤销则报错不能再撤)
3. 对于处理郑商所交易所报单回报,首先可以肯定的是交易所发来了最新的报单信息,然后需要根据报单回报包含的信息寻找原来的报单,结合最新的报单回报信息和找到的原来的报单就可以产生一个新的报单记录,现在有了新报单和原来的报单就可以handle_order了,但是还不能直接调用handle_order,而是:如果未成交数量变化量大于0(即新状态下的未成交数量较大)就handle_order增加冻结,如果未成交数量变化量小于0(说明新状态下的未成交数量较小),第一反应肯定是减少冻结, 但注意仅仅是在新报单的报单状态为“撤单”或者“未成交不在队列中”时才handle_order减少冻结,因为在“部分成交”或者“全部成交”的情形下,状态的更新在成交回报中体现,这里就不体现了;当然,如果一开始就没找到原来的报单,而仅仅根据交易所发来的报单回报信息是无法产生一个完整的新的报单记录的,那么就需要去新增一个,其一部分字段来自报单回报,另一部分字段来自其它相关的表,至于原始的报单自然就是空了,然后就可以直接调用handle_order了。值得注意的是,无论是否找到原来的报单,做了资金/持仓的冻结或解冻后(即调用了handle_order),最后都要更新(或插入)郑商所报单表,这样处理的结果才能保存下来。
4. 对于处理郑商所交易所成交回报,简单来说是进行资金和持仓的成交转换,首先查找相应的合约持仓记录,根据合约成交数量对实际持仓量进行更新,然后根据成交类型更新相应的资金信息。如果成交类型为组合衍生成交则单独处理,否则按一般情况处理:首先可以肯定的是交易所发来了最新的成交信息,然后需要根据成交回报包含的信息去寻找原来的报单,结合最新的成交回报信息和找到的原来的报单就可以产生一个新的报单记录(通过函数modify_order_by_trade完成),现在有了新报单和原来的报单就可以直接调用handle_order了,冻结/解冻结束后更新到郑商所报单表;当然,如果一开始没找到原来的报单,那么就新增一个(通过函数make_order_by_trade完成)并插入到郑商所报单表。最后执行handle_trade函数:如果产品的成交处理类型是投机平仓优先而且成交的开平标志不是开仓则查找投机持仓、查找套保持仓、根据特殊品种成交计算持仓,否则find_position、change_trade_position,
5. 对于郑商所报价录入衍生买/卖单,如果找到了原来的报价会报错:ERROR_DUPLICATE_EXECORDER_REF,所以郑商所报价不支持抢单,也就不存在旧的衍生报单,新报单即为新插入报价的衍生买/卖单,这样不管是多头冻结也好,空头冻结也罢,都是肯定要增加冻结的。
转载于:https://www.cnblogs.com/SAPCE/p/8257597.html
CTP2资金/持仓管理相关推荐
- SuperMap 存量房交易网上备案及资金监管管理平台
SuperMap 存量房交易网上备案及资金监管管理平台 SuperMap 存量房交易网上备案及资金监管管理平台是超图软件在多个房产管理行业信息系统工程项目的基础上开发的面向经纪机构.监管银行.存量房管 ...
- 使用tushare计算北上资金持仓成本
使用tushare计算北上资金持仓成本 tushare是一个金融数据网站,通过调用tushare接口,能够很方便地获取到各种金融数据,这里我们尝试通过tushare的接口函数,计算标的北上资金持仓成本 ...
- (附源码)计算机毕业设计ssm 个人资金账户管理
毕设帮助,指导,本源码分享,调试部署(见文末) 3.2系统流程分析 3.2.1系统开发流程 个人资金账户管理开发时,首先进行需求分析,进而对系统进行总体的设计规划,设计系统功能模块,数据库的选择等,本 ...
- 【程序设计与实践】实验二:个人资金账户管理
实验二:个人资金账户管理 题目: 阅读下列"资金账户的管理"程序,对程序进行调试.改错,并增加函数,使之符合如下具体功能. 1) 资金账户的信息统一放在*随机文件中,该随机文件包括 ...
- [附源码]Node.js计算机毕业设计个人资金账户管理Express
项目运行 环境配置: Node.js最新版+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue. 项目技术: Express框架 + Node.js+ Vue 等 ...
- python面向对象实践二(银行账户资金交易管理)
用类和对象实现一个银行账户的资金交易管理, 包括存款.取款和打印交易详情, 交易详情中包含每次交易的时间.存款或者取款的金额.每次交易后的余额. 如: 下面按照要求定义一个账户 Account 类.账 ...
- 股票量化分析工具QTYX使用攻略——北上资金持仓选股(更新2.5.8)
搭建自己的量化交易系统 如果要长期在市场中立于不败之地!必须要形成一套自己的交易系统. 如何学会搭建自己的量化交易系统? 边学习边实战,在实战中学习才是最有效地方式.于是我们分享一个即可以用于学习,也 ...
- excel取消保存微软_如何使用Microsoft的“ Excel中的资金”功能管理您的个人财务...
excel取消保存微软 Track and monitor financial accounts from Microsoft's spreadsheet software with the 'Mon ...
- python银行账户资金交易管理_python 实现网上商城,转账,存取款等功能的信用卡系统...
一.要求 二.思路 1.购物类buy 接收 信用卡类 的信用卡可用可用余额, 返回消费金额 2.信用卡(ATM)类 接收上次操作后,信用卡可用余额,总欠款,剩余欠款,存款 其中: 1.每种交易类型不单 ...
最新文章
- Linux ISCSI配置
- GitHub使用教程详解——官网操作指南(翻译)
- Google退出中国 谁最受伤
- 连麦互动直播方案全实践1:什么是连麦互动直播?
- size_t为什么重要
- Java面试题及答案,java底层实现原理
- 【离散数学】纠错码基本理论
- 华为最新 5G 折叠机 MateXs 发布,起售价 19000 多元
- js面向对象的程序设计 --- 中篇(创建对象) 之 原型模式
- 用excel制作门店流水日常
- 产品思维训练 | 经典产品面试题
- 蓝牙原理—Radio射频协议
- 阻止计算机访问注册表,电脑中毒了,注册表打不开了,提示注册表已被管理员禁止,这该怎么办...
- Word文档里面如何给内容进行注释添加
- win10系统幻灯片播放卡顿
- 【转载】Unity3D导入图片属性信息和默认shader介绍
- 微服务实施笔记(一)
- 软件开发转人工智能一年总结
- 汉诺塔递归的c语言实现(递归)
- LINUX基础试题大全(2)
热门文章
- 极路由——彻底凉了,云插件服务都关闭了,还没root的抓紧了
- HTML5期末大作业:商城网站设计——仿天猫在线商城(HTML和CSS实现天猫在线商城网站)...
- 6大多人协作工具推荐
- DP DD VTL 备份 NBU
- 对8421码,5421码,2421码,余3码的认识
- “燕云十六将”之Shirley张艳(5)
- 狂奔与内卷并存,自嗨锅、莫小仙们如何寻找“破局之道”?
- 无剑100SOC(wujian100)挂UART外设之④修改SDK
- Python学习 Day31 JS类数组对象
- 数学建模最小二乘法拟合_MATLAB最小二乘法拟合曲线公式