一、引言
本篇来讲述如何搭建 wondertrader 和 wtpy
二、wondertrader
2.1 源码下载
# /home/leo/sda_1.6TBgit clone https://gitee.com/wondertrader/wondertrader.gitgit clone https://gitee.com/wondertrader/wtpy.git
2.2 源码编译
cd /home/leo/sda_1.6TB/wondertrader/src./build_debug.sh# 最终编译后的产物在 build_debug 中
gcc/g++ 版本
gcc version 8.4.0gcc version 8.4.0
2.3 安装编译后的库
/home/leo/sda_1.6TB/wondertrader# 这里需要注意 wtpy 和 wondertrader 是同级目录
/home/leo/sda_1.6TB/wtpy
~/sda_1.6TB/wondertrader$ ./copy_bins_debug_linux.sh
- ./copy_bins_debug_linux.sh 内容如下
despath=$1
if test "$despath" = ""; then despath="../wtpy"
fiecho "wtpy path is $despath"root="./src/build_debug/build_x64/Debug/bin"
folders=("Loader" "WtBtPorter" "WtDtPorter" "WtPorter")
for folder in ${folders[@]}
docp -rvf $root/$folder/*.so $despath/wtpy/wrapper/linuxfor file in `ls $root/$folder`doif [ -d $root"/"$folder"/"$file ]thencp -rvf $root/$folder/$file/*.so $despath/wtpy/wrapper/linux/$filefidone
done
三、wtpy 环境搭建
3.1 conda 环境创建
conda create -n wtpy_env python=3.10conda activate wtpy_env
3.2 源码安装
直接 在我们的 wtpy_env 环境中安装 wtpy
pip install ./wtpy/
3.3 测试
/home/leo/sda_1.6TB/wtpy/demos/datakit_stkpython3 ./runDT.py
# 运行报错, nump 版本不对导致
ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject# 卸载 NumPy(可能需要 sudo)
pip uninstall -y numpy# 清理残留的编译缓存(重要!避免使用旧缓存)
pip cache purge# 重新安装兼容版本的 NumPy(例如 1.21.6,具体版本需匹配依赖库)
pip install numpy==1.21.6 # 或其他兼容版本(如 1.23.x、1.24.x)
- 解决完上述问题后,就可以 运行成功了。
(wtpy_env) leo@leo:~/sda_1.6TB/wtpy/demos/datakit_stk$ python3.10 ./runDT.py
debug [/home/leo/sda_1.6TB/wondertrader/src/WtDtPorter/WtDtPorter.cpp][get_version][72]
debug [/home/leo/sda_1.6TB/wondertrader/src/WtDtPorter/WtDtPorter.cpp][initialize][57]
debug [/home/leo/sda_1.6TB/wondertrader/src/WtDtPorter/WtDtPorter.cpp][getRunner][50]
debug [/home/leo/sda_1.6TB/wondertrader/src/WtDtPorter/WtDtRunner.cpp][WtDtRunner][35]
debug [/home/leo/sda_1.6TB/wondertrader/src/WtDtPorter/WtDtRunner.cpp][initialize][93]
[08.13 01:23:37 - info ] Trading sessions loaded
[08.13 01:23:37 - info ] Commodities configuration file ../common/stk_comms.json loaded
[08.13 01:23:38 - info ] Contracts configuration file ../common/stocks.json loaded, 2 exchanges
[08.13 01:23:38 - info ] Holidays loaded
[08.13 01:23:38 - info ] ShmCaste initialized @ ./exchange.membin
debug [/home/leo/sda_1.6TB/wondertrader/src/WtDtPorter/WtDtRunner.cpp][initDataMgr][258]
[08.13 01:23:38 - info ] Data storage module /home/leo/sda_1.6TB/anaconda3/envs/wtpy_env/lib/python3.10/site-packages/wtpy/wrapper/linux/libWtDataStorage.so loaded
[08.13 01:23:38 - info ] WtDataWriter initialized, root dir: ../storage/, save_csv_tick: false, async_mode: true, log_group_size: 20, disable_history: false, disable_tick: false, disable_min1: false, disable_min5: false, disable_day: false, disable_trans: false, disable_ordque: false, disable_orders: false, min_price_mode: 0
[08.13 01:23:38 - info ] Reading parser config from mdparsers.yaml...
debug [/home/leo/sda_1.6TB/wondertrader/src/WtDtPorter/WtDtRunner.cpp][initParsers][264]
[08.13 01:23:38 - info ] [parser] Parser module /home/leo/sda_1.6TB/anaconda3/envs/wtpy_env/lib/python3.10/site-packages/wtpy/wrapper/linux/parsers/libParserXTP.so loaded
[08.13 01:23:38 - info ] 1 market data parsers loaded in total
debug [/home/leo/sda_1.6TB/wondertrader/src/WtDtPorter/WtDtPorter.cpp][register_parser_callbacks][115]
debug [/home/leo/sda_1.6TB/wondertrader/src/WtDtPorter/WtDtPorter.cpp][getRunner][50]
debug [/home/leo/sda_1.6TB/wondertrader/src/WtDtPorter/WtDtRunner.cpp][registerParserPorter][293]
[08.13 01:23:38 - info ] Callbacks of Extented Parser registration done
[08.13 01:23:38 - info ] WonderTrader datakit initialzied��version: UNIX v0.9.9 Build@Aug 13 2025 01:12:31
debug [/home/leo/sda_1.6TB/wondertrader/src/WtDtPorter/WtDtPorter.cpp][start][66]
debug [/home/leo/sda_1.6TB/wondertrader/src/WtDtPorter/WtDtPorter.cpp][getRunner][50]
debug [/home/leo/sda_1.6TB/wondertrader/src/WtDtPorter/WtDtRunner.cpp][start][46]
[08.13 01:23:38 - info ] [ParserXTP] Connecting server successed: 0, begin to subscibe data ...
[08.13 01:23:38 - info ] [ParserXTP] Market data of 4 instruments of SSE subscribed
[08.13 01:23:38 - info ] [ParserXTP] Tick_by_tick data of 4 instruments of SSE subscribed
[08.13 01:23:38 - info ] [ParserXTP] Market data of 1 instruments of SZSE subscribed
[08.13 01:23:38 - info ] [ParserXTP] Tick_by_tick data of 1 instruments of SZSE subscribed
[08.13 01:23:38 - info ] 1 parsers started