cfquant 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- LTtx/__init__.py +2 -0
- LTtx/tx/Config.txt +8 -0
- LTtx/tx/LTtx_server.py +1177 -0
- LTtx/tx/__init__.py +5 -0
- LTtx/tx/tx.py +1935 -0
- cfquant/__init__.py +26 -0
- cfquant/account_routing.py +119 -0
- cfquant/channels.py +76 -0
- cfquant/cli.py +266 -0
- cfquant/client.py +365 -0
- cfquant/config.py +86 -0
- cfquant/hub.py +304 -0
- cfquant/logging_i18n.py +348 -0
- cfquant/normal_bridge.py +676 -0
- cfquant/pipe_bridge.py +249 -0
- cfquant/pipe_client.py +223 -0
- cfquant/pipe_hub.py +602 -0
- cfquant/pipe_transport.py +493 -0
- cfquant/protocol.py +238 -0
- cfquant/qmt_bridge.py +1081 -0
- cfquant/runtime_report.py +334 -0
- cfquant/tx.py +1898 -0
- cfquant/tx_trade_bridge.py +1905 -0
- cfquant/version.py +5 -0
- cfquant/xtconstant.py +262 -0
- cfquant/xtdata.py +462 -0
- cfquant/xttrader.py +955 -0
- cfquant/xttype.py +586 -0
- cfquant-0.2.0.dist-info/LICENSE +21 -0
- cfquant-0.2.0.dist-info/METADATA +144 -0
- cfquant-0.2.0.dist-info/RECORD +90 -0
- cfquant-0.2.0.dist-info/WHEEL +5 -0
- cfquant-0.2.0.dist-info/entry_points.txt +4 -0
- cfquant-0.2.0.dist-info/top_level.txt +6 -0
- cfquant_pipe_hub.py +45 -0
- cfquant_web_server.py +12137 -0
- qmt_scripts/CFQUANT.py +507 -0
- qmt_scripts/CFQUANT_CTYPE_ALL_LOWLAT.py +830 -0
- qmt_scripts/CFQUANT_LITE.py +4928 -0
- qmt_scripts/CFQUANT_TRADE_LOWLAT.py +382 -0
- qmt_scripts/__init__.py +1 -0
- qmt_scripts//321/205/320/240/320/234/321/210/342/224/244/320/266/321/205/320/237/342/225/226/321/207/320/233/320/274/321/207/320/273/320/233/321/205/342/225/225/320/222/321/205/320/254/342/225/221/CFQUANT_CTYPE_ALL_LOWLAT_SH.py +866 -0
- qmt_scripts//321/205/320/240/320/234/321/210/342/224/244/320/266/321/205/320/237/342/225/226/321/207/320/233/320/274/321/207/320/273/320/233/321/205/342/225/225/320/222/321/205/320/254/342/225/221/CFQUANT_CTYPE_ALL_LOWLAT_SZ.py +866 -0
- qmt_scripts//321/205/320/240/320/234/321/210/342/224/244/320/266/321/205/320/237/342/225/226/321/207/320/233/320/274/321/207/320/273/320/233/321/205/342/225/225/320/222/321/205/320/254/342/225/221/CFQUANT_LITE_SH.py +5020 -0
- qmt_scripts//321/205/320/240/320/234/321/210/342/224/244/320/266/321/205/320/237/342/225/226/321/207/320/233/320/274/321/207/320/273/320/233/321/205/342/225/225/320/222/321/205/320/254/342/225/221/CFQUANT_LITE_SZ.py +5020 -0
- qmt_scripts//321/205/320/240/320/234/321/210/342/224/244/320/266/321/205/320/237/342/225/226/321/207/320/233/320/274/321/207/320/273/320/233/321/205/342/225/225/320/222/321/205/320/254/342/225/221/CFQUANT_TRADE_LOWLAT_SH.py +436 -0
- qmt_scripts//321/205/320/240/320/234/321/210/342/224/244/320/266/321/205/320/237/342/225/226/321/207/320/233/320/274/321/207/320/273/320/233/321/205/342/225/225/320/222/321/205/320/254/342/225/221/CFQUANT_TRADE_LOWLAT_SZ.py +436 -0
- qmt_scripts//321/205/320/240/320/234/321/210/342/224/244/320/266/321/205/320/237/342/225/226/321/207/320/233/320/274/321/207/320/273/320/233/321/205/342/225/225/320/222/321/205/320/254/342/225/221/readme.md +95 -0
- web_dashboard/__init__.py +1 -0
- web_dashboard/app.js +9847 -0
- web_dashboard/avatars/amber-pulse.svg +15 -0
- web_dashboard/avatars/copper-grid.svg +15 -0
- web_dashboard/avatars/market-blue.svg +15 -0
- web_dashboard/avatars/rose-circuit.svg +15 -0
- web_dashboard/avatars/signal-green.svg +15 -0
- web_dashboard/avatars/slate-wave.svg +15 -0
- web_dashboard/avatars/teal-orbit.svg +16 -0
- web_dashboard/avatars/violet-node.svg +15 -0
- web_dashboard/favicon.svg +5 -0
- web_dashboard/image/qmt_deploy/image-10.png +0 -0
- web_dashboard/image/qmt_deploy/image-11.png +0 -0
- web_dashboard/image/qmt_deploy/image-12.png +0 -0
- web_dashboard/image/qmt_deploy/image-13.png +0 -0
- web_dashboard/image/qmt_deploy/image-14.png +0 -0
- web_dashboard/image/qmt_deploy/image-15.png +0 -0
- web_dashboard/image/qmt_deploy/image-16.png +0 -0
- web_dashboard/image/qmt_deploy/image-17.png +0 -0
- web_dashboard/image/qmt_deploy/image-18.png +0 -0
- web_dashboard/image/qmt_deploy/image-19.png +0 -0
- web_dashboard/image/qmt_deploy/image-20.png +0 -0
- web_dashboard/image/qmt_deploy/image-21.png +0 -0
- web_dashboard/image/qmt_deploy/image-4.png +0 -0
- web_dashboard/image/qmt_deploy/image-5.png +0 -0
- web_dashboard/image/qmt_deploy/image-6.png +0 -0
- web_dashboard/image/qmt_deploy/image-7.png +0 -0
- web_dashboard/image/qmt_deploy/image-8.png +0 -0
- web_dashboard/image/qmt_deploy/image-9.png +0 -0
- web_dashboard/image//321/211/320/220/320/252/321/207/320/244/320/270/321/206/320/270/320/261/321/205/342/225/235/320/237/321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/image-1.png +0 -0
- web_dashboard/image//321/211/320/220/320/252/321/207/320/244/320/270/321/206/320/270/320/261/321/205/342/225/235/320/237/321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/image-2.png +0 -0
- web_dashboard/image//321/211/320/220/320/252/321/207/320/244/320/270/321/206/320/270/320/261/321/205/342/225/235/320/237/321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/image-3.png +0 -0
- web_dashboard/image//321/211/320/220/320/252/321/207/320/244/320/270/321/206/320/270/320/261/321/205/342/225/235/320/237/321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/image.png +0 -0
- web_dashboard/image//321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/1783479325179.png +0 -0
- web_dashboard/image//321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/1783479745262.png +0 -0
- web_dashboard/image//321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/1783480178700.png +0 -0
- web_dashboard/image//321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/1783480428759.png +0 -0
- web_dashboard/image//321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/1783489807217.png +0 -0
- web_dashboard/image//321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/1783490503491.png +0 -0
- web_dashboard/index.html +2317 -0
- web_dashboard/styles.css +7817 -0
- web_dashboard/vendor/mermaid.min.js +2029 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: cfquant
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: QMT local bridge and xtquant-compatible Python client.
|
|
5
|
+
License: MIT
|
|
6
|
+
Requires-Python: >=3.8
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Requires-Dist: pandas >=1.0
|
|
10
|
+
Requires-Dist: packaging >=20
|
|
11
|
+
Requires-Dist: psutil >=5.8
|
|
12
|
+
Requires-Dist: pytz
|
|
13
|
+
Requires-Dist: tabulate
|
|
14
|
+
Requires-Dist: pandas-market-calendars
|
|
15
|
+
Requires-Dist: importlib-resources >=5 ; python_version < "3.9"
|
|
16
|
+
Provides-Extra: dev
|
|
17
|
+
Requires-Dist: build >=1.0 ; extra == 'dev'
|
|
18
|
+
Requires-Dist: twine >=5.0 ; extra == 'dev'
|
|
19
|
+
Provides-Extra: zmq
|
|
20
|
+
Requires-Dist: pyzmq >=25 ; extra == 'zmq'
|
|
21
|
+
|
|
22
|
+
# cfquant
|
|
23
|
+
|
|
24
|
+
<p>
|
|
25
|
+
<a href="https://github.com/95ge/cfquant/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/95ge/cfquant?style=flat&logo=github&label=Stars" height="18" /></a>
|
|
26
|
+
<a href="https://github.com/95ge/cfquant/network/members"><img alt="GitHub forks" src="https://img.shields.io/github/forks/95ge/cfquant?style=flat&logo=github&label=Forks" /></a>
|
|
27
|
+
<a href="https://github.com/95ge/cfquant/issues"><img alt="GitHub issues" src="https://img.shields.io/github/issues/95ge/cfquant?style=flat&logo=github&label=Issues" /></a>
|
|
28
|
+
<a href="https://github.com/95ge/cfquant/commits/main"><img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/95ge/cfquant?style=flat&logo=git&label=Last%20commit" /></a>
|
|
29
|
+
<a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg?style=flat" /></a>
|
|
30
|
+
<img alt="Python 3.8 to 3.12" src="https://img.shields.io/badge/Python-3.8--3.12-blue?style=flat&logo=python&logoColor=white" />
|
|
31
|
+
</p>
|
|
32
|
+
|
|
33
|
+
#### 1、cfquant 是将大QMT转为类miniqmt来使用。它让外部 Python 程序和 Web 控制台可以使用大 QMT 的行情、查询、交易和回调能力,并尽量保持接近 `xtquant` 的调用方式。
|
|
34
|
+
|
|
35
|
+
#### 2、支持交易委托,交易回调,全推行情推送,行情查询,数据下载等功能。
|
|
36
|
+
|
|
37
|
+
#### 3、高兼容miniqmt,几乎不用改您原来的miniqmt策略,还是一样的使用。
|
|
38
|
+
|
|
39
|
+
#### 3、总之,您可以在部署项目后在您的程序中无感使用miniqmt。
|
|
40
|
+
|
|
41
|
+
#### 4、部署稍微比较复杂,请您耐心~~~,欢迎提功能与需求,让miniqmt再一次伟大!
|
|
42
|
+
|
|
43
|
+
#### 5、官网与反馈:[www.cfquant.org](https://cfquant.org)
|
|
44
|
+
|
|
45
|
+
## 快速开始
|
|
46
|
+
|
|
47
|
+
### 环境要求
|
|
48
|
+
|
|
49
|
+
- Windows
|
|
50
|
+
- 已安装并登录大 QMT
|
|
51
|
+
- Python `3.8` - `3.12`,生产环境优先使用 `3.10` 或 `3.12`
|
|
52
|
+
|
|
53
|
+
### 启动步骤
|
|
54
|
+
|
|
55
|
+
1. 将项目解压到固定目录,例如 `D:\cfquant`。
|
|
56
|
+
2. 在项目目录安装依赖:
|
|
57
|
+
|
|
58
|
+
```powershell
|
|
59
|
+
cd D:\cfquant
|
|
60
|
+
pip install -r requirements.txt
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
3. 运行 `启动cfquant.bat`。
|
|
64
|
+
4. 打开 <http://127.0.0.1:8765/>,按网页中的“新手初始化向导”完成账号、模式和 QMT 目录配置。
|
|
65
|
+
5. 在 QMT 中加载对应的入口脚本,回到网页验证资金、持仓、委托和行情。
|
|
66
|
+
|
|
67
|
+
新用户建议先使用**通用模式**。一个 QMT 加载一个入口脚本即可完成大多数部署。
|
|
68
|
+
|
|
69
|
+
## 模式选择
|
|
70
|
+
|
|
71
|
+
| 模式 | QMT 入口 | 适用场景 |
|
|
72
|
+
|---|---|---|
|
|
73
|
+
| 通用模式 | `CFQUANT_CTYPE_ALL_LOWLAT.py` | 默认选择,适合大多数用户和单账号部署 |
|
|
74
|
+
| 极致模式 | `CFQUANT_LITE.py` | QMT 有白名单限制、无法导入 `cfquant` 包时使用 |
|
|
75
|
+
| 高级模式 | 普通 QMT 加载 `CFQUANT.py`,极速交易端加载 `CFQUANT_TRADE_LOWLAT.py` | 需要进一步降低下单、撤单延迟时使用 |
|
|
76
|
+
|
|
77
|
+
高级模式需要同时打开两个 QMT,不能在同一个 QMT 中同时加载两个入口。
|
|
78
|
+
|
|
79
|
+
## Python 接入
|
|
80
|
+
|
|
81
|
+
从 PyPI 安装:
|
|
82
|
+
|
|
83
|
+
```powershell
|
|
84
|
+
pip install cfquant
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
示例:
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
from cfquant import xtdata
|
|
91
|
+
|
|
92
|
+
tick = xtdata.get_full_tick(["000001.SZ"])
|
|
93
|
+
print(tick)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
`cfquant` 默认使用 `transport=auto`,通常不需要手动配置通信通道。完整导入方式、路由规则和特殊部署方式见[外部 Python 接入](docs/外部Python接入.md)。
|
|
97
|
+
|
|
98
|
+
## Web 控制台
|
|
99
|
+
|
|
100
|
+
Web 控制台提供账号绑定、资金持仓、委托成交、下单撤单、行情订阅、接口调试、部署教程和更新管理。
|
|
101
|
+
|
|
102
|
+
常用脚本:
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
启动cfquant.bat 启动
|
|
106
|
+
停止cfquant.bat 停止
|
|
107
|
+
重启cfquant.bat 重启
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## 文档
|
|
111
|
+
|
|
112
|
+
| 需求 | 文档 |
|
|
113
|
+
|---|---|
|
|
114
|
+
| 通用模式部署 | [通用模式部署指南](docs/通用模式部署指南.md) |
|
|
115
|
+
| 极致模式部署 | [极致模式部署指南](docs/极致模式部署指南.md) |
|
|
116
|
+
| 高级模式部署 | [高级模式部署指南](docs/高级模式部署指南.md) |
|
|
117
|
+
| 账号和 QMT 目录配置 | [Web 账号运行配置说明](docs/Web账号运行配置说明.md) |
|
|
118
|
+
| 从 miniQMT 迁移 | [miniQMT 迁移到大 QMT 指南](docs/miniQMT迁移到大QMT指南.md) |
|
|
119
|
+
| `xtdata` 兼容性 | [xtdata 平替追踪](docs/xtdata平替追踪.md) |
|
|
120
|
+
| `xttrader` 兼容性 | [xttrader 平替追踪](docs/xttrader平替追踪.md) |
|
|
121
|
+
| 接口能力范围 | [QMT 函数封装能力清单](docs/QMT函数封装能力清单.md) |
|
|
122
|
+
| 日志、更新和回滚 | [运维与更新](docs/运维与更新.md) |
|
|
123
|
+
| 版本变化 | [版本日志](docs/版本日志.md) |
|
|
124
|
+
|
|
125
|
+
更详细的图文教程也可以直接在 Web 控制台的“教程”页面查看。
|
|
126
|
+
|
|
127
|
+
## Star History
|
|
128
|
+
|
|
129
|
+
<a href="https://star-history.com/#95ge/cfquant&Date"><img src="https://api.star-history.com/svg?repos=95ge%2Fcfquant&type=Date" alt="Star History Chart" width="500" /></a>
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
## 项目交流群
|
|
134
|
+
<img src="ba67bb2fcfa8a067d2c8249656248449.jpg" alt="cfquant 项目交流群二维码" width="280" />
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
## 联系作者
|
|
138
|
+
- #### 地球号:shcfquant,请注明来意
|
|
139
|
+
- #### 邮箱:litaoflyme@163.com
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
## 许可证
|
|
143
|
+
|
|
144
|
+
本项目采用 [MIT License](LICENSE) 开源。
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
cfquant_pipe_hub.py,sha256=yzeAO1HNZwBj5fS6fedK55LvTqotCR7nMVy4eAKd6rY,1591
|
|
2
|
+
cfquant_web_server.py,sha256=dh6VVy9yRCV_dYH58sPmPQXhs-YdwuYZbFEjHNujL7c,517366
|
|
3
|
+
LTtx/__init__.py,sha256=t2x8eVcFu7nk0Sakws_0Th7Cs6iUDJjT6s6_X_rAwDQ,101
|
|
4
|
+
LTtx/tx/Config.txt,sha256=ARD1L2rNZTZbllogliQRHc9jys528_g1-3rI9cZUoHI,376
|
|
5
|
+
LTtx/tx/LTtx_server.py,sha256=vgbDgvzcQ8ODIhL74_7_zZ-9A8YnTiVlgE1Ef6NwHp4,40515
|
|
6
|
+
LTtx/tx/__init__.py,sha256=pIY4e75Y7jFpdvCYGxXivINuZ5--trz28cwGDC9IS20,45
|
|
7
|
+
LTtx/tx/tx.py,sha256=Z-wJBVsxtXg4x91mgq7IZP9m4R6xReShqKAWC4wNiok,73200
|
|
8
|
+
cfquant/__init__.py,sha256=fn6CKa3BgdTbj6WbU5eGvUcONMER9MpRz1c49pXoSvQ,639
|
|
9
|
+
cfquant/account_routing.py,sha256=1LcHH850ZKLeqmlUIyEmyMpKyHyZCX85frLYdhCIFis,4709
|
|
10
|
+
cfquant/channels.py,sha256=NjJK3CBwfMcNTSqplvVh0AuLZ0abWmmsXZ4m5wEkZis,2629
|
|
11
|
+
cfquant/cli.py,sha256=20fHwYbQWv78hRtznHeYtevG4lAtJYQbtHtWi8EqvM8,9528
|
|
12
|
+
cfquant/client.py,sha256=JGza0GOFRk1oAkNIfQgqX0wuODDPKxVUlC8-zU9x32M,11976
|
|
13
|
+
cfquant/config.py,sha256=Pkoug1YqMFJWUY-62bB66x0V7TGMnEeL-za0VFxkznM,3299
|
|
14
|
+
cfquant/hub.py,sha256=DmdVirJPAOLhrLm-_ERE9tP2oEac0Kchiagd-fbRumg,11235
|
|
15
|
+
cfquant/logging_i18n.py,sha256=czUI0_SvsZwcDEJlFB-VGM6S3FLZcr4kpIJ5JBWNHPc,16313
|
|
16
|
+
cfquant/normal_bridge.py,sha256=yUVFUTUTdcr09WHR57RsX6OGSH_-I4Aj3PN4rbU6UsE,26821
|
|
17
|
+
cfquant/pipe_bridge.py,sha256=uEPnjIVvcUFgFE8qLTU6verq4EIOTNUt5gVBEQT0SRI,7575
|
|
18
|
+
cfquant/pipe_client.py,sha256=ILezR1dtXqEYlhxxkjsaiPG4jcLCbBa82EEwfEGCsjQ,8518
|
|
19
|
+
cfquant/pipe_hub.py,sha256=QF1fXGkljWPvelBXyf_P3Lr2cORsnDV_j-W0GaxqaT4,25303
|
|
20
|
+
cfquant/pipe_transport.py,sha256=TlHMLz7f8GzTFn6IwTSarmiHJYR8Ln2gHesV0BZYIEA,16647
|
|
21
|
+
cfquant/protocol.py,sha256=6-gsaqgTsIpA6Rflnp-0NrymIXCCaqaOJ25DMXPalY4,6777
|
|
22
|
+
cfquant/qmt_bridge.py,sha256=_8PAql-idFBLJJOrGacvTVqx1z7VsiiYiktFI7cbwzc,44561
|
|
23
|
+
cfquant/runtime_report.py,sha256=y11AirgsMZW_I8f1xf_rVicAZaeYUwkPcy9CscEaZuM,12094
|
|
24
|
+
cfquant/tx.py,sha256=NT_As1CVhcZykd6T4V4tLAGcNarz5qV2g6_wt8b_f1o,71634
|
|
25
|
+
cfquant/tx_trade_bridge.py,sha256=VSviGH7TpD1RBWRHCdZiSkrMuaUXgQtnhJDJIwEjbtk,85343
|
|
26
|
+
cfquant/version.py,sha256=rMmx_UA6mc12rNUvL5GGs7Di3ZU-h0j8JZE1vx3htoM,128
|
|
27
|
+
cfquant/xtconstant.py,sha256=FlznouVZ_RhsaU91yEV7pMrhO_zlAMLZU_IWTvJhzsk,7384
|
|
28
|
+
cfquant/xtdata.py,sha256=cmm5VSo67Heyl8-PfzZhigxbPxZuF_400e8BI9lfIj0,14407
|
|
29
|
+
cfquant/xttrader.py,sha256=-9iIx7tevxMyt3CeJWeODo30NxldfPXfU8y0aPWl2t0,36666
|
|
30
|
+
cfquant/xttype.py,sha256=7x-gI7L5nZikZV8bqAOFQm4NKJRA135Gpy2zyKR1hxw,18248
|
|
31
|
+
qmt_scripts/CFQUANT.py,sha256=Hqh0wjme8_ylm9J5Rkvz5SrnNQyoN1oV4fZxAIBJ_kI,17650
|
|
32
|
+
qmt_scripts/CFQUANT_CTYPE_ALL_LOWLAT.py,sha256=0WFdmwzXkbXDQ8FzKd3LFEw6r3PMsc-JapH8JsWwkJo,31565
|
|
33
|
+
qmt_scripts/CFQUANT_LITE.py,sha256=X9Pm_cQlNgRxIVwuiVPcRNT9zmFhSIUwburfr-IsrGY,199986
|
|
34
|
+
qmt_scripts/CFQUANT_TRADE_LOWLAT.py,sha256=cyeGYmcYzCcABmhRm0FGOqi-b4rmFY7BjKRFd2R8GO8,13775
|
|
35
|
+
qmt_scripts/__init__.py,sha256=1fODetCEggZaIbaus0zqvY9ydy56nu-HqSfvFvAPjr0,55
|
|
36
|
+
qmt_scripts/同账号独立市场/CFQUANT_CTYPE_ALL_LOWLAT_SH.py,sha256=nzVz_Hx6SX568cYvZ0JNhpTEaG4MRyuxMDxnFuBS3J4,33149
|
|
37
|
+
qmt_scripts/同账号独立市场/CFQUANT_CTYPE_ALL_LOWLAT_SZ.py,sha256=196TeGeasMlObhqTVwecScokCovGB35sfhQQf_pVQd0,33149
|
|
38
|
+
qmt_scripts/同账号独立市场/CFQUANT_LITE_SH.py,sha256=4McY9o3ItvqWnZW8FfuyksgAT2z3wyErEVf8zKbzOVE,204399
|
|
39
|
+
qmt_scripts/同账号独立市场/CFQUANT_LITE_SZ.py,sha256=HXUWPM5Ii9o4DV3t4lliFWEnxM2mzdP7Bd70_K2fDvE,204399
|
|
40
|
+
qmt_scripts/同账号独立市场/CFQUANT_TRADE_LOWLAT_SH.py,sha256=TQ-ygN6AyN4RxFTGO7XLfvKfoYhCFrlxuBCJaPheEF0,15944
|
|
41
|
+
qmt_scripts/同账号独立市场/CFQUANT_TRADE_LOWLAT_SZ.py,sha256=VJ0LZYj7cJgxT_0xv9qAX0LlpEFRzI6wDa76YNt9pPE,15944
|
|
42
|
+
qmt_scripts/同账号独立市场/readme.md,sha256=5bVTtYki3N77-n7hSsI6aAttuqJZbMwf6pRIH8PHoaA,4051
|
|
43
|
+
web_dashboard/__init__.py,sha256=Qt8vBIpPWlVRZY4FTVABtMTCGIdauur2sWO51z4vV5c,57
|
|
44
|
+
web_dashboard/app.js,sha256=QsYMh1K-Q7Z6pQJ2ek5KpYJHkWExppkdL6gE33WyfkQ,418727
|
|
45
|
+
web_dashboard/favicon.svg,sha256=_z9RxN89PMUSAud_Z74MhzSNa-9IIfoM8OZeaN2z62s,529
|
|
46
|
+
web_dashboard/index.html,sha256=cQeTq8Y893tYQ5YRrrU15yi99b1ny_ds3uupmdHh7wU,129133
|
|
47
|
+
web_dashboard/styles.css,sha256=PrUf1H2z1C6epr9CPrrQkmj0RW6FSVMAtfHcoww8M9A,138129
|
|
48
|
+
web_dashboard/avatars/amber-pulse.svg,sha256=A8dajfMhHmInBYQgwLLYdYUbQVpUzenHEz9amR-sJ3E,855
|
|
49
|
+
web_dashboard/avatars/copper-grid.svg,sha256=EdUyzII06QEQVZDzY7KYoAJ9Kkghou0PHY_2gATQgi4,805
|
|
50
|
+
web_dashboard/avatars/market-blue.svg,sha256=M9KENopAritvoJKgFQ0Z0oMUYd0nF8jE58gyd4TYyqw,779
|
|
51
|
+
web_dashboard/avatars/rose-circuit.svg,sha256=2j1jIpIwTi8u63F8QbEF9ieYI0SSEe41fuForx7jlPY,887
|
|
52
|
+
web_dashboard/avatars/signal-green.svg,sha256=KY5jBC3m5nCV5Hn0xeTRcnfRyd88xaP3y8zVzAVbr48,834
|
|
53
|
+
web_dashboard/avatars/slate-wave.svg,sha256=bFJk5k_Gr42DXqRQles52wMgZZKwbPCCSSfR8Sb1LHE,807
|
|
54
|
+
web_dashboard/avatars/teal-orbit.svg,sha256=u4taR3T42cjRsVm827CZ8y4xKq9FlECa0cFngX_wdWk,879
|
|
55
|
+
web_dashboard/avatars/violet-node.svg,sha256=1N0P9buYupDb0iDQq4WGphASfSu0ZFPsZEHiNlgSR4I,815
|
|
56
|
+
web_dashboard/image/qmt_deploy/image-10.png,sha256=2ecciHr1RNoa7yo060aRMplGFiL5HuraFvTnMd-0PiQ,515065
|
|
57
|
+
web_dashboard/image/qmt_deploy/image-11.png,sha256=t6qqQ832vvn93qVnzzaUdXlxBr-vT5yzRQ6i19OvzVc,434371
|
|
58
|
+
web_dashboard/image/qmt_deploy/image-12.png,sha256=u3RzOTs7w5YZqvkTEufDdzPOVHY3dCqcdOJkVbqd9IM,267638
|
|
59
|
+
web_dashboard/image/qmt_deploy/image-13.png,sha256=CV-t8qM2skxjKwC4Kr_NbcBD-APKW16uLOjZuZygvtM,446187
|
|
60
|
+
web_dashboard/image/qmt_deploy/image-14.png,sha256=L6FnwlzKvj92moR2Iq26JlacLwgRktg2ZUnj9V-AnYE,276052
|
|
61
|
+
web_dashboard/image/qmt_deploy/image-15.png,sha256=L6FnwlzKvj92moR2Iq26JlacLwgRktg2ZUnj9V-AnYE,276052
|
|
62
|
+
web_dashboard/image/qmt_deploy/image-16.png,sha256=yLrUqJNxpyPtMiyc4KGD3bPFWEjxQy0r35tLUWCfmVA,290526
|
|
63
|
+
web_dashboard/image/qmt_deploy/image-17.png,sha256=yxlhXwgBnt5tUkmK5ATJUdD1AG_dshNK7LFmp_icc_k,197373
|
|
64
|
+
web_dashboard/image/qmt_deploy/image-18.png,sha256=ozIYiTAdUe0HoYjqgz4qrNooG8tPjBY3xN5whue7OHc,451314
|
|
65
|
+
web_dashboard/image/qmt_deploy/image-19.png,sha256=pcnRzPQdnPf1qDHXf8f1miNd5JeMYeD2tqFz7QEzLzY,247341
|
|
66
|
+
web_dashboard/image/qmt_deploy/image-20.png,sha256=Vy4xoUaVyy6VMeq-6nKRgdXAQduOlfXFa3-KYFTLn48,83858
|
|
67
|
+
web_dashboard/image/qmt_deploy/image-21.png,sha256=VmsGmmElsKRQbsa1ENYUCQE5lSsmLDc874kZOVr8ZCY,229935
|
|
68
|
+
web_dashboard/image/qmt_deploy/image-4.png,sha256=__jLMWPj2gRgUabM1Z5HTddEh8jFusCD0N0U-sK3_UE,267433
|
|
69
|
+
web_dashboard/image/qmt_deploy/image-5.png,sha256=rF3xE9X04fvoql4Y8mYnul4GLdYejKLreNziWDC0TDg,111745
|
|
70
|
+
web_dashboard/image/qmt_deploy/image-6.png,sha256=dRGrPepPhd7BS-G8DzxYsf4W5pkPsyn-KnWY8UJZzF4,447522
|
|
71
|
+
web_dashboard/image/qmt_deploy/image-7.png,sha256=N_ixzcgv-TVD_wRZiX_PRcKSBJYU4mmn3GqJ2BtuqIg,291555
|
|
72
|
+
web_dashboard/image/qmt_deploy/image-8.png,sha256=fNeaovZZuTze8fq6XhpKGlhSbcRbtP-wqjfTxbZX1OA,119320
|
|
73
|
+
web_dashboard/image/qmt_deploy/image-9.png,sha256=2RjcQs4eSGZVjWPRAzsT9x-CCblGcFDCRAMHPAPPGvw,179592
|
|
74
|
+
web_dashboard/image/通用模式部署指南/image-1.png,sha256=R8Y1VfxN0vHJzkeu0YqIxehc2qvWFqowiUFzZZRks64,214836
|
|
75
|
+
web_dashboard/image/通用模式部署指南/image-2.png,sha256=mQ8kv6E_3Fz5_1fwKREshz97mKgmRBnuEFR-F7aN2a8,56699
|
|
76
|
+
web_dashboard/image/通用模式部署指南/image-3.png,sha256=jxlGS0S1tFIYaPTukiBZLf1INdg9P0cBsZUiw3hBaWE,166306
|
|
77
|
+
web_dashboard/image/通用模式部署指南/image.png,sha256=XvZyCglEBV2Nuiinx8GW4o2PetpteFAcwEA70EChyoo,355851
|
|
78
|
+
web_dashboard/image/部署指南/1783479325179.png,sha256=76HYt5AmzzsejO2xABPooM4a8t-gNngpjwS2EbzS7Jg,103127
|
|
79
|
+
web_dashboard/image/部署指南/1783479745262.png,sha256=Xci4fQvgRyQYeyQiQMQ5-zVHwOxzorKsedSDM9jP9Is,348604
|
|
80
|
+
web_dashboard/image/部署指南/1783480178700.png,sha256=C4J-xD8eInhNijYiWBQXyHCZo5947KOY7xz7T9Fi55Q,179425
|
|
81
|
+
web_dashboard/image/部署指南/1783480428759.png,sha256=jFinWC5-n43szQYHZmhzDqNH0c3eeTlhsFw2bQnN_LQ,242543
|
|
82
|
+
web_dashboard/image/部署指南/1783489807217.png,sha256=-b4xr4ob45aXAUXDJKRO1R4FS0BOgkTuFYTBXalqCK4,218754
|
|
83
|
+
web_dashboard/image/部署指南/1783490503491.png,sha256=K461xslfXVCGmc3cVaMgngX8KpiU5fd-w4UCopSZoG8,364637
|
|
84
|
+
web_dashboard/vendor/mermaid.min.js,sha256=HpzWq72z6pNa82lnwLmXNA95K5sPP2Yl02VjunmRIaU,3337746
|
|
85
|
+
cfquant-0.2.0.dist-info/LICENSE,sha256=qyc4PnAx3WmPGaC0aLajgNXM67K5wklMO7FsslCUDD8,1060
|
|
86
|
+
cfquant-0.2.0.dist-info/METADATA,sha256=XcH8g02cvBkH4zNFmLHsHn145byxF81x6Qrh2bR86u0,5792
|
|
87
|
+
cfquant-0.2.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
88
|
+
cfquant-0.2.0.dist-info/entry_points.txt,sha256=pP1EZ_qVIPCScF-BWhbGASzRvzLZqg7juWzIUIe8_lI,121
|
|
89
|
+
cfquant-0.2.0.dist-info/top_level.txt,sha256=39chmbgRnj1c6vh7TPRF7EFTPk5j2Erg921TFd4cpW0,75
|
|
90
|
+
cfquant-0.2.0.dist-info/RECORD,,
|
cfquant_pipe_hub.py
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
import sys
|
|
3
|
+
sys.dont_write_bytecode = True
|
|
4
|
+
|
|
5
|
+
import argparse
|
|
6
|
+
import os
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _path(value):
|
|
10
|
+
value = str(value or "").strip()
|
|
11
|
+
if not value:
|
|
12
|
+
return ""
|
|
13
|
+
return os.path.abspath(os.path.expandvars(os.path.expanduser(value)))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def main(argv=None):
|
|
17
|
+
parser = argparse.ArgumentParser(description="Start cfquant named-pipe hub.")
|
|
18
|
+
parser.add_argument("--pipe-name", default=None, help=r"Pipe name, e.g. \\.\pipe\cfquant_pipe_hub")
|
|
19
|
+
parser.add_argument("--quiet", action="store_true", help="Disable console logs.")
|
|
20
|
+
parser.add_argument("--default-request-channel", default="cfquant.normal.request")
|
|
21
|
+
parser.add_argument("--home", "--state-dir", dest="home", help="Writable cfquant state directory.")
|
|
22
|
+
parser.add_argument("--runtime-dir", help="Override the runtime directory.")
|
|
23
|
+
parser.add_argument("--status-file", help="Override the PipeHub status JSON file.")
|
|
24
|
+
args = parser.parse_args(argv)
|
|
25
|
+
if args.home:
|
|
26
|
+
home = _path(args.home)
|
|
27
|
+
os.environ["CFQUANT_HOME"] = home
|
|
28
|
+
if not args.runtime_dir:
|
|
29
|
+
os.environ["CFQUANT_RUNTIME_DIR"] = os.path.join(home, "runtime")
|
|
30
|
+
if args.runtime_dir:
|
|
31
|
+
os.environ["CFQUANT_RUNTIME_DIR"] = _path(args.runtime_dir)
|
|
32
|
+
if args.status_file:
|
|
33
|
+
os.environ["CFQUANT_PIPE_HUB_STATUS_FILE"] = _path(args.status_file)
|
|
34
|
+
|
|
35
|
+
from cfquant.pipe_hub import run_pipe_hub
|
|
36
|
+
|
|
37
|
+
run_pipe_hub(
|
|
38
|
+
pipe_name=args.pipe_name,
|
|
39
|
+
show=not args.quiet,
|
|
40
|
+
default_request_channel=args.default_request_channel,
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
if __name__ == "__main__":
|
|
45
|
+
main()
|