cfquant 0.2.2__tar.gz → 0.2.10__tar.gz
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.
- {cfquant-0.2.2 → cfquant-0.2.10}/LICENSE +21 -21
- {cfquant-0.2.2 → cfquant-0.2.10}/LTtx/tx/LTtx_server.py +29 -29
- {cfquant-0.2.2 → cfquant-0.2.10}/MANIFEST.in +53 -53
- {cfquant-0.2.2 → cfquant-0.2.10}/PKG-INFO +14 -11
- {cfquant-0.2.2 → cfquant-0.2.10}/README.md +185 -182
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/account_routing.py +18 -18
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/cli.py +368 -368
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/normal_bridge.py +387 -181
- cfquant-0.2.10/cfquant/order_meta.py +551 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/pipe_bridge.py +51 -49
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/pipe_hub.py +159 -159
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/qmt_bridge.py +762 -499
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/runtime_report.py +334 -334
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/tx_trade_bridge.py +1062 -549
- cfquant-0.2.10/cfquant/version.py +5 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/xtconstant.py +128 -128
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/xttrader.py +184 -76
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/xttype.py +106 -54
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant.egg-info/PKG-INFO +14 -11
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant.egg-info/SOURCES.txt +1 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant_pipe_hub.py +39 -39
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant_web_server.py +3483 -3180
- {cfquant-0.2.2 → cfquant-0.2.10}/pyproject.toml +58 -58
- {cfquant-0.2.2 → cfquant-0.2.10}/qmt_scripts/CFQUANT.py +85 -85
- {cfquant-0.2.2 → cfquant-0.2.10}/qmt_scripts/CFQUANT_CTYPE_ALL_LOWLAT.py +137 -137
- {cfquant-0.2.2 → cfquant-0.2.10}/qmt_scripts/CFQUANT_LITE.py +1042 -507
- {cfquant-0.2.2 → cfquant-0.2.10}/qmt_scripts/CFQUANT_TRADE_LOWLAT.py +84 -84
- {cfquant-0.2.2 → cfquant-0.2.10}/qmt_scripts/__init__.py +1 -1
- {cfquant-0.2.2 → cfquant-0.2.10}/qmt_scripts//345/220/214/350/264/246/345/217/267/347/213/254/347/253/213/345/270/202/345/234/272/CFQUANT_CTYPE_ALL_LOWLAT_SH.py +89 -89
- {cfquant-0.2.2 → cfquant-0.2.10}/qmt_scripts//345/220/214/350/264/246/345/217/267/347/213/254/347/253/213/345/270/202/345/234/272/CFQUANT_CTYPE_ALL_LOWLAT_SZ.py +89 -89
- {cfquant-0.2.2 → cfquant-0.2.10}/qmt_scripts//345/220/214/350/264/246/345/217/267/347/213/254/347/253/213/345/270/202/345/234/272/CFQUANT_LITE_SH.py +1060 -507
- {cfquant-0.2.2 → cfquant-0.2.10}/qmt_scripts//345/220/214/350/264/246/345/217/267/347/213/254/347/253/213/345/270/202/345/234/272/CFQUANT_LITE_SZ.py +1060 -507
- {cfquant-0.2.2 → cfquant-0.2.10}/qmt_scripts//345/220/214/350/264/246/345/217/267/347/213/254/347/253/213/345/270/202/345/234/272/CFQUANT_TRADE_LOWLAT_SH.py +84 -84
- {cfquant-0.2.2 → cfquant-0.2.10}/qmt_scripts//345/220/214/350/264/246/345/217/267/347/213/254/347/253/213/345/270/202/345/234/272/CFQUANT_TRADE_LOWLAT_SZ.py +84 -84
- {cfquant-0.2.2 → cfquant-0.2.10}/qmt_scripts//345/220/214/350/264/246/345/217/267/347/213/254/347/253/213/345/270/202/345/234/272/readme.md +11 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/requirements.txt +7 -7
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/__init__.py +1 -1
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/app.js +4104 -3932
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/index.html +1448 -1465
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/styles.css +2150 -2085
- cfquant-0.2.2/cfquant/version.py +0 -5
- {cfquant-0.2.2 → cfquant-0.2.10}/LTtx/__init__.py +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/LTtx/tx/Config.txt +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/LTtx/tx/__init__.py +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/LTtx/tx/tx.py +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/__init__.py +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/channels.py +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/client.py +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/config.py +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/hub.py +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/logging_i18n.py +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/pipe_client.py +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/pipe_transport.py +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/protocol.py +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/tx.py +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant/xtdata.py +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant.egg-info/dependency_links.txt +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant.egg-info/entry_points.txt +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant.egg-info/requires.txt +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/cfquant.egg-info/top_level.txt +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/setup.cfg +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/avatars/amber-pulse.svg +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/avatars/copper-grid.svg +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/avatars/market-blue.svg +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/avatars/rose-circuit.svg +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/avatars/signal-green.svg +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/avatars/slate-wave.svg +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/avatars/teal-orbit.svg +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/avatars/violet-node.svg +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/favicon.svg +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-10.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-11.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-12.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-13.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-14.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-15.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-16.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-17.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-18.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-19.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-20.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-21.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-4.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-5.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-6.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-7.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-8.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/image/qmt_deploy/image-9.png +0 -0
- {cfquant-0.2.2 → cfquant-0.2.10}/web_dashboard/vendor/mermaid.min.js +0 -0
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 tao
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 tao
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -19,13 +19,13 @@ import sys
|
|
|
19
19
|
from packaging import version
|
|
20
20
|
|
|
21
21
|
#运行需要的库
|
|
22
|
-
need_packge = {
|
|
23
|
-
'psutil': {'pip_name': 'psutil', 'version': '1.0.0'},
|
|
24
|
-
'pandas': {'pip_name': 'pandas', 'version': '0.0.1'},
|
|
25
|
-
'tabulate': {'pip_name': 'tabulate', 'version': '0.0.1'},
|
|
26
|
-
'pandas_market_calendars': {'pip_name': 'pandas-market-calendars', 'version': '0.0.1'},
|
|
27
|
-
'pytz': {'pip_name': 'pytz', 'version': '0.0.0'},
|
|
28
|
-
}
|
|
22
|
+
need_packge = {
|
|
23
|
+
'psutil': {'pip_name': 'psutil', 'version': '1.0.0'},
|
|
24
|
+
'pandas': {'pip_name': 'pandas', 'version': '0.0.1'},
|
|
25
|
+
'tabulate': {'pip_name': 'tabulate', 'version': '0.0.1'},
|
|
26
|
+
'pandas_market_calendars': {'pip_name': 'pandas-market-calendars', 'version': '0.0.1'},
|
|
27
|
+
'pytz': {'pip_name': 'pytz', 'version': '0.0.0'},
|
|
28
|
+
}
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
def _hidden_subprocess_kwargs():
|
|
@@ -81,7 +81,7 @@ def ensure_modules_with_version(modules: dict):
|
|
|
81
81
|
print(f"[AutoInstall] {import_name} 已安装,版本为 {installed_version},满足要求")
|
|
82
82
|
except ImportError:
|
|
83
83
|
# 安装或升级
|
|
84
|
-
install_target = pip_name if required_version == "latest" else "%s>=%s" % (pip_name, required_version)
|
|
84
|
+
install_target = pip_name if required_version == "latest" else "%s>=%s" % (pip_name, required_version)
|
|
85
85
|
print(f"[AutoInstall] 正在安装/升级 {pip_name} → {required_version}...")
|
|
86
86
|
try:
|
|
87
87
|
subprocess.check_call([
|
|
@@ -181,16 +181,16 @@ def _ensure_lttx_dir(path):
|
|
|
181
181
|
def _lttx_file_path(file_name):
|
|
182
182
|
return os.path.join(_ensure_lttx_dir(_lttx_file_data_dir()), file_name)
|
|
183
183
|
|
|
184
|
-
def _lttx_dataframe_path(var):
|
|
185
|
-
return os.path.join(_ensure_lttx_dir(_lttx_dataframe_data_dir()), "%s.csv" % var)
|
|
186
|
-
|
|
187
|
-
def _lttx_dict_var_path():
|
|
188
|
-
configured = os.environ.get("CFQUANT_LTTX_DICT_VAR_FILE")
|
|
189
|
-
if configured:
|
|
190
|
-
return os.path.abspath(configured)
|
|
191
|
-
return os.path.join(_ensure_lttx_dir(_lttx_runtime_dir()), "data0.txt")
|
|
192
|
-
|
|
193
|
-
def _lttx_log_dir():
|
|
184
|
+
def _lttx_dataframe_path(var):
|
|
185
|
+
return os.path.join(_ensure_lttx_dir(_lttx_dataframe_data_dir()), "%s.csv" % var)
|
|
186
|
+
|
|
187
|
+
def _lttx_dict_var_path():
|
|
188
|
+
configured = os.environ.get("CFQUANT_LTTX_DICT_VAR_FILE")
|
|
189
|
+
if configured:
|
|
190
|
+
return os.path.abspath(configured)
|
|
191
|
+
return os.path.join(_ensure_lttx_dir(_lttx_runtime_dir()), "data0.txt")
|
|
192
|
+
|
|
193
|
+
def _lttx_log_dir():
|
|
194
194
|
configured = os.environ.get("CFQUANT_LTTX_LOG_DIR")
|
|
195
195
|
if configured:
|
|
196
196
|
return os.path.abspath(configured)
|
|
@@ -818,9 +818,9 @@ def main_test():
|
|
|
818
818
|
except Exception as e:
|
|
819
819
|
print(e)
|
|
820
820
|
|
|
821
|
-
def load_dict_var():
|
|
822
|
-
try:
|
|
823
|
-
config_path = _lttx_dict_var_path()
|
|
821
|
+
def load_dict_var():
|
|
822
|
+
try:
|
|
823
|
+
config_path = _lttx_dict_var_path()
|
|
824
824
|
|
|
825
825
|
# 尝试打开并读取 JSON 文件
|
|
826
826
|
with open(config_path, 'r', encoding='utf-8') as f:
|
|
@@ -1041,9 +1041,9 @@ def make_dir():
|
|
|
1041
1041
|
except:
|
|
1042
1042
|
pass
|
|
1043
1043
|
|
|
1044
|
-
def main_save_dict_var():
|
|
1045
|
-
global dict_var_on, dict_var
|
|
1046
|
-
file_path = _lttx_dict_var_path()
|
|
1044
|
+
def main_save_dict_var():
|
|
1045
|
+
global dict_var_on, dict_var
|
|
1046
|
+
file_path = _lttx_dict_var_path()
|
|
1047
1047
|
|
|
1048
1048
|
while True:
|
|
1049
1049
|
if dict_var_on:
|
|
@@ -1156,11 +1156,11 @@ dict_client = {}
|
|
|
1156
1156
|
dict_client_status = {}
|
|
1157
1157
|
dict_var = load_dict_var()#保存云变量
|
|
1158
1158
|
|
|
1159
|
-
if __name__ == '__main__':
|
|
1160
|
-
if os.environ.get("CFQUANT_LTTX_BACKGROUND") != "1":
|
|
1161
|
-
threading.Thread(target = main_control).start()
|
|
1162
|
-
main()
|
|
1163
|
-
# threading.Thread(target = main).start()
|
|
1159
|
+
if __name__ == '__main__':
|
|
1160
|
+
if os.environ.get("CFQUANT_LTTX_BACKGROUND") != "1":
|
|
1161
|
+
threading.Thread(target = main_control).start()
|
|
1162
|
+
main()
|
|
1163
|
+
# threading.Thread(target = main).start()
|
|
1164
1164
|
|
|
1165
1165
|
|
|
1166
1166
|
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
include README.md
|
|
2
|
-
include requirements.txt
|
|
3
|
-
include cfquant_web_server.py
|
|
4
|
-
include cfquant_pipe_hub.py
|
|
5
|
-
|
|
6
|
-
recursive-include cfquant *.py
|
|
7
|
-
recursive-include LTtx *.py
|
|
8
|
-
include LTtx/tx/Config.txt
|
|
9
|
-
|
|
10
|
-
recursive-include web_dashboard *.html *.css *.js *.svg *.png
|
|
11
|
-
recursive-include qmt_scripts *.py *.md
|
|
12
|
-
|
|
13
|
-
recursive-exclude cfquant/tests *
|
|
14
|
-
recursive-exclude LTtx/tx/__pycache__ *
|
|
15
|
-
recursive-exclude LTtx/tx/log_data *
|
|
16
|
-
recursive-exclude LTtx/tx/tx_log *
|
|
17
|
-
recursive-exclude runtime *
|
|
18
|
-
recursive-exclude log *
|
|
19
|
-
recursive-exclude docs *
|
|
20
|
-
recursive-exclude scripts *
|
|
21
|
-
recursive-exclude log_data *
|
|
22
|
-
recursive-exclude tx_log *
|
|
23
|
-
recursive-exclude reports *
|
|
24
|
-
recursive-exclude dataframe_data *
|
|
25
|
-
recursive-exclude file_data *
|
|
26
|
-
recursive-exclude official_site *
|
|
27
|
-
recursive-exclude offcial_site *
|
|
28
|
-
recursive-exclude remotion_intro *
|
|
29
|
-
recursive-exclude pip_library_dev *
|
|
30
|
-
recursive-exclude .cfquant_project_updates *
|
|
31
|
-
recursive-exclude .cfquant_updates *
|
|
32
|
-
recursive-exclude .updates *
|
|
33
|
-
recursive-exclude .pytest_cache *
|
|
34
|
-
recursive-exclude .playwright-cli *
|
|
35
|
-
recursive-exclude .local_archive *
|
|
36
|
-
recursive-exclude .vscode *
|
|
37
|
-
|
|
38
|
-
exclude AGENTS.md
|
|
39
|
-
exclude .gitignore
|
|
40
|
-
exclude *.bat
|
|
41
|
-
exclude *.log
|
|
42
|
-
exclude *.db
|
|
43
|
-
exclude *.sqlite
|
|
44
|
-
exclude *.sqlite3
|
|
45
|
-
exclude *.mp4
|
|
46
|
-
exclude *.mov
|
|
47
|
-
exclude *.avi
|
|
48
|
-
exclude *.mkv
|
|
49
|
-
exclude *.webm
|
|
50
|
-
exclude LTtx/tx/data0.txt
|
|
51
|
-
global-exclude __pycache__/*
|
|
52
|
-
global-exclude *.py[cod]
|
|
53
|
-
global-exclude *.pyo
|
|
1
|
+
include README.md
|
|
2
|
+
include requirements.txt
|
|
3
|
+
include cfquant_web_server.py
|
|
4
|
+
include cfquant_pipe_hub.py
|
|
5
|
+
|
|
6
|
+
recursive-include cfquant *.py
|
|
7
|
+
recursive-include LTtx *.py
|
|
8
|
+
include LTtx/tx/Config.txt
|
|
9
|
+
|
|
10
|
+
recursive-include web_dashboard *.html *.css *.js *.svg *.png
|
|
11
|
+
recursive-include qmt_scripts *.py *.md
|
|
12
|
+
|
|
13
|
+
recursive-exclude cfquant/tests *
|
|
14
|
+
recursive-exclude LTtx/tx/__pycache__ *
|
|
15
|
+
recursive-exclude LTtx/tx/log_data *
|
|
16
|
+
recursive-exclude LTtx/tx/tx_log *
|
|
17
|
+
recursive-exclude runtime *
|
|
18
|
+
recursive-exclude log *
|
|
19
|
+
recursive-exclude docs *
|
|
20
|
+
recursive-exclude scripts *
|
|
21
|
+
recursive-exclude log_data *
|
|
22
|
+
recursive-exclude tx_log *
|
|
23
|
+
recursive-exclude reports *
|
|
24
|
+
recursive-exclude dataframe_data *
|
|
25
|
+
recursive-exclude file_data *
|
|
26
|
+
recursive-exclude official_site *
|
|
27
|
+
recursive-exclude offcial_site *
|
|
28
|
+
recursive-exclude remotion_intro *
|
|
29
|
+
recursive-exclude pip_library_dev *
|
|
30
|
+
recursive-exclude .cfquant_project_updates *
|
|
31
|
+
recursive-exclude .cfquant_updates *
|
|
32
|
+
recursive-exclude .updates *
|
|
33
|
+
recursive-exclude .pytest_cache *
|
|
34
|
+
recursive-exclude .playwright-cli *
|
|
35
|
+
recursive-exclude .local_archive *
|
|
36
|
+
recursive-exclude .vscode *
|
|
37
|
+
|
|
38
|
+
exclude AGENTS.md
|
|
39
|
+
exclude .gitignore
|
|
40
|
+
exclude *.bat
|
|
41
|
+
exclude *.log
|
|
42
|
+
exclude *.db
|
|
43
|
+
exclude *.sqlite
|
|
44
|
+
exclude *.sqlite3
|
|
45
|
+
exclude *.mp4
|
|
46
|
+
exclude *.mov
|
|
47
|
+
exclude *.avi
|
|
48
|
+
exclude *.mkv
|
|
49
|
+
exclude *.webm
|
|
50
|
+
exclude LTtx/tx/data0.txt
|
|
51
|
+
global-exclude __pycache__/*
|
|
52
|
+
global-exclude *.py[cod]
|
|
53
|
+
global-exclude *.pyo
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cfquant
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.10
|
|
4
4
|
Summary: QMT local bridge and xtquant-compatible Python client.
|
|
5
5
|
License: MIT
|
|
6
6
|
Requires-Python: >=3.8
|
|
@@ -32,20 +32,23 @@ Requires-Dist: pyzmq>=25; extra == "zmq"
|
|
|
32
32
|
|
|
33
33
|
## 项目简介
|
|
34
34
|
|
|
35
|
+
> **CFQuant 是 MiniQMT 的开源替代方案:让原有 `xtquant` / 外部 Python 策略低成本接入大 QMT。**
|
|
36
|
+
|
|
35
37
|
### 1. 项目定位
|
|
36
38
|
|
|
37
|
-
`cfquant` 是面向大 QMT
|
|
38
|
-
- 部署前请务必读完本教程。
|
|
39
|
-
- 部署前请务必读完本教程。
|
|
40
|
-
- 部署前请务必读完本教程。
|
|
39
|
+
`cfquant` 是面向大 QMT 的本地桥接层,专注解决 MiniQMT 迁移、大 QMT 外部 Python 调用、账号路由、交易回调和 Web 可观测这些实际问题。它不会替代 QMT 终端本身,而是把大 QMT 已有的行情、查询、交易和回调能力整理成更接近 `miniQMT` / `xtquant` 的调用方式,让旧策略可以更低成本迁移到大 QMT 环境。
|
|
41
40
|
|
|
42
|
-
### 2.
|
|
41
|
+
### 2. 核心能力
|
|
43
42
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
| 能力 | 解决的问题 |
|
|
44
|
+
|---|---|
|
|
45
|
+
| MiniQMT / `xtquant` 兼容调用 | 原有外部 Python 策略可以沿用接近 `xtdata`、`XtQuantTrader`、`StockAccount` 的写法,降低迁移成本。 |
|
|
46
|
+
| 大 QMT 本地桥接 | 把大 QMT 内部的行情、查询、交易、撤单和回调能力桥接给外部 Python 程序和 Web 控制台。 |
|
|
47
|
+
| Web 控制台 | 在浏览器里完成账号绑定、QMT 入口脚本指引、在线检测、接口调试、版本更新和回滚。 |
|
|
48
|
+
| 多账号 / 多 QMT 路由 | 按 `bridge_id`、`account_type`、`account_id` 路由请求,适配多资金账号、普通账户、信用账户和多 QMT 终端。 |
|
|
49
|
+
| 通用、极致、高级三种模式 | 普通环境快速跑通;受限 QMT 使用自包含入口;低延迟场景可拆分普通桥和交易桥。 |
|
|
50
|
+
| 交易回调与行情推送 | 接收委托、成交、账号状态和行情事件,方便外部策略处理异步结果。 |
|
|
51
|
+
| 部署与排障闭环 | 通过日志、状态检查、教程、反馈和论坛沉淀接入问题,减少部署和维护成本。 |
|
|
49
52
|
|
|
50
53
|
### 3. 兼容方式
|
|
51
54
|
|