vn.py文檔編寫計劃
雞年的第一篇文章,給各位讀者拜個年,祝大家新的一年身體健康,全家幸福~
需求
之前在vn.py項目2017年計劃裡面提到,如果對vn.py社區用戶們的需求情況做個排序,項目文檔絕對可以排在第一位。尤其對於新手而言,目前能找到的文檔資料比較零碎,只能自己去看源代碼,學習曲線比較陡,也讓很多人望而卻步。
誤區
之前走入了一個誤區,因為自己是作者的關係對整個項目的了解比較全面,所以寫文檔的時候是從開發者的角度,按照自己一步步開發vn.py項目的順序在寫:CTP介面原理、介面封裝、事件引擎、GUI界面、應用模塊開發等。直接的後果就是導致用戶上來就先接觸最難的底層部分,然後才一點點過度到自己實際應用中會用到的上層開發部分,學習效率非常低下。
用戶
接下來新的文檔準備從用戶的角度來寫:先講安裝配置、基本使用,讓用戶能先把vn.py跑起來,不用再到處問環境怎麼配置;然後介紹如何使用CTA模塊來開發交易策略,如何結合風控模塊來做事前風險管理;下一步講解基於事件引擎的擴展模塊的開發方式,使得用戶能夠去實現一些比較複雜的功能應用;最後再介紹介面封裝、架構細節等內容,讓有興趣的用戶來進一步提高。
不再廢話了,直接進入目錄。
目錄
安裝配置
Windows(200)
- Python環境:Anaconda安裝
- VS2013運行時:vcredist x86
- 資料庫:MongoDB、RoboMongo
- Python庫:pip安裝
- 成功運行
Ubuntu(200)
- 環境安裝
- API編譯(Linux下的鏈接問題)
- 成功運行
基本使用(400)
- 配置介面的賬號、密碼、伺服器地址等,並測試連接
- 日誌信息、合約列表查詢、行情訂閱
- 手動下單、撤單,成交和委託的數據監控
- 錯誤、持倉、資金的數據監控
- 其他貼士:窗口拖動、還原,一鍵測試功能
CTA策略
模塊文件介紹(200)
- 每個文件的功能說明
- 文件內模塊的關係圖
策略回測(400)
- 回測引擎API的使用
- 讀懂回測報告
- 參數優化(普通模式)
- 多進程優化
策略實盤(200)
- 載入策略到CTA引擎
- 編寫策略實例的json配置文件
- 使用CTA監控組件來管理策略的生命周期
- 策略實盤過程中的運維細節
策略開發(600)
- 策略模板CtaTemplate介紹
- 委託類型
- 時間序列數據結構
- 使用talib中的技術指標
事前風控(200)
- 使用風控模塊RiskManager
- 風控規則配置
- 添加自定義規則
行情解決方案(200)
- 使用行情記錄模塊DataRecorder
- 配置行情記錄的規則
- 歷史數據下載功能ctaHistory.py
事件引擎(400)
- 事件引擎的結構
- 事件引擎的啟動和停止
- 事件引擎的工作流程
- 事件處理函數
- 定時器事件
- 使用中需要注意的細節
應用開發
- 應用模塊的設計思路(200)
- 監聽事件(事件引擎)
- 調用功能(主引擎)
- 使用合理的數據結構來解決問題(200)
- 列表list、字典dict、集合set
- 特殊結構collections
- 矩陣numpy、時間序列pandas
- 設計應用的演算法邏輯(200)
- 開發應用的GUI界面(200)
- 使用表格(TableWidget)
- 調整顯示方式(GroupBox、TabWidget)
- 數據選擇工具(ComboBox,SpinBox)
- 使用按鈕調用功能
- 將模塊載入到vn.trader中
- 應用模塊的設計思路(200)
RPC(400)
- 什麼時候應該使用vn.rpc模塊
- 伺服器端RpcServer和客戶端RpcClient的介紹
- 伺服器端的開發
- 客戶端的開發
- vn.rpc模塊的工作原理
- 使用中需要注意的細節(如線程安全、心跳等)
介面封裝
- 各種API的介紹和對比(200)
- API類模塊的編譯和使用(vn.ctp、vn.lts等)(200)
- 類CTP交易API(200)
- 工作原理
- 封裝設計
- Interactive Brokers(IB)的API(200)
- 工作原理
- 封裝設計
- 其他API(400)
- oanda
- wind
- shzd
- okcoin
社區協作
之前的一些文檔編寫大多是本人獨自在做,接下來打算藉助社區的力量來一起完成這個新的項目文檔。
既然涉及到團隊協作就需要一套協作流程,每個章節的編寫流程如下(初步計劃,有不合理的地方歡迎指出):
- 作者(社區成員)選擇自己有興趣編寫的章節並聯繫本人來確定一些細節:是否已有人在編寫、內容框架、完成時間和報酬費用(下面會提到)等;
- 細節確認無誤後,作者就可以開始本章節的編寫;
- 在編寫文檔的過程中,遇到技術方面的難題可以直接聯繫本人,會幫助優先解決;
- 作者完成文檔的編寫後發送給本人,本人會和作者一起對文檔內容做回顧和修改;
- 本人將最終完成的文檔發布到http://vnpy.org網站上的文檔板塊,並向作者支付報酬費用;
- 之前的目錄中,部分章節旁邊有一個括弧中的數字,就是該章節計劃的報酬費用,某些是需要完成一個子章節,某些是需要完成一個完整的章節。
開始的時候計劃自己來寫幾篇文檔作為範例來給社區參考,為了給社區其他作者更多學習實踐的機會,我會選擇相對較為簡單的章節(其實純粹就是為了偷懶~)。
綜上,社區作者在這個新文檔編寫工作中才是最重要的角色,本人更多只是扮演一個組織者。相應的,對於社區作者來說,參與文檔的編寫也能為你的交易和職業生涯帶來一些幫助:
- 全面了解vn.py框架:除非自己已經弄得非常明白了,否則很難寫出能讓別人明白的文檔;
- 遇到技術問題時的優先幫助:現在社區群的規模已經較大,很多用戶的提問我沒有辦法一一解答(QQ未讀信息已經積累一堆了),對於文檔作者我會提供自己的微信和手機,方便直接聯繫和保證問題的解答,同時也會分享自己在做量化交易過程中的一些實戰經驗;
- 加入vn.py項目貢獻者名單:章節發布後署名,擁有未來社區活動的優先參與資格,同時對於很多招聘Python方向量化職位的金融機構來說,有vn.py的項目經驗也是一個不錯的加分項;
- 報酬費用:金額不多估計只夠買買咖啡,更多是表達整個社區對文檔作者的一份感謝。
有興趣參與的朋友請直接qq私信我或者發郵件到vn.py@foxmail.com,提前謝過。
推薦閱讀: