項目源起:
在2013年我成為了一位公司經紀。
在機緣巧合的情況下,我開始了自已開發交易策略的生涯。
工作生涯中結識了眾多行內交易專家,其中幾位對我影響甚深。
無論是技術上或是交易智識上,都使我獲益良多,
在此衷心感謝各位友好的分享。
由於不是修讀計算機專業的關係,學習的過程很漫長。
由最基本的數據結構學起,到設計模式 (Design Pattern),
到高級語法應用等,出於對交易的熱誠,都一一克服了。
2013年
BATrader由一個小小的 VBA 檔案開始,將恒指成份股的
即市表現與期指並列,節省為客戶分析市況的時間,並且
用於短線交易上,不同成分比重 (Factor) 的股份作出
技術分析。
同年學習 C# 和 LINQ,成功用 LINQ 開發將交易所
tick data 轉換成 ohlcv data。
深度依賴 SQLite 這個檔案型的數據庫。
2014年 - 2016年
由 C# 轉向 Python,被 Python 簡潔易寫的開發過程
深深感動。
由於交易的資料主要來自「交易所日報表」, 以 C#
開發解讀報表的程序顯行非常艱深。故此投向 Python的
懷抱,從此除了開發 Windows 的交易程序會用 C#,日
常生活大小事都用 Python。
BATrader 成為了一個每天開市到收市,循環向一組特定
股票運行技術分析的邏輯。符合邏輯即推送 (PUSH) 到我
的 iPhone 手機上。
2017年
因為項目的規模已到中型水平。要達至模組化、增強可擴
展性。對項目進行了非常深度的重構 ( Refactoring )
主要對偶合度高的模槐進行分解。及加強註解。
由於 SQLite 是檔案型數據庫,無法有效異機開發,並且
難以管理。出於對數據庫新的要求,向 PostgreSQL 遷移。
實現了一主多副,實時同步 ( replica )
2018年
過往因為需求出現,會不斷加入新的程式碼,日子有功,
代碼量增長使項目結構過於鬆散。
用 zeromq 的特性著手開發了報價、決策、交易的分離。
目前 BATrader 已經成為一個非常穩定 Python Library。
包含事件驅動的回測模組 (Backtest) ,並用同樣的 API 實現交易的模組。另外數據庫包含港股的大量數據,包括每筆交易及筆數等。
對於特定事件 (當股票符合技術條件) 的推送模組,數據下載模組
(港交所原始檔案) 和解讀。其他還有資金流入、牛熊證、期貨、期權
的數據處理。
(本項目目前非開源,本倉庫只作部份程式碼的演示)