Advertisement
yijhan

python 群益api tick 報價

Aug 15th, 2018
332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.84 KB | None | 0 0
  1. import pythoncom, time, os
  2. import comtypes.client as cc
  3. from datetime import datetime
  4. import matplotlib.pyplot as plt
  5.  
  6. %matplotlib auto
  7. #發現在jupyter notebook用了 %matplotlib auto後, 就不用 pythoncom.PumpWaitingMessages() 來顯示 event
  8. #在我的例子裡, 如果有顯示 Using matplotlib backend: Qt4Agg, 就會自動 pump Event了
  9.  
  10. cc.GetModule('C:\\SKCOM\\2.13.8\\x86\\SKCOM.dll')
  11. #第一次用 GetModule 會在comtypes.gen 資料夾下產生 SKCOMLib.py, 及 XXXXX一長字串.py 的檔案
  12. #comtypes 將dll轉換成python可用的module了,GetModule理論上執行過一次即可,
  13. #若有更新群益 API, 要將gen裡的cache檔案都清除,再執行 GetModule
  14. #可以借下列方法將SKCOMLib import, 即可使用了
  15. from comtypes.gen import SKCOMLib as sk
  16.  
  17. #建立物件
  18. skC=cc.CreateObject(sk.SKCenterLib,interface=sk.ISKCenterLib)
  19. skQ=cc.CreateObject(sk.SKQuoteLib,interface=sk.ISKQuoteLib)
  20.  
  21. #輸入身分證與密碼
  22. import getpass
  23. Id=getpass.getpass(prompt='ID= ')
  24. Pw=getpass.getpass(prompt='Password= ')
  25.  
  26. #建立事件類別
  27. class skQ_events:
  28.     def OnConnection(self, nKind, nCode):
  29.         print('OnConnection nKind, nCode', nKind, nCode)
  30.     def OnNotifyTicks(self, sMarketNo, sIndex, nPtr, nTimehms, nTimemillismicros, nBid, nAsk, nClose, nQty, nSimulate):
  31.         print(sMarketNo, sIndex, nPtr, nTimehms, nClose, nQty)
  32.                    
  33. #Event sink, 事件實體  
  34. EventQ=skQ_events()
  35.  
  36. #make connection to event sink
  37. ConnectionQ = cc.GetEvents(skQ, EventQ)        
  38.  
  39. #Login
  40. print("Login,", skC.SKCenterLib_GetReturnCodeMessage(skC.SKCenterLib_Login(Id,Pw)))
  41. print("EnterMonitor,", skC.SKCenterLib_GetReturnCodeMessage(skQ.SKQuoteLib_EnterMonitor()))
  42.  
  43. #登錄商品
  44. strStocks='TX00'
  45. print("RequestTick,", strStocks, skC.SKCenterLib_GetReturnCodeMessage(skQ.SKQuoteLib_RequestTicks(1, strStocks)[1]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement