【C# 群益 API 開發教學】取得商品報價、Tick、最佳 5 檔教學

【C# 群益 API 開發教學】取得商品報價、Tick、最佳 5 檔教學 #CH3

群益 API 是利用自己開發的程式,結合群益 API 在群益券商下單的一種方式,通常是做程式交易下單,或是單純讀取報價也行。

此範例教學是我看群益 API 的範例,再重新做出我要的程式交易功能。

這個章節是利用 API 取得商品報價的範例,報價回傳即時成交資訊、Tick 以及最佳 5 檔回傳。

如果需要實際操作才好學習的話,在最後我會提供原始碼範例下載連結,可以在自己電腦執行看看。

我在寫程式碼時盡量把註解說明清楚一點,這樣可以幫助想學習的人看懂一些,完整的功能還是要看官方的文件和範例喔。

在往下看之前,我還是先提醒一下,我設計的介面是為了教學而簡單設計的,給大家學習參考而已,完整的功能還是要看官方的文件和範例喔。

前置作業

群益 API 官網範例下載位置: 群益 API

此篇文章的內容是接續上一篇文章繼續說明,在上一篇裡面,我們完成了新建專案、註冊元件以及群益帳號密碼登入測試。

在登入成功之後,可以儲存帳號密碼,在接下來取得報價之前,就會讀取帳號密碼自動登入。

設計介面

打開 VS 之後,可以照我的畫面,拉出這個設計檢視。

上面紅色字是控制項與 ID,好方便以下程式碼對應。

主要功能是用下拉來指定商品,再拉出 3 個 DataGridView ,分別放最新報價、Tick 以及最佳 5 檔。
最後在上面放上按鈕來啟動報價。
下方的文字區就顯示過程訊息。

程式碼說明

閱讀前提醒一下,我只會將重點語法拿出來講解喔,想要看完整程式碼及操作的話,可以到文末下載範例來看。

初始化動作

在群益 API 呼叫之前,都需要先初始化物件。對於報價訂閱後,還需要宣告接受事件。
然後在初始化動作裡面,我特別增加了一些交易商品。

群益 API 國內報價連線

要取得報價之前,需要先連線,等待連線成功的回應之後。才能繼續下一步。

等待報價連線回應事件

在連線回應裡面當狀態為連線成功的時候,我們就直接呼叫訂閱報價、Tick 與最佳 5 檔。

群益 API 訂閱最新報價

取得最新報價是要回傳開盤、最高、最低、成交價、成交量等相關資料,並且當有最新價格時,就要觸發回應事件。

程式碼分為取得商品相關資訊以及訂閱報價回傳事件。

當有新的報價時,就會觸發以下程式碼:

群益 API 訂閱 Tick

Tick 是每次成交的價格記錄,回傳的資訊就是基本的時間、成交價、數量、委買賣等資訊。

要訂閱 Tick 以及最佳 5 檔是同一個呼叫函式,只要呼叫這函式後,就可以接收到 2 種回應事件。

建立 Tick 回應事件等待觸發。

我特地把它給的時間轉成習慣的格式,這種格式比較好閱讀,同時也是可以直接寫入資料庫的格式。
當接收到最新 Tick 時,就同時顯示在 DataGridView 上面。

群益 API 訂閱最佳 5 檔

最佳 5 檔是由最高委買價格前 5 名,以及最低委賣價格前 5 名,合併在一起的資訊。
我將這些資訊合併在同一個排名上顯示,這也是大多數券商看盤軟體常見的方式。

要訂閱最佳 5 檔跟剛剛的 Tick 是同一個呼叫函式,只要呼叫這函式後,就可以接收到 2 種回應事件。

建立最佳 5 檔回應事件等待觸發。

執行畫面

以上重點講解了程式碼,接下來就看一下執行後的畫面。

在執行「開始報價」之後,就會呼叫報價函式,等待連線成功之後,就會開始即時更新最新價格。

重點整理

  1. 設計報價畫面,包函價格、Tick 以及最佳 5 檔。
  2. 註冊報價回傳事件。
  3. 呼叫報價訂閱函式。
  4. 即時接收報價並顯示在畫面上。

範例下載

連結 GitHub 下載範例

下一篇教學文章

實際網頁專案開發範例

此連結是我實際應用在網頁上呈現的範例: Winvest 雲投資

相關學習文章

如果你在學習上有不懂的地方,需要諮詢服務,可以參考站長服務,我想辨法解決你的問題
如果文章內容有過時、不適用或錯誤的地方,幫我在下方留言通知我一下,謝謝

加入社團一起討論

關注我的 IG

2 thoughts on “【C# 群益 API 開發教學】取得商品報價、Tick、最佳 5 檔教學 #CH3

  1. 請問有辦法在盤後取得股票盤中歷史五檔掛單的資料嗎? 以及買賣成交明細能透過群益API取得嗎? 謝謝

    1. 盤中五檔在盤後就取不到了
      群益API 可以回報成交明細,從成交回報可以返推明細,但回報至多久以前的我忘了

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

sixteen − 1 =


The reCAPTCHA verification period has expired. Please reload the page.