我們都知道Python是一個「膠水語言」,可以方便地調用其他的Python腳本、應用或其他語言的程序。
例如我們可以用一個Python腳本來維護我們關注的合約列表,然後當有新合約出現時(比如生豬、尿素、股指期貨期權等等),我們只需要更新這一個合約列表腳本,而非更新各個使用了合約列表的程序:
在其他Python腳本中可以這樣引用這個合約列表(當文件都在同一目錄下時):
而對於已經儲備了許多C++程序(比如一些高性能的計算模塊),又不想花時間將其改寫為Python腳本的程序員,該如何用Python調用C++程序呢?
我們可以採用以下步驟:
1、下載gcc
以MinGW為例:
MinGW
(Minimalist GNU for Windows)提供了一套簡單方便的Windows下的基於GCC 程序開發環境。MinGW
收集了一系列免費的Windows 使用的頭文件和庫文件;同時整合了GNU ( http://www.gnu.org/ )的工具集,特別是GNU
程序開發工具,如經典gcc, g++,
make等。MinGW是完全免費的自由軟體,它在Windows平台上模擬了Linux下GCC的開發環境,為C++的跨平台開發提供了良好基礎支持。
假設系統為win7 X64,下載windows版本 MinGW,下載地址:http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/
下載Download mingw-get-setup.exe (86.5 kB) (注意這是win32 的版本,注意位數應當與已經安裝的Python保持一致)
進行安裝:
選擇默認安裝目錄 C:MinGW;
選擇安裝組件,如果沒有出現這個窗口,點擊快速啟動欄,點擊MinGW Installation Manager,一定選上安裝The GUN C++ Compiler和The GUN Objectiv-C Compiler。
完成之後退出,將C:MinGWin 添加到環境變數。設置完成後,Windows似乎不會自動更新環境變數,除非重啟機子,那麼我們可以通過在下面的命令行中,設置一下PATH(比如SET PATH=C:),然後退出命令行,那麼系統環境變數就會被強制刷新。
點擊cmd,輸入 g++ --version 可以查看編譯器版本,則說明MinGW安裝成功。
2、編譯C++
新建一c++文件:如test1.cpp(這個簡單的例子只是輸入兩個數字,再列印出來)
在cmd窗口中進入該文件所在目錄,輸入:
g++ -o test1.so -shared -fPIC test1.cpp
-shared 該選項指定生成動態連接庫(讓連接器生成T類型的導出符號表,有時候也生成弱連接W類型的導出符號),不用該標誌外部程序無法連接。相當於一個可執行文件。
-fPIC:表示編譯為位置獨立的代碼,不用此選項的話編譯後的代碼是位置相關的所以動態載入時是通過代碼拷貝的方式來滿足不同進程的需要,而不能達到真正代碼段共享的目的。
會生產一個test1.so 動態鏈接庫文件。
用戶應注意使用這個方法在windows下編譯的so動態鏈接庫文件不能直接在linux下調用。想在linux中調用so文件,需要在linux環境下進行編譯。
3、Python調用C++
在Python腳本里添加
其中ctypes是Python的一個庫,提供和C語言兼容的數據類型,可以很方便地調用C DLL中的函數。
運行以上腳本得到:
顯示調用C++程序成功。
採用這個方法,我們不用進行大量的改寫,也能在Python中使用我們積累的各種C++程序了。
— — — — — — E N D — — — — — —
往期文章:
Numpy處理tick級別數據技巧
真正賺錢的期權策略曲線是這樣的
多品種歷史波動率計算
如何實現全市場自動盯盤
AI是怎樣看懂研報的
真格量化策略debug秘籍
真格量化對接實盤交易
常見高頻交易策略簡介
如何用撤單函數改進套利成交
Deque提高處理隊列效率
策略編程選Python還是C++
如何用Python繼承機制節約代碼量
十大機器學習演算法
如何調用策略附件數據
如何使用智能單
如何掃描全市場跨月價差
如何篩選策略最適合的品種
活用訂單類型規避頻繁撤單風險
真格量化回測撮合機制簡介
如何調用外部數據
如何處理回測與實盤差別
如何利用趨勢必然終結獲利
常見量化策略介紹
期權交易「七宗罪」
波動率交易介紹
推高波動率的因素
波動率的預測之道
趨勢交易面臨挑戰
如何構建知識圖譜
機器學習就是現代統計學
AI技術在金融行業的應用
如何避免模型過擬合
低延遲交易介紹
架構設計中的編程範式
交易所視角下的套利指令撮合
距離概念與特徵識別
氣象風險與天氣衍生品
設計量化策略的七個「大坑」
雲計算在金融行業的應用
機器學習模型評估方法
真格量化製作期權HV-IV價差
另類數據介紹
TensorFlow中的Tensor是什麼?
機器學習的經驗之談
用yfinance調用雅虎財經數據
容器技術如何改進交易系統
真格量化可訪問:
https://quant.pobo.net.cn
真格量化微信公眾號,長按關註:
遇到了技術問題?歡迎加入真格量化Python技術交流QQ群 726895887