iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0

● 這章會示範如何用Snapshot取得股票最新資訊

Snapshots 快照

"Snapshots"在Shioaji裡頭可以用來取得多檔股票的最新資訊
假設我們今天要取"台積電(2330)"與"永豐金(2890)"這兩家公司股票的最新資訊
程式碼如下

contracts = [api.Contracts.Stocks['2330'], api.Contracts.Stocks['2890']] #建立list為contracts
snapshots = api.snapshots(contracts) #將contracts丟入snapshot的方法中
print(snapshots) #輸出snapshots結果

顯示結果截圖如下
https://ithelp.ithome.com.tw/upload/images/20211006/20139934GRB0sloZqW.png
為了更清楚表示,我把結果另外複製在下方

[Snapshot(ts=1633530600000000000, code='2330', exchange='TSE', open=573.0, high=574.0, low=565.0, close=571.0, tick_type=<TickType.Buy: 'Buy'>, change_price=-1.0, change_rate=-0.17, change_type=<ChangeType.Down: 'Down'>, average_price=569.2, volume=49, total_volume=32508, amount=27979000, total_amount=18503666758, yesterday_volume=33824.0, buy_price=570.0, buy_volume=56.0, sell_price=571.0,Buy: 'Buy'>, change_price=-1.0, change_rat sell_volume=90, volume_ratio=0.96)  #台積電股票最新資訊

Snapshot(ts=1633530600000000000, code='2890', exchange='TSE', open=13.8, high=13.9, low=13.7, 8503666758, yesterday_volume=33824.0, buy_
close=13.9, tick_type=<TickType.Buy: 'Buy'>, change_price=0.1, change_rate=0.72, change_type=<ChangeType.Up: 'Up'>, average_price=1xchange='TSE', open=13.8, high=13.9, low=13.82, volume=8, total_volume=21110, amount=111200, total_amount=291729419, yesterday_volume=16843.0, buy_price=13.85, buy_volume=62ice=13.82, volume=8, total_volume=21110, a.0, sell_price=13.9, sell_volume=2355, volume_ratio=1.25)]  #永豐金股票最新資訊

Snapshot可以取得不只兩家股票的資訊
以下示範一次取得三家股票的最新資訊
台積電(2330)、永豐金(2890)、鴻海(2317)

程式碼如下

contracts = [api.Contracts.Stocks['2330'], api.Contracts.Stocks['2890'],api.Contracts.Stocks['2317']]
snapshots = api.snapshots(contracts)
print(snapshots)

顯示結果如下
https://ithelp.ithome.com.tw/upload/images/20211006/20139934Im3TM95sHw.png

[Snapshot(ts=1633530600000000000, code='2330', exchange='TSE', open=573.0, high=574.0, low=565.0, close=571.0, tick_type=<TickType.Buy: 'Buy'>, change_price=-1.0, change_rate=-0.17, change_type=<ChangeType.Down: 'Down'>, average_price=569.2, volume=49, total_volume=32508, amount=27979000, total_amount=18503666758, yesterday_volume=33824.0, buy_price=570.0, buy_volume=56.0, sell_price=571.0, sell_volume=90, volume_ratio=0.96) #台積電股票最新資訊

Snapshot(ts=1633530600000000000, code='2890', exchange='TSE', open=13.8, high=13.9, low=13.7, close=13.9, tick_type=<TickType.Buy: 'Buy'>, change_price=0.1, change_rate=0.72, change_type=<ChangeType.Up: 'Up'>, average_price=13.82, volume=8, total_volume=21110, amount=111200, total_amount=291729419, yesterday_volume=16843.0, buy_price=13.85, buy_volume=62.0, sell_price=13.9, sell_volume=2355, volume_ratio=1.25) #永豐金股票最新資訊

Snapshot(ts=1633530600000000000, code='2317', exchange='TSE', open=103.5, high=104.5, low=103.0, close=103.0, tick_type=<TickType.Sell: 'Sell'>, change_price=1.5, change_rate=1.48, change_type=<ChangeType.Up: 'Up'>, average_price=103.76, volume=43, total_volume=38805, amount=4429000, total_amount=4026403659, yesterday_volume=41574.0, buy_price=103.0, buy_volume=3535.0, sell_price=103.5, sell_volume=195, volume_ratio=0.93)] #鴻海股票最新資訊

那以上只有示範取兩家及三家股票的最新資訊,如果想取更多也是沒問題的!!

為了方便我們瀏覽,一樣把它轉為DataFrame的形式

程式碼如下

import pandas as pd  #引入pandas命名為pd

contracts = [api.Contracts.Stocks['2330'],api.Contracts.Stocks['2890'],api.Contracts.Stocks['2317']]
snapshots = api.snapshots(contracts) 

df = pd.DataFrame(snapshots) #將snapshots資料轉換為DataFrame形式
df.ts = pd.to_datetime(df.ts)  #將ts欄位轉換為datetime格式,ts為時間
print(df) #將已轉換成DataFrame的資料輸出至終端機

顯示結果如下

https://ithelp.ithome.com.tw/upload/images/20211006/20139934tzWqBpMhPu.png

左到右行英文名詞解釋

  • amount: 成交總金額
  • average_price: 平均成交價
  • buy_price: 買入價格
  • buy_volume: 買入數量
  • ts: 交易時間
  • volume: 成交量
  • volume_ratio: 成交比率
  • yesterday_volume: 前日成交量

上一篇
<Day20> Subscribe — 訂閱及時BidAsk五檔報價資料
下一篇
<Day22>用Shioaji API模擬帳戶做台股下單
系列文
當金融與API相遇會擦出什麼火花?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言