【WonderTrader源碼詳解 1】【環境搭建 2】【編譯安裝WonderTrader】

一、引言

本篇來講述如何搭建 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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92869.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92869.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92869.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

hutool 作為http 客戶端工具調用的一點點總結

場景一:客戶端timeout 的時間給的很短//100毫秒 private static final int HTTP_TIMEOUT_MS 1 * 100; response HttpUtil.createPost(patrolresultconfirmUrl).body(JSONObject.toJSONString(search)).header("Authorization", token).timeout(HTTP_TI…

基于MongoDB/HBase的知識共享平臺的設計與實現

標題:基于MongoDB/HBase的知識共享平臺的設計與實現內容:1.摘要 在當今信息爆炸的時代,知識的有效共享和管理變得愈發重要。本研究的目的是設計并實現一個基于MongoDB/HBase的知識共享平臺,以滿足大規模知識數據的存儲、高效查詢和快速共享需求。方法上&…

PHP數組操作:交集、并集和差集

1. 交集(Intersection)交集是指兩個集合中都存在的元素。$array1 [1, 2, 3, 4]; $array2 [3, 4, 5, 6];$intersection array_intersect($array1, $array2); print_r($intersection); // 輸出: Array ( [2] > 3 [3] > 4 )2. 并集(Uni…

Qt 常用控件 - 7

Text Edit(多行輸入框)QTextEdit 表示多行輸入框,也是一個富文本 & markdown 編輯器,能在內容超出范圍時自動提供滾動條。QTextEdit:不僅僅能表示純文本,還可以表示 htnl 和 markdownQPlainTextEdit&am…

JDK、eclipse的安裝,配置JDK、Tomcat并使用eclipse創建項目

目錄一、JDK的安裝1. 安裝JDK2. 配置環境變量3. 檢查jdk是否已安裝二、eclipse的安裝1. 解壓安裝2. 設置字體大小3. 設置拼寫提示三、tomcat安裝四、創建項目1. 第一次創建一個普通的java項目2. 第一次創建一個java web項目擴展:運行項目報Tomcat端口占用&#xff0…

Iptables 詳細使用指南

