CTP-API开发系列之七:下报撤单及回报顺序

CTP-API开发系列之七:报撤单及回报顺序

    • 前情回顾
    • 相关函数
    • 相关术语
      • 报单回报
      • 成交回报
      • 错单响应
      • 错单回报
    • 重要序号
      • RequestID
      • FrontID+SessionID
      • OrderRef
      • ExchangeID + TraderID + OrderLocalID
      • ExchangeID + OrderSysID
    • 报单场景

前情回顾

CTP-API开发系列之一:各版本更新说明(持续更新)
CTP-API开发系列之二:问题汇总(持续更新)
CTP-API开发系列之三:柜台系统简介
CTP-API开发系列之四:接口对接准备
CTP-API开发系列之五:SimNow环境介绍
CTP-API开发系列之六:交易登录及查询流程

相关函数

/// 1.报单录入请求
virtual int ReqOrderInsert(CThostFtdcInputOrderField *pInputOrder, int nRequestID) = 0;
/// 2.报单失败响应
virtual void OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
/// 3.报单录入错误回报
virtual void OnErrRtnOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo) {};/// 4.报单操作请求(撤单)
virtual int ReqOrderAction(CThostFtdcInputOrderActionField *pInputOrderAction, int nRequestID) = 0;
/// 5.报单操作请求响应
virtual void OnRspOrderAction(CThostFtdcInputOrderActionField *pInputOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
/// 6.报单操作错误回报
virtual void OnErrRtnOrderAction(CThostFtdcOrderActionField *pOrderAction, CThostFtdcRspInfoField *pRspInfo) {};/// 7.报单回报通知(私有流回报)
virtual void OnRtnOrder(CThostFtdcOrderField *pOrder) {};
/// 8.成交回报通知,报单发出后有成交则通过此接口返回(私有流回报)
virtual void OnRtnTrade(CThostFtdcTradeField *pTrade) {};

相关术语

报单回报

指报单的状态回报,有未知单报单回报、未成交报单回报、部分成交报单回报、全部成交报单回报和撤单回报。对应回调函数OnRtnOrder,以OrderStatus字段区分。

成交回报

指报单成交后推送的成交回报,对应回调函数OnRtnTrade。

错单响应

指报单被CTP拒绝后返回的响应通知,对应回调函数OnRspOrderInsert,其中ErrorID和ErrorMsg指明了错误原因。

错单回报

指报单被CTP或交易所拒绝后的报单的状态回报。对应回调函数OnErrRtnOrderInsert

重要序号

RequestID

每个请求函数都有一个RequestID,由客户端自行维护,ReqOrderInsert中的RequestID与OnRtnOrder中的相对应,可以用于跟踪报单回报的整个生命周期,但无法跟踪成交回报,因为成交回报里没有这个字段。

FrontID+SessionID

CTP-API建立的是TCP长链接,通过这两个字段就可以区分不同的链接,这两个字段由CTP柜台系统生成,并在登录成功后通过OnRspUserLogin函数返回给用户。

///前置编号
TThostFtdcFrontIDType FrontID;
///会话编号
TThostFtdcSessionIDType SessionID;

OrderRef

在报单录入请求的另一个参数中pInputOrder,填入报单引用字段的值OrderRef(由客户端自行维护),在通知函数的结构体中会带回来,这样就可以与请求关联上了。

FrontID + SessionID + OrderRef 

当报单报入CTP后,这组序号可以唯一定位一笔报单。可以用于跟踪报单回报的整个生命周期,但无法跟踪成交回报(OnRtnTrade),因为成交回报里没有这组序号。

ExchangeID + TraderID + OrderLocalID

当报单被CTP接受后,系统会分配OrderLocalID并发往交易所,这组序号可以用于跟踪此后报单的生命周期,包括报单回报和成交回报。

ExchangeID + OrderSysID

当报单被CTP接受后,系统会分配OrderLocalID并发往交易所,这组序号可以用于跟踪此后报单的生命周期,包括报单回报和成交回报。

当报单被CTP拒绝后,不会分配OrderLocalID,此时仍要使用【FrontID + SessionID + OrderRef】跟踪报单。

报单场景

1.报单某个合约,报入1手,到交易所先未成交,后全部成交1手。

报单:ReqOrderInsert
回调顺序:
OnRtnOrder (未知单) 此时CTP接收到交易所的未成交报单回报
OnRtnOrder (未成交) 此时CTP接收到交易所的成交回报和全部成交报单回报
OnRtnOrder (未成交)
OnRtnOrder (全部成交)
OnRtnTrade

2.报单某个合约,报入1手,到交易所先未成交,然后撤单1手。

报单:ReqOrderInsert
回调顺序:
OnRtnOrder(未知单) 此时CTP接收到交易所的未成交报单回报
OnRtnOrder(未成交)撤单:ReqOrderAction     此时CTP接收到交易所的撤单报单回报
回调顺序:
OnRtnOrder(未成交)
OnRtnOrder(已撤单)

3.报单某个合约,报入10手,到交易所先未成交,然后成交3手,然后剩余全部成交7手。

报单:ReqOrderInsert
回调顺序:
OnRtnOrder (未知单) 此时CTP接收到交易所的未成交报单回报
OnRtnOrder (未成交) 此时CTP接收到交易所的成交回报和部分成交报单回报
OnRtnOrder (未成交)
OnRtnOrder (部分成交)OnRtnTrade          此时CTP接收到交易所的成交回报和全部成交报单回报
OnRtnOrder (部分成交)
OnRtnOrder (全部成交)
OnRtnTrade

4.报单某个合约,报入10手,到交易所先未成交,然后成交4手,然后剩余全部撤单6手。

报单:ReqOrderInsert
回调顺序:
OnRtnOrder (未知单)此时CTP接收到交易所的未成交报单回报
OnRtnOrder (未成交)此时CTP接收到交易所的成交回报和部分成交报单回报
OnRtnOrder (未成交)
OnRtnOrder (部分成交)
OnRtnTrade撤单:ReqOrderAction
此时CTP接收到交易所的撤单回报
OnRtnOrder(部分成交)
OnRtnOrder(已撤单)

5.对一笔已经撤单的委托单再次撤单。

对一笔已撤单再次撤单
ReqOrderAction触发撤单错误响应
OnRspOrderAction (CTP:报单已全成交或已撤销,不能再撤)
触发撤单错误回报
OnErrRtnOrderAction (CTP:报单已全成交或已撤销,不能再撤)

6.对一笔未成交委托进行撤单,因为委托号填写错误导致撤单失败

撤一笔不存在的委托
ReqOrderAction触发撤单错误响应(CTP:撤单找不到相应报单)
OnRspOrderAction
触发撤单错误回报
OnErrRtnOrderAction (CTP:撤单找不到相应报单)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/730586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ducci Sequence(UVA 1594)

网址如下: Ducci Sequence - UVA 1594 - Virtual Judge (vjudge.net) 上乡村振兴概论,奖励自己一题 乐 一道set容器题,其中变成0的判断是利用了数组的每个数的总和(毕竟每个数都大于或等于0) 数组在原来的基础上&a…

计网(复习)黑书

1.整体概述 1.1 什么是Internet 从构成角度: 节点:主机端系统,及其运行的应用程序;路由器、交换机等网络交换设备 边:通信链路(同轴电缆、光纤、无线电、卫星;传输速度带宽(bps&am…

JEPs Part I

JEP 11 https://openjdk.java.net/jeps/11 JEP 11(Java Enhancement Proposal 11)提出了“孵化模块”的概念,这是一种将非最终版本的API和非最终工具提供给开发者的方法,以便在将来的版本中进行最终化或删除。孵化模块的目的是在…

操作系统:进程优先级

目录 1.进程优先级 1.1.基本概念 1.2.其他概念 1.3.进程切换 2.解读Linux2.6内核进程的调度队列 1.进程优先级 1.1.基本概念 我们在日常生活中的经验,排队的本质就是确认优先级,排队的原因就是资源不足,需要进行分配。那么在内存资源有…

【论文速读】 | DeGPT:通过大语言模型优化反编译器输出

本次分享论文为:DeGPT: Optimizing Decompiler Output with LLM 基本信息 原文作者:Peiwei Hu, Ruigang Liang, Kai Chen 作者单位:中国科学院信息工程研究所;中国科学院大学网络空间安全学院 关键词:反向工程&…

Linux——进程信号(一)

目录 1、信号入门 1.1、技术应用角度的信号 1.2、注意 1.3、信号概念 1.4、用kill -l命令可以查看系统定义的信号列表 1.5、信号处理常见方式概览 2、产生信号 2.1通过终端按键产生信号 Core Dump 2.2、调用系统函数向进程发信号 2.3、由软条件产生信号 3、总结思考…

XS2100S:IEEE 802.3af/at 兼容、用电设备接口控制器,集成功率MOSFET V1.0.3

XS2100S:IEEE 802.3af/at 兼容、用电设备接口控制器,集成功率MOSFET V1.0.3 北京冠宇铭通 肖小姐 概述 XS2100S 为用电设备 (PD) 提供符合以太网供电 (PoE)系统 IEEE802.3af/at 标准的完整接口。 XS2100S 为 PD 提供检测信号、分级信号以及带有浪…

【面试题】JVM面试题及答案总结

JVM(Java虚拟机)是Java技术体系的核心,面试中经常会被问到与JVM相关的问题, 以下是一些典型的JVM面试题及答案概要: JVM的主要组成部分有哪些? 类加载器(ClassLoader):负责从文件系统或网络等…

尚硅谷JavaScript高级学习笔记

01 准备 JavaScript中函数是对象。我们后续描述构造函数的内存模型时,会将构造函数称为构造函数对象。 02 数据类型 typeof 运算符来查看值的类型,它返回的是类型的字符串值 会做数据转换 03 相关问题 04数据_变量_内存 05相关问题1 06相关问题2 …

Typescript 哲学 morn on funtion

函数重载 overload 有一些编程语言(eg:java)允许不同的函数参数,对应不同的函数实现。但是,JavaScript 函数只能有一个实现,必须在这个实现当中,处理不同的参数。因此,函数体内部就…

2024蓝桥杯每日一题(前缀和)

一、第一题:壁画 解题思路:前缀和贪心枚举 仔细思考可以发现B值最大的情况是一段连续的长度为n/2上取整的序列的累加和 【Python程序代码】 import math T int(input()) for _ in range(1,1T):n int(input())s input()l math.ceil(len(s)/…

人工智能在日常生活中的应用

在我们的日常生活中,人工智能已经成为一种无处不在的力量,从智能家居到在线助手,再到高度个性化的服务和推荐,它无声地改变着我们的生活方式和习惯。随着技术的不断进步和普及,人工智能正以前所未有的速度和规模渗透到…

JVM-垃圾收集器G1

G1垃圾回收器 概述: 是一款面向服务器的垃圾收集器,主要针对配备多个处理器及大容量内存的机器. 以极高效率满足GC停顿时间要求的同时,还具备高吞吐量性能特征.G1保留了年轻代和老年代的概念,但不再是物理隔阂了,它们都是(可以不连…

群晖:Docker中用CentOS安装宝塔面板

群晖:Docker中用CentOS安装宝塔面板 步骤: https://post.smzdm.com/p/ad2rqg4z/ 其他: 安装失败报错: Failed to download metadata for repo ‘appstream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist 解决…

在别的地方下载的二次封装Windows镜像怎么安装?GHO镜像详细安装教程

前言 在系统之家或者其他地方下载的镜像文件怎么装到电脑上? 首先要知道系统之家下载的Windows镜像文件基本上都是.iso结尾的,要进入到对应镜像包才能看出系统镜像是什么格式。 如何分辨镜像的格式 选择对应的.iso镜像,点击【鼠标右键】-【装…

《UE5_C++多人TPS完整教程》学习笔记26 ——《P27 在线会话测试(Testing An Online Session)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P27 在线会话测试(Testing An Online Session)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主&#xff0…

谈谈我对Java平台的理解

谈谈我对Java平台的理解 Java,这个诞生于1995年的编程语言,至今仍然是全球最受欢迎的编程语言之一。它不仅是一种语言,更是一个完整的平台,为企业级应用、移动应用、嵌入式系统、大数据处理、科学计算等众多领域提供了强大的支持…

【OJ比赛日历】快周末了,不来一场比赛吗? #03.09-03.15 #13场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 2024-03-09(周六) #6场比赛2024-03-10…

Python笔记|基础算数运算+数字类型(1)

重新整理记录一下python的基础知识 基础运算符 、-、*、/ ;括号 ()用来分组。 >>>2 2 4 >>>50 - 5*6 20 >>>(50 - 5*6) / 4 5.0 >>>8 / 5 1.6向下取整除法:向下舍入到最接近的整数的数学除法。运算符是 //。比如1…

Vue3中的ref和reactive

今天在写前端, 用的是Vue3, 其实之前也有写过一些前端, 但是涉及不深, 差不多是基础的水平, 然后现在想跟进下Vue3, 就有点吃力得紧, 就单单一个变量的引用, 就折腾得不轻,调试的时候, 取值都是各种undefined, 然后就特地找了下相关的资料, 这才明白ref和reactive的…