iT邦幫忙

2025 iThome 鐵人賽

DAY 3
0
佛心分享-SideProject30

程式交易之自動化賠錢程式開發系列 第 3

連線報價,接收市場的第一道光

  • 分享至 

  • xImage
  •  

當我們成功登入後,直覺反應是:「總算可以開始下單了吧?」

先別急,事情沒有這麼簡單。如果我們回想一下平時使用看盤軟體的流程,會發現許多繁瑣的步驟都被軟體自動化了,導致我們常常忽略它們的存在。

讓我們來拆解一下登入後到下單前的完整流程:

  1. 登入帳號:完成身份驗證。
  2. 看到商品清單:軟體會自動連上「報價伺服器」,開始接收即時數據。
  3. 報價閃爍:清單上的股票或期貨,因為不斷接收到新的報價而閃爍著綠光或紅光。
  4. 查看詳細資訊:我們點選某個感興趣的商品,查看它的技術線圖或詳細數值。
  5. 執行下單:最後,根據判斷送出委託單。

從這個流程可以清楚地看到,在程式的世界裡,我們不能跳過這些步驟。將其轉換為程式需要執行的任務順序,大概會是這樣:

  • 1. 登入 (Login)
  • 2. 連線報價伺服器 (Connect to Quote Server)
  • 3. 請求特定商品的報價 (Request Quotes for Specific Stocks)
  • 4. 接收並處理詳細報價資料 (Receive and Process Detailed Data)
  • 5. 下單 (Place Order)

了解了這層關係後,才發現原來要寫個程式來當「韭菜」還真不容易啊!我們的第二步,顯然就是連線報價伺服器

實作第二步:連線報價伺服器

與登入的流程相似,連線報價伺服器也需要「發送請求」與「監聽回報」兩個部分。

1. 發送連線請求

首先,我們呼叫 API 來與報價主機建立連線。這個動作有點像是跟主機說:「我要訂閱你了,準備開始跟你要資料囉!」

def buttonSKQuoteLib_EnterMonitorLONG_Click(self):
    """
    處理按鈕點擊事件,發送「連線報價伺服器」的請求
    """
    # 呼叫 API 以非同步方式連線到報價伺服器
    nCode = m_pSKQuote.SKQuoteLib_EnterMonitorLONG()

    # 取得 API 回傳碼的對應訊息
    msg = f"【SKQuoteLib_EnterMonitorLONG】{m_pSKCenter.SKCenterLib_GetReturnCodeMessage(nCode)}"
    print(msg)

2. 監聽連線狀態回報

發送請求後,我們需要一個對應的 Event 函式來接收伺服器的回報,告訴我們連線是否成功。查閱 API 文件可以發現,對應的 Event 是 OnConnection

https://ithelp.ithome.com.tw/upload/images/20250907/201785886yF33OiWrf.png

接著,我們來實作這個函式:

def OnConnection(self, nKind, nCode):
    """
    當連線狀態改變時,此事件會被觸發
    nKind=0 Connected, nKind=1 Disconnected, nKind=2 Reconnected
    """
    # 組合並顯示連線狀態訊息
    msg = f"【OnConnection】Kind: {nKind}, Code: {nCode}"
    print(msg)

上一篇
從「登入」開始的 Divide and Conquer 之路
系列文
程式交易之自動化賠錢程式開發3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言