【数据结构】闲谈A股实时交易的数据结构-队列
今天有点忙,特意早起,要不先写点什么。看到个股的红红绿绿, 突然兴起,要不写篇文章分析下A股交易的简易版数据结构。
在A股实时股票交易系统中,按照个人理解,大致会用队列来完成整个交易。队列(Queue)是一种重要的数据结构,用于管理和处理买单和卖单。队列是一种先进先出(FIFO, First-In-First-Out)的结构,确保了最早进入系统的订单会最先被处理。在交易系统中,分别维护买单队列和卖单队列有助于模拟市场的撮合机制。
买单队列(Bid Queue)
买单队列存储所有未成交的买单。每一笔买单包括股票代码、买入价格、买入数量等信息。这些买单根据价格以及时间优先级排序,一般实行价格优先(更高的出价优先匹配),时间优先(同一价格下,先提交的订单优先匹配)的原则。
卖单队列(Ask Queue)
卖单队列存储所有未成交的卖单。每一笔卖单也包括股票代码、卖出价格、卖出数量等信息。卖单队列的排序规则与买单队列相同,通常实行价格优先(更低的出价优先匹配),时间优先(同一价格下,先提交的订单优先匹配)的原则。
订单撮合
撮合过程是交易系统中的核心功能,买单队列和卖单队列将按照特定的规则进行匹配,以完成交易。以下是撮合过程的一般步骤:
-
提交订单:
交易者提交买单或卖单到交易系统中。 -
订单排队:
新提交的买单会加入到买单队列中,卖单加入到卖单队列中,根据价格和时间排序。 -
查找匹配订单:
将买单队列中出价最高的订单与卖单队列中要价最低的订单进行比较。如果买单的出价大于等于卖单的要价,则可以进行交易。 -
成交处理:
如果找到匹配订单,则根据双方的订单数量进行交易:-
如果买单数量等于卖单数量,两个订单都完全成交。
-
如果买单数量大于卖单数量,买单部分成交,余额保留在买单队列中,等待后续卖单继续成交。
-
如果卖单数量大于买单数量,卖单部分成交,余额保留在卖单队列中,等待新的买单匹配。
-
-
更新队列:
成交后,已经完全或部分成交的订单从相应的队列中移除或更新。 -
记录成交:
成交的订单信息会被记录到系统中,用于生成成交报告,更新股票价格等。
其它
撤销委托, 在数据列表里查找到想要撤销的委托记录,从数据结构中移除。
如个股属于注册制,需遵循注册制2%价格笼子。比较买入申报价格 是否比 实时价格高2%, 直接标记该笔买单为废单,不放入买单队列。 比较卖出申报价格 是否比实时价格 低2%, 直接标记该笔卖单为废单,不放入卖单队列。
实际A股交易系统当然没这么简单啦。这里随笔记录一篇。
原文链接: 【数据结构】闲谈A股实时交易的数据结构-队列
相关文章:

