一、計畫介紹
本計畫是一款 面向程式化交易員的專業交易軟體 。 它的設計初衷是為了解決商業付費軟體擴充套件性不強、以及對入門級投資者而言費用門檻過高的問題。 Northstar 的設計初衷就是面向實盤交易的。而且 Northstar 是高度可延伸的一站式設計,一個程式便可以對接不同的交易所API,目前對接了 國內期貨CTP介面 等交易所,未來可以對接更多的交易所介面。 軟體本身已經提供一些基礎的策略績效統計功能,能直觀地看到交易策略的歷史表現情況。它整合了Tensorflow,具備了 整合人工智慧模型的能力 ,能使交易策略的變得更加智慧。
二、架構設計
業務場景分析
# 架構方案說明
方案說明
藍色虛線框為
Northstar
的主體程式部份。可以按數據流的流向大體分為
左右
與
上下
兩個方向
左右
方向上的數據流代表著外部閘道器的數據流,
從左往右看,是閘道器流入的數據,包括行情數據、訂單響應數據、成交數據、帳戶與持倉數據,經過平台的統一處理與事件分發,最終傳到策略層;
從右住左看,是策略層的操作指令數據,包括委托請求、撤單請求;
上下
方向上的數據流代表著與監控台互動的數據流,
從上往下看,是監控台發來的各種請求數據,包括閘道器、模組等配置資訊的增刪改查請求;
從下往上看,則是對應請求的響應。
#
源碼目錄結構# 子計畫說明
如圖所示,northstar由多個子計畫構成,其中:
northstar-api
:是介面定義,凡是對外暴露的介面都會存放在這裏。
northstar-external-archetype
:是樣版計畫的元配置,用於生成樣版計畫;
northstar-gateway-common
:是閘道器層的通用介面、抽象類別定義;
northstar-gateway-xxx
:是具體的閘道器適配,例如
northstar-gateway-ctp
代表CTP的閘道器適配。部份核心模組也會以閘道器的形式進行統一抽象,例如回放閘道器與模擬閘道器
northstar-main
:是計畫的核心程式碼。
northstar-monitor
:是前端監控台套用程式碼;
northstar-strategy-example
:是範例策略程式碼;
# 核心模組說明
核心模組可以在架構圖上找對一一對應關系:
account
對應帳戶層
module
對應模組層
event
對應事件引擎
data
對應數據層
indicator
對應指標框架
web
對應web容器
# 核心介面說明
所有外部依賴的API都在核心介面中:
common
代表通用介面
gateway
代表閘道器介面
strategy
代表策略介面
data
代表數據介面
indicator
代表指標框架(為了簡化復雜度,指標的具體演算法也放置在此)
三、產品功能介紹與頁面
使用者UI界面是量化交易軟體的監控台。由於程式化策略是自動化執行的,監控台只是提供一個可以監控程式與策略執行狀態的視覺化界面。
監控台是否開啟,並不影響程式化策略的執行。
#
登入頁LOGO後面的小字型是程式的版本號
預設的使用者名稱/密碼:
admin
/
123456
# 行情管理
行情管理界面是用於管理行情閘道器,目前可用的閘道器型別有以下幾種:
CTP
: 是國內期貨CTP閘道器,對接的是實盤數據,主要用於實際交易;
SIM
: 是本地隨機行情閘道器,隨機生成模擬數據,主要用於程式試執行;
PLAYBACK
: 是歷史行情回放閘道器,對接的是實盤的歷史行情數據,主要用於策略回測;
TIGER
: 是老虎證券行情閘道器,主要用於接收外盤股票行情;
閘道器型別
,表示當前閘道器的型別。其中PLAYBACK
行情閘道器可以有多個,其他行情閘道器只能有一個;連線狀態
,表示當前閘道器的連線狀態;行情反饋
,表示當前閘道器是否有接收到新行情數據。以CTP
為例,停盤時段行情反饋為-
;開盤時段行情反饋為活躍
;操作區
,用於閘道器的增刪改查、連線與斷開。
# 帳戶管理
帳戶管理界面是用於管理交易帳戶,目前可用的帳戶型別有以下幾種:
CTP
: 是國內期貨CTP帳戶,對接的是實盤帳戶,主要用於實際交易;
SIM
: 是本地實作的模擬帳戶,對交易操作進行模擬撮合,主要用於驗證交易策略與驗證程式;
TIGER
: 是老虎證券交易閘道器,主要用於外盤股票交易;
帳戶型別
,表示當前帳戶的型別。每種型別的帳戶都可以有多個;連線狀態
,表示當前帳戶的連線狀態;關聯閘道器
,表示當前帳戶要繫結哪個行情閘道器的數據與合約資訊,例如對於同一個模擬帳戶而言,當繫結一個CTP行情閘道器時,它進行模擬交易的資料來源就是CTP的行情數據;當繫結一個PLAYBACK行情閘道器時,它進行模擬交易的資料來源就是PLAYBACK閘道器所回放的行情數據;操作區
,用於帳戶的增刪改查、連線與斷開、以及模擬帳戶的出入金操作。
# 模組管理
模組管理界面是用於管理程式化交易模組。
所謂模組,就是一個程式化策略執行單元。它定義了采用哪個
程式化策略
在哪個
交易帳戶
上交易哪個
合約
。
模組型別
,表示當前模組的型別。目前可選的型別有兩種:投機
,套利
;模組用途
,表示當前模組的用途,方便使用者區分模組的套用階段。目前可選的型別有三種:
回測
,僅能用於繫結了
PLAYBACK
行情閘道器、
SIM
帳戶閘道器的模組
模擬盤
,僅能用於繫結了
SIM
帳戶閘道器的模組
實盤
,僅能用於繫結了實盤帳戶與實盤行情的模組
模組周期
,表示當前模組所收到的Bar數據是基於多少分鐘計算所得;
交易策略
,表示當前模組所使用的是哪一個自訂的程式化交易策略;
平倉最佳化
,表示當前模組所使用的平倉最佳化策略是哪個。目前可選的有三種:
先開先平
,策略平倉時會自動選擇按時間順序平倉;
優先平今
,策略平倉時會自動優先平倉當天開的倉位。通常適用於有平今優惠的品種;
平昨鎖今
,策略平倉時會自動優先平倉非當天開的他們,對於當天開的倉位,采用鎖倉對沖。通常適用於平今手續費特別貴的品種;
繫結帳戶
,表示當前模組所使用的交易帳戶是哪個,繫結帳戶可以有多個;
繫結合約
,表示當前模組所繫結的合約是哪個或者哪幾個;
當前狀態
,表示當前模組是否處於啟用狀態。
操作區
,用於對模組進行增刪改查、啟用與停用、以及監控模組的執行狀態。
# 手工期貨交易
手工期貨交易界面是用於對行情數據、模擬帳戶、交易介面進行手工驗證的界面,同時也可以作為人工應急幹預的手段。
交易帳戶
,表示當前要交易的是哪個帳戶;交易合約
,表示當前要交易的是哪個合約;合因數據延時
,表示當前K線數據與本地時間之間的延時;合約行情數據
,用於顯示交易合約的歷史行情數據。
特別說明:本程式的K線時間戳是取收盤時間值,坊間軟體有部份是取開盤時間值,因此在對比行情數據時要註意此差異。
# 日誌跟蹤
日誌跟蹤界面是為了方便使用者檢視服務日誌而設,它實際上是讀取伺服器的日誌檔內容。日誌跟蹤界面設定了兩種模式:
系統日誌模式
:系統日誌指除策略模組外的系統日誌;在Tabs分頁直接點選,則進入該模式。
模組日誌模式
:指以模組名為標識的日誌檔;在模組管理頁的模組中點選【日誌跟蹤】,則進入該模式。
# 信件通知設定
在任意頁面點選右上角的【信件通知設定】,可以設定相關的事件訂閱,並以信件的方式發送通知。以便於在不開啟監控台的情況下收到事件推播。
# 結束登入
在任意頁面點選右上角的【結束登入】按鈕,可以結束當前登入。
原始碼下載地址:
https://gitee.com/dromara/northstar.git
看到最後,如果這個計畫對你有用,一定要給我點個「 在看和贊 」。