Want to read this in english ? Go here
VeighNa是一套基於Python的開源量化交易系統開發框架,在開源社群中持續不斷的貢獻下一步步成長為多功能量化交易平台,自發布以來已經積累了眾多來自金融機構或相關領域的用戶,包括私募基金、證券公司、期貨公司等。
專業交易員的【VeighNa Elite量化終端】已經正式發布,針對專業交易員群體在海量策略並發、智慧移倉換月、演算法拆單執行、多帳戶交易支援等方面的需求提供了完善支援。了解更詳細的資訊請掃描下方二維碼追蹤後,點選選單列的【社群交流-> Elite會員服務】即可:
在使用VeighNa進行二次開發(策略、模組等)的過程中有任何疑問,請查看VeighNa項目文檔,如果無法解決請前往官方社區論壇的【提問求助】板塊尋求幫助,也歡迎在【經驗分享】板塊分享你的使用心得!
想要獲取更多關於VeighNa的資訊資訊?請掃描下方二維碼添加小助手加入【VeighNa社區交流微信群】:
多功能量化交易平台(trader),整合了多種交易接口,並針對具體策略演算法和功能開發提供了簡潔易用的API,用於快速建立交易員所需的量化交易應用。
涵蓋國內外所擁有的下述交易品種的交易介面(gateway):
國內市場
CTP(ctp):國內期貨、選擇權
CTP Mini(mini):國內期貨、選擇權
CTP證券(sopt):ETF選擇權
飛馬(femas):國內期貨
恆生UFT(uft):國內期貨、ETF選擇權
易盛(esunny):國內期貨、黃金TD
頂點飛創(sec):ETF選擇權
頂點HTS(hts):ETF選擇權
中泰XTP(xtp):國內證券(A股)、ETF選擇權
華鑫奇點(tora):國內證券(A股)、ETF選擇權
國泰君安(hft):國內證券(A股、兩融)
東證OST(ost):國內證券(A股)
東方財富EMT(emt):國內證券(A股)
飛鼠(sgit):黃金TD、國內期貨
金仕達黃金(ksgold):黃金TD
利星資管(lstar):期貨資管
融航(rohon):期貨資管
傑宜斯(jees):期貨資管
中匯億達(comstar):銀行間市場
掘金(gm):國內證券(模擬)
恆生雲UF(uf):國內證券(模擬)
TTS(tts):國內期貨(仿真)
海外市場
Interactive Brokers(ib):海外證券、期貨、選擇權、貴金屬等
易盛9.0外盤(tap):海外期貨
直達期貨(da):海外期貨
特殊應用
RQData行情(rqdata):跨市場(股票、指數、ETF、期貨)即時行情
迅投研行情(xt):跨市場(股票、指數、可轉債、ETF、期貨、選擇權)即時行情
RPC服務(rpc):跨進程通訊接口,用於分散式架構
涵蓋下述各類量化策略的交易應用(app):
cta_strategy:CTA策略引擎模組,在保持易用性的同時,允許使用者針對CTA類策略運作過程中委託的報撤行為進行細粒度控制(降低交易滑點、實現高頻策略)
cta_backtester:CTA策略回測模組,無需使用Jupyter Notebook,直接使用圖形介面進行策略回測分析、參數最佳化等相關工作
spread_trading:價差交易模組,支援自訂價差,即時計算價差行情和持倉,支援價差演算法交易以及自動價差策略兩種模式
option_master:選擇權交易模組,針對國內選擇權市場設計,支援多種選擇權定價模型、隱含波動率曲面計算、希臘值風險追蹤等功能
portfolio_strategy:組合策略模組,以同時交易多合約的量化策略(Alpha、選擇權套利等),提供歷史資料回測和實盤自動交易功能
algo_trading:演算法交易模組,提供多種常用的智慧交易演算法:TWAP、Sniper、Iceberg、BestLimit等
script_trader:腳本策略模組,面向多標的類別量化策略和計算任務設計,同時也可以在命令列中實作REPL指令形式的交易,不支援回測功能
paper_account:本地模擬模組,純本地化實現的模擬模擬交易功能,基於交易介面所取得的即時行情進行委託撮合,提供委託成交推送以及持倉記錄
chart_wizard:K線圖表模組,基於RQData數據服務(期貨)或交易介面取得歷史數據,並結合Tick推送顯示即時行情變化
portfolio_manager:交易組合管理模組,以獨立的策略交易組合(子帳戶)為基礎,提供委託成交記錄管理、交易部位自動追蹤以及每日盈虧即時統計功能
rpc_service:RPC服務模組,允許將某一進程啟動為服務端,作為統一的行情和交易路由通道,允許多客戶端同時連接,實現多進程分散式系統
data_manager:歷史資料管理模組,透過樹狀目錄查看資料庫中已有的資料概況,選擇任意時間段資料查看欄位細節,支援CSV檔案的資料匯入與匯出
data_recorder:行情記錄模組,基於圖形介面進行配置,依需求即時錄製Tick或K線行情到資料庫中,用於策略回測或實盤初始化
excel_rtd:Excel RTD(Real Time Data)即時資料服務,基於pyxll模組實現在Excel中取得各類資料(行情、合約、持倉等)的即時推播更新
risk_manager:風險管理模組,提供包含交易流程控、下單數量、活動委託、撤單總數等規則的統計與限制,有效實現前端風控功能
web_trader:Web服務模組,針對BS架構需求設計,實作了提供主動函數呼叫(REST)和被動資料推送(Websocket)的Web伺服器
Python交易API介面封裝(api),提供上述交易介面的底層對接實作。
REST Client(rest):基於協程非同步IO的高效能REST API客戶端,採用事件訊息循環的程式設計模型,支援高並發即時交易請求發送
Websocket Client(websocket):基於協程非同步IO的高效能Websocket API客戶端,支援和REST Client共用事件循環並發運行
簡潔易用的事件驅動引擎(event),作為事件驅動型交易程序的核心。
對接各類別資料庫的適配器介面(database):
SQL類
SQLite(sqlite):輕量級單檔案資料庫,無需安裝和配置資料服務程序,VeighNa的預設選項,適合入門新手用戶
MySQL(mysql):主流的開源關聯式資料庫,文件資料極為豐富,且可取代其他NewSQL相容實作(如TiDB)
PostgreSQL(postgresql):特性更豐富的開源關聯式資料庫,支援透過擴充插件來新增功能,只推薦熟手使用
NoSQL類
DolphinDB(dolphindb):一款高效能分散式時序資料庫,適用於對速度需求極高的低延遲或即時性任務
Arctic(arctic):高效能金融時序資料庫,採用了分塊化儲存、LZ4壓縮等效能最佳化方案,以實現時序資料的高效讀寫
TDengine(taos):分散式、高效能、支援SQL的時序資料庫,有內建的快取、串流運算、資料訂閱等系統功能,能大幅減少研發和維運的複雜度
TimescaleDB(timescaledb):基於PostgreSQL開發的時序資料庫,以插件化擴充的形式安裝,支援自動以空間和時間對資料進行分區
MongoDB(mongodb):基於分散式檔案儲存(bson格式)的文檔式資料庫,內建的熱資料記憶體快取提供更快讀寫速度
InfluxDB(influxdb):針對TimeSeries Data專門設計的時序資料庫,列式資料儲存提供極高的讀寫效率與週邊分析應用
LevelDB(leveldb):由Google推出的高效能Key/Value資料庫,基於LSM演算法實現進程內儲存引擎,支援數十億層級的大量數據
對接下述各類資料服務的適配器介面(datafeed):
迅投研(xt):股票、期貨、選擇權、基金、債券
米筐RQData(rqdata):股票、期貨、選擇權、基金、債券、黃金TD
詠春大師(voltrader):期貨、選擇權
恆生UData(udata):股票、期貨、選擇權
TuShare(tushare):股票、期貨、選擇權、基金
萬得Wind(wind):股票、期貨、基金、債券
天軟Tinysoft(tinysoft):股票、期貨、基金、債券
同花順iFinD(ifind):股票、期貨、基金、債券
天勤TQSDK(tqsdk):期貨
跨進程通訊標準元件(rpc),用於實現分散式部署的複雜交易系統。
Python高效能K線圖表(chart),支援大數據量圖表顯示以及即時資料更新功能。
社群論壇和知乎專欄,內容包括VeighNa專案的開發教學課程和Python在量化交易領域的應用研究等內容。
官方交流群262656087(QQ),管理嚴格(定期清除長期潛水的成員),入群費將捐贈給VeighNa社區基金。
註:以上關於功能特點的說明為依據說明文件發佈時情況羅列,後續可能有更新或調整。若功能描述同實際存在出入,歡迎透過Issue聯繫進行調整。
在這裡下載Release發布版本,解壓縮後執行以下命令安裝:
Windows
install.bat
Ubuntu
bash install.sh
Macos
bash install_osx.sh
注意:setup.cfg中列舉了VeighNa框架安裝所需的依賴函式庫,requirements.txt中給出了這些依賴函式庫的建議安裝版本。
在SimNow註冊CTP仿真帳號,並在該頁面取得經紀商代碼以及交易行情伺服器位址。
在VeighNa社區論壇註冊獲得VeighNa Station帳號密碼(論壇帳號密碼即是)
啟動VeighNa Station(安裝VeighNa Studio後會在桌面上自動建立捷徑),輸入上一個步驟的帳號密碼登入
點擊底部的VeighNa Trader按鈕,開始你的交易! ! !
注意:
除了基於VeighNa Station的圖形化啟動方式外,也可以在任何目錄下建立run.py,寫入下列範例程式碼:
from vnpy . event import EventEngine
from vnpy . trader . engine import MainEngine
from vnpy . trader . ui import MainWindow , create_qapp
from vnpy_ctp import CtpGateway
from vnpy_ctastrategy import CtaStrategyApp
from vnpy_ctabacktester import CtaBacktesterApp
def main ():
"""Start VeighNa Trader"""
qapp = create_qapp ()
event_engine = EventEngine ()
main_engine = MainEngine ( event_engine )
main_engine . add_gateway ( CtpGateway )
main_engine . add_app ( CtaStrategyApp )
main_engine . add_app ( CtaBacktesterApp )
main_window = MainWindow ( main_engine , event_engine )
main_window . showMaximized ()
qapp . exec ()
if __name__ == "__main__" :
main ()
在該目錄下開啟CMD(按住Shift->點選滑鼠右鍵->在此處開啟命令視窗/PowerShell)後執行下列指令啟動VeighNa Trader:
python run.py
VeighNa使用Github託管其原始程式碼,如果希望貢獻程式碼請使用github的PR(Pull Request)的流程:
創建Issue - 對於較大的改動(如新功能,大型重構等)建議先開issue討論一下,較小的improvement(如文檔改進,bugfix等)直接發PR即可
Fork VeighNa - 點選右上角Fork按鈕
Clone你自己的fork: git clone https://github.com/$userid/vnpy.git
從dev建立你自己的feature branch: git checkout -b $my_feature_branch dev
在$my_feature_branch上修改並將修改push到你的fork上
建立從你的fork的$my_feature_branch分支到主專案的dev分支的[Pull Request] - 在此點擊compare across forks ,選擇需要的fork和branch建立PR
等待review, 需要繼續改進,或是被Merge!
在提交代碼的時候,請遵守以下規則,以提高程式碼品質:
flake8
即可。 MIT