【数据结构】闲谈A股实时交易的数据结构-队列

今天有点忙,特意早起,要不先写点什么。看到个股的红红绿绿, 突然兴起,要不写篇文章分析下A股交易的简易版数据结构。

图片

在A股实时股票交易系统中,按照个人理解,大致会用队列来完成整个交易。队列(Queue)是一种重要的数据结构,用于管理和处理买单和卖单。队列是一种先进先出(FIFO, First-In-First-Out)的结构,确保了最早进入系统的订单会最先被处理。在交易系统中,分别维护买单队列和卖单队列有助于模拟市场的撮合机制。

买单队列(Bid Queue)

买单队列存储所有未成交的买单。每一笔买单包括股票代码、买入价格、买入数量等信息。这些买单根据价格以及时间优先级排序,一般实行价格优先(更高的出价优先匹配),时间优先(同一价格下,先提交的订单优先匹配)的原则。

卖单队列(Ask Queue)

卖单队列存储所有未成交的卖单。每一笔卖单也包括股票代码、卖出价格、卖出数量等信息。卖单队列的排序规则与买单队列相同,通常实行价格优先(更低的出价优先匹配),时间优先(同一价格下,先提交的订单优先匹配)的原则。

订单撮合

撮合过程是交易系统中的核心功能,买单队列和卖单队列将按照特定的规则进行匹配,以完成交易。以下是撮合过程的一般步骤:

  1. 提交订单:
    交易者提交买单或卖单到交易系统中。

  2. 订单排队:
    新提交的买单会加入到买单队列中,卖单加入到卖单队列中,根据价格和时间排序。

  3. 查找匹配订单:
    将买单队列中出价最高的订单与卖单队列中要价最低的订单进行比较。如果买单的出价大于等于卖单的要价,则可以进行交易。

  4. 成交处理:
    如果找到匹配订单,则根据双方的订单数量进行交易:

    • 如果买单数量等于卖单数量,两个订单都完全成交。

    • 如果买单数量大于卖单数量,买单部分成交,余额保留在买单队列中,等待后续卖单继续成交。

    • 如果卖单数量大于买单数量,卖单部分成交,余额保留在卖单队列中,等待新的买单匹配。

  5. 更新队列:
    成交后,已经完全或部分成交的订单从相应的队列中移除或更新。

  6. 记录成交:
    成交的订单信息会被记录到系统中,用于生成成交报告,更新股票价格等。

其它

撤销委托, 在数据列表里查找到想要撤销的委托记录,从数据结构中移除。

如个股属于注册制,需遵循注册制2%价格笼子。比较买入申报价格 是否比 实时价格高2%, 直接标记该笔买单为废单,不放入买单队列。  比较卖出申报价格 是否比实时价格 低2%, 直接标记该笔卖单为废单,不放入卖单队列。

实际A股交易系统当然没这么简单啦。这里随笔记录一篇。

原文链接: 【数据结构】闲谈A股实时交易的数据结构-队列

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

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

相关文章

2024高校网络安全管理运维赛wp

文章目录 misc签到钓鱼邮件识别easyshellSecretDBGatewayzipApachef for r webphpsqlMessy Mongo misc 签到 钓鱼邮件识别 两部分解base64,各一个flag 后面没有什么地方有有用信息了,根据题目钓鱼邮件,可能第三段flag就跟DMARC、DKIM 和 SP…

c#实现音乐的“vip播放功能”

文章目录 前言1. c#窗体2. 功能3. 具体实现3.1 添加文件3.2 音乐播放3.3 其他功能 4. 整体代码和窗口5. 依赖的第三方库 前言 最近在QQ音乐里重温周杰伦的歌,觉得好听到耳朵怀孕,兴起想要下载下来反复听,发现QQ音乐VIP歌曲下载下来的格式居然…

基于SSM的“游戏交易网站”的设计与实现(源码+数据库+文档+PPT)

基于SSM的“游戏交易网站”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 游戏交易网站功能结构图 游戏交易网站首页 游戏交易网站用户注册…

Android iw 工具

代码位置:Android/external/iw 查看支持的命令: console:/ # iw help Usage: iw [options] command Options:--debug enable netlink debugging--version show version (4.1) Commands:help [command]Print usage for all or a specific command, e.g."…

axios参数汇总

axios参数汇总 url: 用于请求的服务器 URL。 method: 创建请求时使用的方法,默认为 get baseURL: 自动加在 url 前面,除非 url 是绝对 URL transformRequest: 在发送请求前修改请求数据的函数,仅适用于 PUT, POST 和 PATCH 请求方法 它只能…

人工智能|机器学习——强大的 Scikit-learn 可视化让模型说话

一、显示 API 简介 使用 utils.discovery.all_displays 查找可用的 API。 Sklearn 的utils.discovery.all_displays可以让你看到哪些类可以使用。 from sklearn.utils.discovery import all_displays displays all_displays() displays Scikit-learn (sklearn) 总是会在新版本…

