{"id":22588423,"url":"https://github.com/654894017/matching-engine","last_synced_at":"2025-10-12T04:33:01.235Z","repository":{"id":260745190,"uuid":"882226136","full_name":"654894017/matching-engine","owner":"654894017","description":"A simple, fast match engine for trading基于事件溯源的全内存撮合引擎 单机10w/TPS","archived":false,"fork":false,"pushed_at":"2025-10-02T03:33:49.000Z","size":1799,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-02T05:36:05.268Z","etag":null,"topics":["event-sourcing","in-memory","matching-engine"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/654894017.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-02T08:24:43.000Z","updated_at":"2025-10-02T03:33:52.000Z","dependencies_parsed_at":"2024-11-02T09:25:10.414Z","dependency_job_id":"a73e8a78-e824-45de-a2dc-82da4e608af4","html_url":"https://github.com/654894017/matching-engine","commit_stats":null,"previous_names":["654894017/matching-engine"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/654894017/matching-engine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/654894017%2Fmatching-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/654894017%2Fmatching-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/654894017%2Fmatching-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/654894017%2Fmatching-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/654894017","download_url":"https://codeload.github.com/654894017/matching-engine/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/654894017%2Fmatching-engine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279010259,"owners_count":26084719,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["event-sourcing","in-memory","matching-engine"],"created_at":"2024-12-08T08:09:28.348Z","updated_at":"2025-10-12T04:33:01.205Z","avatar_url":"https://github.com/654894017.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"### 说明\n此项目是基于此[事件溯源框架](https://github.com/654894017/cqrs)实现的,撮合引擎只是基于该框架的上层应用.\n\n**https://github.com/654894017/cqrs**\n\n### 实现功能\n\n1. 市价单\n2. 限价单\n3. 集合竞价\n4. 取消订单\n5. 买卖n档查询\n### 市价单流程\n![7](image/7.png)\n\n### 限竞价流程\n\n![8](image/8.png)\n\n\n### 集合竞价\n给大家介绍一下集合竞价是怎么回事。\n\n目前我国沪深两市的集合竞价交易机制主要为：沪深两市集合竞价时间为9点15分至9点25分，14点57分至15点00分。即时行情显示内容包括证券代码、证券简称、前收盘价格、虚拟开盘参考价格、虚拟匹配量和虚拟未匹配量。\n\n在集合竞价过程中，9点15分至9点20分可以接收申报，也可以撤销申报，9点20分至9点25分可以接收申报，但不可以撤销申报。\n\n![1](image/1.png)\n\n集合竞价产生的开盘价需满足以下规则：\n\n（1）成交量最大。\n\n（2）高于开盘价的买入申报和低于开盘价的卖出申报全部成交。\n\n（3）与开盘价相同的买卖双方中有一方申报全部成交。\n\n特别地，如果产生最大成交量的价位有两个，若在上交所则选取中间价；若在深交所则选取离上日收盘价最近的价格。\n\n下面给出一个例子说明集合竞价后的开盘价如何确定：\n\n假设某天集合竞价阶段产生了五个交易价格。\n\n![2](image/2.png)\n\n那么接下来我们计算一下合计卖出或买入数量。将卖盘的手数从最低价开始累加（因为卖价越低越容易成交）；将买盘的手数从最高价开始累加（因为买价越高越容易成交）。\n\n得到如下结果：\n\n![3](image/3.png)\n\n然后我们计算一下哪个价格下累计成交手数最多，做法是取左右两端的较小值进行比较。\n\n![4](image/4.png)\n\n10.00元的成交量为43手，最大。那么集合竞价确定的开盘价就是10.00元。\n\n价格低于10.00元的卖出报价有9.99元：18手；9.98元：10手。\n\n价格高于10.00元的买入报价有10.01元：12手；10.03元：13手。\n\n那么根据：高于基准价格的买入申报和低于基准价格的卖出申报全部成交。买盘25手全部成交，卖盘剩余的3手与买入报价10.00元的成交。得到以下结果：\n\n![5](image/5.png)\n\n这时再根据：与开盘价相同的买卖双方中有一方申报全部成交。报价为10.00元的买盘15手全部成交。\n\n最后得到：\n\n![6](image/6.png)\n\n由此进入连续竞价阶段。\n\n### 如何通过事件溯源实现百万TPS全内存撮合交易引擎\n\nhttps://blog.csdn.net/luxianping/article/details/143323082","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F654894017%2Fmatching-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F654894017%2Fmatching-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F654894017%2Fmatching-engine/lists"}