vn.py文檔編寫計劃

雞年的第一篇文章,給各位讀者拜個年,祝大家新的一年身體健康,全家幸福~

需求

之前在vn.py項目2017年計劃裡面提到,如果對vn.py社區用戶們的需求情況做個排序,項目文檔絕對可以排在第一位。尤其對於新手而言,目前能找到的文檔資料比較零碎,只能自己去看源代碼,學習曲線比較陡,也讓很多人望而卻步。

誤區

之前走入了一個誤區,因為自己是作者的關係對整個項目的了解比較全面,所以寫文檔的時候是從開發者的角度,按照自己一步步開發vn.py項目的順序在寫:CTP介面原理、介面封裝、事件引擎、GUI界面、應用模塊開發等。直接的後果就是導致用戶上來就先接觸最難的底層部分,然後才一點點過度到自己實際應用中會用到的上層開發部分,學習效率非常低下。

用戶

接下來新的文檔準備從用戶的角度來寫:先講安裝配置、基本使用,讓用戶能先把vn.py跑起來,不用再到處問環境怎麼配置;然後介紹如何使用CTA模塊來開發交易策略,如何結合風控模塊來做事前風險管理;下一步講解基於事件引擎的擴展模塊的開發方式,使得用戶能夠去實現一些比較複雜的功能應用;最後再介紹介面封裝、架構細節等內容,讓有興趣的用戶來進一步提高。

不再廢話了,直接進入目錄。

目錄

  1. 安裝配置

    1. Windows(200)

      1. Python環境:Anaconda安裝
      2. VS2013運行時:vcredist x86
      3. 資料庫:MongoDB、RoboMongo
      4. Python庫:pip安裝
      5. 成功運行
    2. Ubuntu(200)

      1. 環境安裝
      2. API編譯(Linux下的鏈接問題)
      3. 成功運行
  2. 基本使用(400)

    1. 配置介面的賬號、密碼、伺服器地址等,並測試連接
    2. 日誌信息、合約列表查詢、行情訂閱
    3. 手動下單、撤單,成交和委託的數據監控
    4. 錯誤、持倉、資金的數據監控
    5. 其他貼士:窗口拖動、還原,一鍵測試功能
  3. CTA策略

    1. 模塊文件介紹(200)

      1. 每個文件的功能說明
      2. 文件內模塊的關係圖
    2. 策略回測(400)

      1. 回測引擎API的使用
      2. 讀懂回測報告
      3. 參數優化(普通模式)
      4. 多進程優化
    3. 策略實盤(200)

      1. 載入策略到CTA引擎
      2. 編寫策略實例的json配置文件
      3. 使用CTA監控組件來管理策略的生命周期
      4. 策略實盤過程中的運維細節
    4. 策略開發(600)

      1. 策略模板CtaTemplate介紹
      2. 委託類型
      3. 時間序列數據結構
      4. 使用talib中的技術指標
  4. 事前風控(200)

    1. 使用風控模塊RiskManager
    2. 風控規則配置
    3. 添加自定義規則
  5. 行情解決方案(200)

    1. 使用行情記錄模塊DataRecorder
    2. 配置行情記錄的規則
    3. 歷史數據下載功能ctaHistory.py
  6. 事件引擎(400)

    1. 事件引擎的結構
    2. 事件引擎的啟動和停止
    3. 事件引擎的工作流程
    4. 事件處理函數
    5. 定時器事件
    6. 使用中需要注意的細節
  7. 應用開發

    1. 應用模塊的設計思路(200)
      1. 監聽事件(事件引擎)
      2. 調用功能(主引擎)
    2. 使用合理的數據結構來解決問題(200)
      1. 列表list、字典dict、集合set
      2. 特殊結構collections
      3. 矩陣numpy、時間序列pandas
    3. 設計應用的演算法邏輯(200)
    4. 開發應用的GUI界面(200)
      1. 使用表格(TableWidget)
      2. 調整顯示方式(GroupBox、TabWidget)
      3. 數據選擇工具(ComboBox,SpinBox)
      4. 使用按鈕調用功能
    5. 將模塊載入到vn.trader中
  8. RPC(400)

    1. 什麼時候應該使用vn.rpc模塊
    2. 伺服器端RpcServer和客戶端RpcClient的介紹
    3. 伺服器端的開發
    4. 客戶端的開發
    5. vn.rpc模塊的工作原理
    6. 使用中需要注意的細節(如線程安全、心跳等)
  9. 介面封裝

    1. 各種API的介紹和對比(200)
    2. API類模塊的編譯和使用(vn.ctp、vn.lts等)(200)
    3. 類CTP交易API(200)
      1. 工作原理
      2. 封裝設計
    4. Interactive Brokers(IB)的API(200)
      1. 工作原理
      2. 封裝設計
    5. 其他API(400)
      1. oanda
      2. wind
      3. shzd
      4. okcoin

社區協作

之前的一些文檔編寫大多是本人獨自在做,接下來打算藉助社區的力量來一起完成這個新的項目文檔。

既然涉及到團隊協作就需要一套協作流程,每個章節的編寫流程如下(初步計劃,有不合理的地方歡迎指出):

  1. 作者(社區成員)選擇自己有興趣編寫的章節並聯繫本人來確定一些細節:是否已有人在編寫、內容框架、完成時間和報酬費用(下面會提到)等;
  2. 細節確認無誤後,作者就可以開始本章節的編寫;
  3. 在編寫文檔的過程中,遇到技術方面的難題可以直接聯繫本人,會幫助優先解決;
  4. 作者完成文檔的編寫後發送給本人,本人會和作者一起對文檔內容做回顧和修改;
  5. 本人將最終完成的文檔發布到vnpy.org網站上的文檔板塊,並向作者支付報酬費用;
  6. 之前的目錄中,部分章節旁邊有一個括弧中的數字,就是該章節計劃的報酬費用,某些是需要完成一個子章節,某些是需要完成一個完整的章節。

開始的時候計劃自己來寫幾篇文檔作為範例來給社區參考,為了給社區其他作者更多學習實踐的機會,我會選擇相對較為簡單的章節(其實純粹就是為了偷懶~)。

綜上,社區作者在這個新文檔編寫工作中才是最重要的角色,本人更多只是扮演一個組織者。相應的,對於社區作者來說,參與文檔的編寫也能為你的交易和職業生涯帶來一些幫助:

  1. 全面了解vn.py框架:除非自己已經弄得非常明白了,否則很難寫出能讓別人明白的文檔;
  2. 遇到技術問題時的優先幫助:現在社區群的規模已經較大,很多用戶的提問我沒有辦法一一解答(QQ未讀信息已經積累一堆了),對於文檔作者我會提供自己的微信和手機,方便直接聯繫和保證問題的解答,同時也會分享自己在做量化交易過程中的一些實戰經驗;
  3. 加入vn.py項目貢獻者名單:章節發布後署名,擁有未來社區活動的優先參與資格,同時對於很多招聘Python方向量化職位的金融機構來說,有vn.py的項目經驗也是一個不錯的加分項;
  4. 報酬費用:金額不多估計只夠買買咖啡,更多是表達整個社區對文檔作者的一份感謝。

有興趣參與的朋友請直接qq私信我或者發郵件到vn.py@foxmail.com,提前謝過。

推薦閱讀:

TAG:交易 | 金融 | Python |