【C# 群益 API 開發教學】期貨委託下單測試 #CH5
群益 API 是利用自己開發的程式,結合群益 API 在群益券商下單的一種方式,通常是做程式交易下單,或是單純讀取報價也行。
這個章節是簡單的委託下單測試,選擇商品、價格、買賣方向等資料,送出委託單給券商。
此範例教學是我看群益 API 的範例,再重新做出我要的程式交易功能。
如果需要實際操作才好學習的話,在最後我會提供原始碼範例下載連結,可以在自己電腦執行看看。
我在寫程式碼時盡量把註解說明清楚一點,這樣可以幫助想學習的人看懂一些,完整的功能還是要看官方的文件和範例喔。
前置作業
群益 API 官網範例下載位置: 群益 API
此篇文章的內容是接續上一篇文章繼續說明,在上一篇裡面,我們完成了兩個期貨商品的價格比較,當有價格差異時,會有訊號出現。
這一章節就先做一個簡單的下單測試,學會了下單之後,就可以結合訊號出現時接續下單。
群益 API 下單介面設計
打開 VS 之後,可以照我的畫面,拉出這個設計檢視。
上面紅色字是控制項與 ID,好方便以下程式碼對應。
上面的欄位都是期貨下單會用到的欄位,最後增加一個按鈕來送出委託單。
群益 API 程式碼說明
閱讀前提醒一下,我只會將重點語法拿出來講解喔,想要看完整程式碼及操作的話,可以到文末下載範例來看。
Form_Load 初始化動作
在表單開啟時,增加下拉的項目,初始化群益 API 物件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
// 加入商品下拉 cboSymbolCode.Items.Add(new ComboboxItem("TX00", "大台指期近月")); cboSymbolCode.Items.Add(new ComboboxItem("MTX00", "小台指期近月")); cboSymbolCode.Items.Add(new ComboboxItem("TE00", "電子期近月")); cboSymbolCode.Items.Add(new ComboboxItem("ZE0000", "小型電子期近月")); // 加入方向下拉 cboBuySell.Items.Add(new ComboboxItem("0", "BUY")); cboBuySell.Items.Add(new ComboboxItem("1", "SELL")); //加入方式下拉 cboTradeType.Items.Add(new ComboboxItem("0", "ROD")); cboTradeType.Items.Add(new ComboboxItem("1", "IOC")); cboTradeType.Items.Add(new ComboboxItem("2", "FOK")); // 加入倉別下拉 cboNewClose.Items.Add(new ComboboxItem("0", "新倉")); cboNewClose.Items.Add(new ComboboxItem("1", "平倉")); cboNewClose.Items.Add(new ComboboxItem("2", "自動")); // 群益 API 初始化物件 m_pSKCenter = new SKCenterLib();//登入&環境物件 m_pSKReply = new SKReplyLib();//回應物件 m_pSKOrder = new SKOrderLib();//下單物件 // 註冊群益 API 事件 m_pSKReply.OnReplyMessage += new _ISKReplyLibEvents_OnReplyMessageEventHandler(this.m_pSKReply_OnAnnouncement); //公告 |
送出委託單
首先登入帳號及取得憑證,接著建立下單物件後送出至券商。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
// 群益登入 m_pSKCenter.SKCenterLib_SetAuthority(1); // 呼叫群益帳號登入 nCode = m_pSKCenter.SKCenterLib_Login(user.CapitalUserId, user.CapitalUserPwd); // 取得回傳訊息 string msg = GetMessage("登入", nCode); if (nCode != 0 && nCode != 2003) { // 失敗 txtMessage.AppendText(msg + "\n"); return; } // 下單物件初始化 nCode = m_pSKOrder.SKOrderLib_Initialize(); msg = GetMessage("下單物件初始化", nCode); txtMessage.AppendText(msg + "\n"); // 讀取憑證 nCode = m_pSKOrder.ReadCertByID(user.CapitalUserId); if (nCode != 0 && nCode != 2005) { // 失敗 msg = GetMessage("讀取憑證", nCode); txtMessage.AppendText(msg + "\n"); return; } //建立期權下單物件 FUTUREORDER pFutureOrder = new FUTUREORDER(); pFutureOrder.bstrFullAccount = user.FutureAccount;//期貨帳號,分公司代碼+帳號7碼 pFutureOrder.bstrPrice = txtPrice.Text;//委託價格,「M」表示市價,「P」表示範圍市價 pFutureOrder.bstrStockNo = ComboUtil.GetItem(cboSymbolCode).Value;//委託期權代號 pFutureOrder.nQty = Convert.ToInt32(txtQty.Text);//交易口數 pFutureOrder.sBuySell = Convert.ToInt16(ComboUtil.GetItem(cboBuySell).Value);//0:買進 1:賣出 pFutureOrder.sDayTrade = 0;// 當沖0:否 1:是,可當沖商品請參考交易所規定。 pFutureOrder.sTradeType = Convert.ToInt16(ComboUtil.GetItem(cboTradeType).Value); //方式;0:ROD 1:IOC 2:FOK pFutureOrder.sNewClose = Convert.ToInt16(ComboUtil.GetItem(cboNewClose).Value);//新平倉,0:新倉 1:平倉 2:自動{新期貨、選擇權使用} pFutureOrder.sReserved = 0;//盤別,0:盤中(T盤及T+1盤);1:T盤預約 string orderNo = ""; nCode = m_pSKOrder.SendFutureOrderCLR(user.CapitalUserId, false, pFutureOrder, out orderNo); txtMessage.AppendText(GetMessage("期貨委託", nCode) + "\n"); if (nCode == 0) { string sBuySell = ""; if (ComboUtil.GetItem(cboBuySell).Value == "0") { sBuySell = "買"; } else { sBuySell = "賣"; } string sNowTime = DateTime.Now.ToString("HH:mm:ss.") + DateTime.Now.Millisecond; txtMessage.AppendText("委託成功 / " + ComboUtil.GetItem(cboSymbolCode).Value + " / " + txtPrice.Text + " / " + sBuySell + " / " + txtQty.Text + " / " + sNowTime + " / " + orderNo); } txtMessage.ScrollToCaret(); |
這樣是基本的下單語法,如果要開發下單功能之前,可以先用以上語法確認一下送委託單是否正常。
重要的程式碼我就貼上來講解一下,剩下基本運作的程式碼再自己下載範例來看喔。
執行畫面
我的帳號裡面故意沒放錢,所以才會得到保證金不足,如果有保證金的話,就會顯示交易單號。
建議你們測試時,也可以不放錢在裡面,看到保證金不足,也表示運作是正常的。
注意:
如果真要放保證金執行的話,也要確認好要交易的標的及方向再執行喔。
重點整理
- 建立下單的下拉選項
- 登入群益帳號
- 建立下單委託物件
- 送出委託單取得交易單號
範例下載
此範例包含前篇文章範例內容,連結 GitHub 下載範例
相關學習文章
- 【C# 群益 API 開發教學】期貨演算法交易訊號檢查,比較商品價格差異 #CH4 (附範例下載)
- 【C# 群益 API 開發教學】取得商品報價、Tick、最佳 5 檔教學 #CH3 (附範例下載)
- 【C# 富邦期貨 API 開發教學】元件安裝、登入及下單教學 (附範例下載)
如果你在學習上有不懂的地方,可以參考專業諮詢或線上家教服務,我想辨法解決你的問題
如果文章內容有錯誤的地方,幫我在下方留言通知我一下,謝謝
喜歡我的文章,請幫我在上方綠色拍手圖示按 5 下,也歡迎按月贊助,鼓勵我繼續創作,謝謝
加入社團一起討論
請問老師這是最新版本嗎?因今年又大版更….要雙憑證認證..謝謝..
目前程式碼適用最新版本喔