目錄 1. 工作原理? 2. 核心架構(四表五鏈) 2.1 四張表(優先級從高到低) 2.2 五條內置鏈(數據包流向) 3. Iptables規則 3.1 規則的匹配條件與目標動作 常見匹配條件(用于篩選數據包&…

Vue 服務端渲染(SSR)詳解

Vue SSR是一種在服務端將 Vue 應用渲染成 HTML 字符串,然后直接發送到客戶端的技術。相比傳統的客戶端渲染,Vue SSR 能帶來更好的 SEO 性能和更快的首屏加載時間。下面我們從零到一,結合項目源碼,詳細講解如何實現一個 Vue SSR 項…

機器翻譯:需要了解的數學基礎詳解

文章目錄一、概率論與統計學1.1 基本概念1.2 在機器翻譯中的應用二、線性代數2.1 基本概念2.2 在機器翻譯中的應用三、微積分3.1 基本概念3.2 在機器翻譯中的應用四、信息論4.1 基本概念4.2 在機器翻譯中的應用五、數值優化5.1 優化問題形式化5.2 優化算法5.3 正則化技術六、圖…

藍橋杯手算題和雜題簡易做法

一、巧用Excel Excel在解決某些數學問題時非常高效,特別是涉及表格計算、簡單統計和可視化分析時。 門牌制作 這道題是一道基礎題,只需要判斷每個數字有幾個2,然后在加起來即可,但是還有更簡單的方法,先通過編譯器&…

5. 緩存-Redis

文章目錄前言一、 介紹1. 簡介2. 核心特點二、 應用場景1. 應用場景2. 數據類型作用場景三、 性能特性1. 內存2. 高性能數據結構3. 單線程、多路復用四、 異步持久化機制1. RDB(Redis Database)2. AOF(Append-Only File)3. 持久化…

如何理解Tomcat、Servlet、Catanalina的關系

目錄 背景: 結論: 好文-【拓展閱讀】: 象漂亮更新動力! 背景: 學習Java的Servlet時,常常說Tomcat是一個容器,我們寫ServletA,ServletB,Tomcat容器在啟動的時候會讀取web.xml或者我們程序中的…

Hive的并行度的優化

對于分布式任務來說,任務執行的并行度十分重要。Hive的底層是MapReduce,所以Hive的并行度優化分為Map端優化和Reduce端優化。(1)、Map端優化Map端的并行度與Map切片數量相關,并行度等于切片數量。一般情況下不用去設置Map端的并行度。以下特殊…

Vue.js 響應接口:深度解析與實踐指南

Vue.js 響應接口:深度解析與實踐指南 引言 隨著前端技術的不斷發展,Vue.js 作為一種流行的前端框架,已經成為了眾多開發者的首選。Vue.js 的響應式系統是其核心特性之一,它允許開發者輕松實現數據的雙向綁定。而響應接口則是Vue.j…

高精度藍牙定位:技術、應用與未來發展

一、高精度藍牙定位概述在當今科技飛速發展的時代,定位技術的精度和可靠性變得越來越重要。高精度藍牙定位作為一種新興的定位技術,正逐漸嶄露頭角。藍牙技術是一種支持設備短距離通信(一般10m內)的無線電技術,能在包括…

C# 基于halcon的視覺工作流-章29-邊緣提取-亞像素

C# 基于halcon的視覺工作流-章29-邊緣提取-亞像素 本章目標: 一、1edges_sub_pix; 二、threshold_sub_pix;本實例實現過程與章28基本相同,不同處在于提取的邊緣是亞像素,精度較高,本文僅介紹不同之處&#…

如何實現PostgreSQL的高可用性,包括主流的復制方案、負載均衡方法以及故障轉移流程?

前言 實現 PostgreSQL 的高可用性(High Availability, HA)是一個系統工程,需要結合復制技術、連接路由(負載均衡)、自動故障轉移(Failover)以及監控告警。以下是主流方案和關鍵流程的詳細說明&a…

Apache Ignite 生產級的線程池關閉工具方法揭秘

Apache Ignite 中用于 安全、可靠地關閉線程池&#xff08;ExecutorService&#xff09; 的關鍵邏輯。我們來一步步深入理解它的設計思想和實現細節。&#x1f9f1; 一、核心方法&#xff1a;U.shutdownNow(...) public static void shutdownNow(Class<?> owner, Nullab…

Unity:GUI筆記(一)——文本、按鈕、多選框和單選框、輸入框和拖動條、圖片繪制和框繪制

寫在前面&#xff1a;寫本系列(自用)的目的是回顧已經學過的知識、記錄新學習的知識或是記錄心得理解&#xff0c;方便自己以后快速復習&#xff0c;減少遺忘。主要是唐老師的課程。一、重要參數、文本、按鈕GUI相關代碼需要寫在private void OnGUI()中。該函數每幀執行&#x…

wordpress從wp_nav_menu中獲取菜單項

從wp_nav_menu中獲取菜單項&#xff0c;然后檢查這些菜單項是否對應分類(Category)&#xff0c;并輸出這些分類的ID。 以下是完整的代碼實現&#xff1a; <?php // 獲取指定菜單位置的菜單項 $menu_items wp_get_nav_menu_items(wodepress); // wodepress 是菜單位置的名…

第4章 程序段的反復執行2 while語句P128練習題(題及答案)

&#xff08;&#xff08;1&#xff09;閱讀程序#include <bits/stdc.h> using namespace std; //湯永紅 int main(){int n,s0;cin >> n;while(n){s s * 10 n % 10;n / 10;}cout << s << endl;return 0; }分別輸入&#xff1a;0 1024 1234567890輸出…