【数据结构】闲谈A股实时交易的数据结构-队列
今天有点忙,特意早起,要不先写点什么。看到个股的红红绿绿, 突然兴起,要不写篇文章分析下A股交易的简易版数据结构。 在A股实时股票交易系统中,按照个人理解,大致会用队列来完成整个交易。队列(…...

深入探索van Emde Boas树:原理、操作与C语言实现
van Emde Boas (vEB) 树是一种高效的数据结构,用于处理整数集合。它是由荷兰计算机科学家Jan van Emde Boas在1977年提出的。vEB树在处理整数集合的查找、插入、删除和迭代操作时,能够以接近最优的时间复杂度运行。vEB树特别适合于那些元素数量在某个较小…...

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-14-主频和时钟配置
前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…...

tomcat打开乱码修改端口
将UTF-8改成GBK 如果端口冲突,需要修改tomcat的端口...
03 JavaSE-- 访问控制权限、接口、抽象类、内部类、Object类、异常
1. Exception 异常 在 Java 中,异常分为两种主要类型:强制性异常(Checked Exceptions)和非强制性异常(Unchecked Exceptions)。 强制性异常(Checked Exceptions): 强制…...

free5gc+ueransim操作
启动free5gc容器 cd ~/free5gc-compose docker-compose up -d 记录虚拟网卡地址,eth0 ifconfig 查看并记录amf网元的ip地址 sudo docker inspect amf "IPAddress"那一行,后面记录的即是amf的ip地址 记录上述两个ip地址,完成UER…...

麦肯锡精英高效阅读法笔记
系列文章目录 如何有效阅读一本书笔记 读懂一本书笔记 麦肯锡精英高效阅读法笔记 文章目录 系列文章目录序章 无法读书的5个理由无法读书的理由① 忙于工作,没时间读书无法读书的理由② 不知应该读什么无法读书的理由③ 没读完的书不断增多无法读书的理由④ 工作繁…...

高速、简单、安全的以太彩光,锐捷网络发布极简以太全光 3.X 方案
从 2021 年 3 月正式推出到现在,锐捷网络极简以太全光方案已经走进第四个年头。IT 仍在不断向前发展,数字化进程深入,数字化业务增多,更广泛的终端设备接入企业级园区网络,对园区网络提出了更高的要求,例如…...
图书管理系统
一、图书管理系统菜单 🍓管理员菜单 1.查找图书 2.新增图书 3.删除图书 4.显示图书 0.退出系统 --------------------------------------------------------------------------------------------------------------------------------- 🌼用户菜…...

图解HTTP(2、简单的 HTTP 协议)
HTTP 协议用于客户端和服务器端之间的通信 请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一端称为服务器端。 通过请求和响应的交换达成通信 请求必定由客户端发出,而服务器端回复响应报文 请求报文是由请求方法、请求 URI、协议版本、…...
小鹅知识付费系统登录,网课怎么推广与宣传?有啥获客方法?
现在很多教育机构都开始做网络课程,同行之间的竞争也愈发激烈,机构的网课想要盈利就需要对课程进行宣传推广,网课要怎么推广和宣传呢? 在线课程要想推广获客方法有几种,不同推广方法获客效果也是不同的,只有…...

韩顺平0基础学Java——第5天
p72——p86 今天同学跟我说别学java,真的吗?唉,先把这视频干完吧。 逻辑运算符练习 x6,y6 x6,y5 x11,y6 x11,y5 z48 错了&a…...
单片机为什么能直接烧录程序?
在设计芯片的时候,关于烧录的环节是一个不得不考虑的问题。首先排除掉,由外部硬件直接操控FLASH的方案,这个方案有很多缺点。 1、每个IC使用的FLASH型号各不相同,每种型号的FLASH的烧录命令和流程都有差别,这会导致烧…...

【Linux】25. 网络基础(一)
网络基础(一) 计算机网络背景 网络发展 独立模式: 计算机之间相互独立; 网络互联: 多台计算机连接在一起, 完成数据共享; 其实本质上一台计算机内部也是一个小型网络结构(如果我们将计算机内部某个硬件不存放在电脑中,而是拉根长长的线进行连接。这其实也就是网…...

项目经理【人】任务
系列文章目录 【引论一】项目管理的意义 【引论二】项目管理的逻辑 【环境】概述 【环境】原则 【环境】任务 【环境】绩效 【人】概述 【人】原则 【人】任务 一、定义团队的基本规则&塔克曼阶梯理论 1.1 定义团队的基本规则 1.2 塔克曼阶梯理论 二、项目经理管理风格 …...
Linux学习(嵌入式硬件知识)
GPU和CPU GPU(Graphics Processing Unit,图形处理单元)和 CPU(Central Processing Unit,中央处理单元)是计算机中两种不同的处理器。它们在功能、设计和用途上有所不同。 CPU(中央处理单元&…...

英语学习笔记4——Is this your ...?
Is this your …? 词汇 Vocabulary suit /sut/ n. 西装,正装 suit 的配套: shirt n. 衬衫tie n. 领带,领结belt n. 腰带trousers n. 裤子shoes n. 鞋子 school /skuːl/ n. 学校 所有学校 搭配:middle school 初中 hig…...

Hive Bucketed Tables 分桶表
Hive Bucketed Tables 分桶表 1.分桶表概念 2.分桶规则 3.语法 4.分桶表的创建 5.分桶表的好处...

【拆位法 决策包容性 位运算】2871. 将数组分割成最多数目的子数组
本文涉及知识点 拆位法 贪心 位运算 决策包容性 位运算、状态压缩、子集状态压缩汇总 LeetCode2871. 将数组分割成最多数目的子数组 给你一个只包含 非负 整数的数组 nums 。 我们定义满足 l < r 的子数组 nums[l…r] 的分数为 nums[l] AND nums[l 1] AND … AND nums[r…...

Java 线程池 ( Thread Pool )的简单介绍
想象一下,你正指挥着一支超级英雄团队,面对蜂拥而至的敌人(任务),不是每次都召唤新英雄(创建线程),而是精心调配现有成员,高效应对。这就是Java线程池的魔力,…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...

stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...