无人零售,重塑购物新纪元

在这个快节奏的时代,科技的每一次跃进都在悄无声息地改变着我们的生活方式。而今,无人零售正以雷霆之势,颠覆传统购物模式,为我们带来前所未有的便捷与智能体验。想知道无人零售如何彻底改变我们的购物方式吗?跟随我&a…

市场营销的酒店营销策略研究意义

在市场经济条件下,市场营销策略已成为企业经营管理中最重要的组成部分,其在企业管理中的地位日益显现出来。 然而,由于酒店营销环境的特殊性,酒店营销策略研究一直是咱们从业者研究的热点之一。 对于酒店营销策略的研究&#xf…

python from import 有这个文件但找不到路径

可能的问题: 模块文件路径不在Python解释器的搜索路径中 解决办法: 如果模块文件路径/path/abc.py不在Python解释器的搜索路径中,Python解释器会报错ModuleNotFoundError: No module named ‘abc’。这时候我们需要将模块文件路径添加到Pyth…

基于多目标灰狼算法的冷热电联供型微网低碳经济调度

针对冷热电联供型微电网运行调度的优化问题,为实现节能减排的目标,以微电网运行费用和环境污 染成本为优化目标,建立了包含风机、微型燃气轮机、余热锅炉、溴化锂吸收式制冷机等微源的微电网优化 模型。模型的优化求解使用改进的多目标灰狼优化算法,得到多目标问题的 Paret…

uts插件开发-继uniapp原生插件nativeplugins,uts插件开发可直接操作原生安卓sdk等,支持uniappx,支持源码授权价格等等

1.创建uts项目 2.创建uts插件cf-takepic 3.在index.uts中编写原生安卓代码,首先定义一个函数方法,在页面中看是否可引用成功 uts函数代码 /*** 拍照函数*/ export const takepicfunction():void{console.log("11111111") } index.vue代码 …

「PHP系列」PHP MySQL Order By/Update/Delete

文章目录 一、PHP MySQL Order By二、PHP MySQL Update三、PHP MySQL Delete四、相关链接 一、PHP MySQL Order By 在 PHP 中使用 MySQL 时,如果你想要按照某个字段(或字段的组合)对查询结果进行排序,你可以使用 ORDER BY 子句。…

大数据Scala教程从入门到精通第二篇:Scala入门

一:Scala入门 1:为什么学习Scala Spark新一代内存级大数据计算框架,是大数据的重要内容 Spark就是使用Scala编写的。因此为了更好的学习Spark,需要掌握Scala这门语言 Spark的兴起,带动Scala语言的发展! 2:Scala的发展…

详细分析Mybatis与MybatisPlus中分页查询的差异(附Demo)

目录 前言1. Mybatis2. MybatisPlus3. 实战 前言 更多的知识点推荐阅读: 【Java项目】实战CRUD的功能整理(持续更新)java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全) 本章节主要以Demo为例&#xff…

【JavaScript】执行栈和执行上下文

1. 执行上下文(Execution Context) 执行上下文是 JavaScript 中代码执行的环境的抽象概念,它包含了代码运行时所需的所有信息,比如变量的值、函数的引用等。 每当 JavaScript 代码执行前,都会创建一个执行上下文&…

简单聊下 Vue 3.0 和 React 18 框架有什么区别

Vue3 vs React 18:前端框架比较 随着Vue3和React 18的相继发布,前端开发领域再次迎来了技术革新的热潮。这两款框架各自迭代升级,不仅优化了原有特性,还引入了许多新概念,使得开发者在构建现代Web应用时拥有更多选择。…

C# winform 连接mysql数据库(navicat)

1.解决方案资源管理器->右键->管理NuGet程序包->搜索, 安装Mysql.Data 2.解决方案资源管理器->右键->添加->引用->浏览-> C:\Program Files (x86)\MySQL\MySQL Installer for Windows ->选择->MySql.Data.dll 3.解决方案资源管理器…

深入剖析Tomcat(七) 日志记录器

在看原书第六章之前,一直觉得Tomcat记日志的架构可能是个“有点东西”的东西。在看了第六章之后呢,额… 就这?不甘心的我又翻了翻logback与新版tomcat的源码,额…,日志架构原来也没那么神秘。本篇文章先过一遍原书内容…

Github 2024-05-07 开源项目日报 Tp10

根据Github Trendings的统计,今日(2024-05-07统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目4Jupyter Notebook项目2Python项目1Batchfile项目1非开发语言项目1Java项目1HTML项目1C#项目1从零开始构建你喜爱的技术 创建周期…

使用 Maximo REST API 创建 Object Structure

接前面的文章&#xff0c;今天通过编写Python脚本的方式使用 Maximo REST API 创建Object Structure。 创建 object structure 这里创建一个新的 Work Order Object Structure&#xff0c;命名为 MXAPIWO123。 import requestsurl "<maximo url>/api/os/mxintob…