當前位置: 妍妍網 > 碼農

10.2k star! 國內最優秀的基於JAVA的AI開源量化交易平台

2024-06-04碼農

一、計畫介紹

本計畫是一款 面向程式化交易員的專業交易軟體 它的設計初衷是為了解決商業付費軟體擴充套件性不強、以及對入門級投資者而言費用門檻過高的問題。 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 : 是老虎證券行情閘道器,主要用於接收外盤股票行情;

    1. 閘道器型別 ,表示當前閘道器的型別。其中 PLAYBACK 行情閘道器可以有多個,其他行情閘道器只能有一個;

    2. 連線狀態 ,表示當前閘道器的連線狀態;

    3. 行情反饋 ,表示當前閘道器是否有接收到新行情數據。以 CTP 為例,停盤時段行情反饋為 - ;開盤時段行情反饋為 活躍

    4. 操作區 ,用於閘道器的增刪改查、連線與斷開。

    # 帳戶管理

    帳戶管理界面是用於管理交易帳戶,目前可用的帳戶型別有以下幾種:
    CTP : 是國內期貨CTP帳戶,對接的是實盤帳戶,主要用於實際交易;
    SIM : 是本地實作的模擬帳戶,對交易操作進行模擬撮合,主要用於驗證交易策略與驗證程式;
    TIGER : 是老虎證券交易閘道器,主要用於外盤股票交易;

    1. 帳戶型別 ,表示當前帳戶的型別。每種型別的帳戶都可以有多個;

    2. 連線狀態 ,表示當前帳戶的連線狀態;

    3. 關聯閘道器 ,表示當前帳戶要繫結哪個行情閘道器的數據與合約資訊,例如對於同一個模擬帳戶而言,當繫結一個CTP行情閘道器時,它進行模擬交易的資料來源就是CTP的行情數據;當繫結一個PLAYBACK行情閘道器時,它進行模擬交易的資料來源就是PLAYBACK閘道器所回放的行情數據;

    4. 操作區 ,用於帳戶的增刪改查、連線與斷開、以及模擬帳戶的出入金操作。

    # 模組管理

    模組管理界面是用於管理程式化交易模組。

    所謂模組,就是一個程式化策略執行單元。它定義了采用哪個 程式化策略 在哪個 交易帳戶 上交易哪個 合約

    1. 模組型別 ,表示當前模組的型別。目前可選的型別有兩種: 投機 套利

    2. 模組用途 ,表示當前模組的用途,方便使用者區分模組的套用階段。目前可選的型別有三種:

  • 回測 ,僅能用於繫結了 PLAYBACK 行情閘道器、 SIM 帳戶閘道器的模組

  • 模擬盤 ,僅能用於繫結了 SIM 帳戶閘道器的模組

  • 實盤 ,僅能用於繫結了實盤帳戶與實盤行情的模組

  • 模組周期 ,表示當前模組所收到的Bar數據是基於多少分鐘計算所得;

  • 交易策略 ,表示當前模組所使用的是哪一個自訂的程式化交易策略;

  • 平倉最佳化 ,表示當前模組所使用的平倉最佳化策略是哪個。目前可選的有三種:

  • 先開先平 ,策略平倉時會自動選擇按時間順序平倉;

  • 優先平今 ,策略平倉時會自動優先平倉當天開的倉位。通常適用於有平今優惠的品種;

  • 平昨鎖今 ,策略平倉時會自動優先平倉非當天開的他們,對於當天開的倉位,采用鎖倉對沖。通常適用於平今手續費特別貴的品種;

  • 繫結帳戶 ,表示當前模組所使用的交易帳戶是哪個,繫結帳戶可以有多個;

  • 繫結合約 ,表示當前模組所繫結的合約是哪個或者哪幾個;

  • 當前狀態 ,表示當前模組是否處於啟用狀態。

  • 操作區 ,用於對模組進行增刪改查、啟用與停用、以及監控模組的執行狀態。

  • # 手工期貨交易

    手工期貨交易界面是用於對行情數據、模擬帳戶、交易介面進行手工驗證的界面,同時也可以作為人工應急幹預的手段。

    1. 交易帳戶 ,表示當前要交易的是哪個帳戶;

    2. 交易合約 ,表示當前要交易的是哪個合約;

    3. 合因數據延時 ,表示當前K線數據與本地時間之間的延時;

    4. 合約行情數據 ,用於顯示交易合約的歷史行情數據。
      特別說明:本程式的K線時間戳是取收盤時間值,坊間軟體有部份是取開盤時間值,因此在對比行情數據時要註意此差異。

    # 日誌跟蹤

    日誌跟蹤界面是為了方便使用者檢視服務日誌而設,它實際上是讀取伺服器的日誌檔內容。日誌跟蹤界面設定了兩種模式:

  • 系統日誌模式 :系統日誌指除策略模組外的系統日誌;在Tabs分頁直接點選,則進入該模式。

  • 模組日誌模式 :指以模組名為標識的日誌檔;在模組管理頁的模組中點選【日誌跟蹤】,則進入該模式。

  • # 信件通知設定

    在任意頁面點選右上角的【信件通知設定】,可以設定相關的事件訂閱,並以信件的方式發送通知。以便於在不開啟監控台的情況下收到事件推播。

    # 結束登入

    在任意頁面點選右上角的【結束登入】按鈕,可以結束當前登入。

    原始碼下載地址:

    https://gitee.com/dromara/northstar.git

    看到最後,如果這個計畫對你有用,一定要給我點個「 在看和贊 」。