由於Credit Enquires跟Short Stock Source,官方說明文件中並沒有太多的說明,所以會就我目前所知的部份做講解
Credit Enquires跟Short Stock Source,都是用來取得個股的相關資料,在取得時,要傳入一個Contract的List。
取得個股的Credit Enquires
contracts = [api.Contracts.Stocks['2330'], api.Contracts.Stocks['2409']] #建立一個Contract的List
credit_enquires = api.credit_enquires(contracts)
Credit Enquires 屬性說明
屬性 | 值 | 說明 |
---|---|---|
stock_id | 2330 | 股票代碼 |
margin_unit | 4 | |
short_unit | 52 | |
system | HF | 系統類別 |
update_time | 2021/9/17 05:11:11 PM | 更新日期及時間 |
因為目前還不了解Credit Enquires的實際用途是什麼,所以也不知道margin_unit跟short_unit這兩個欄位要怎麼翻譯比較洽當。 |
取得個股的Short Stock Source
contracts = [api.Contracts.Stocks['2330'], api.Contracts.Stocks['2409']] #建立一個Contract的List
short_stock_sources = api.short_stock_sources(contracts)
屬性 | 值 | 說明 |
---|---|---|
code | 2409 | 股票代碼 |
short_stock_source | 65962 | 或有券張數 |
ts | 1631874627000000000 | 更新時間 |
Short Stock Source就是所謂的或有券張數,這個張數,可以在好神通的「證券」>「帳務」中的「個股/資券」中查詢 | ||
這個數量指的就是現沖先賣(先賣後買),券商目前所提供的額度上限 | ||
而這個在iLeader中也有提到,若或有券張數不夠,在現沖先賣時就會跳出錯誤訊息 | ||
https://www.sinotrade.com.tw/ec/140630/3.pdf |
在上面的範例中,可以看到Short Stock Source的更新時間(ts)這個屬性,屬性值是一個整數
ts指的就是timestamp,在後續抓取報價相關資料時,也都會有這個屬性
若要將timestamp轉換為我們看得懂的日期時間格式,可以透過Pandas
以上面的Short Stock Source為例,在取得Short Stock Source資料後,先將原有的資料轉換為DataFrame,再將ts欄位中的資料轉換為DateTime
from dotenv import load_dotenv
import os
import shioaji as sj
import pandas as pd #匯入pandas模組
load_dotenv('D:\\python\\shioaji\\.env')
api = sj.Shioaji()
api.login(
person_id=os.getenv('YOUR_PERSON_ID'),
passwd=os.getenv('YOUR_PASSWORD')
)
contracts = [api.Contracts.Stocks['2330'],api.Contracts.Stocks['2890']]
short_stock_sources = api.short_stock_sources(contracts)
df = pd.DataFrame(short_stock_sources) #將short_stock_sources轉換為DataFrame
df.ts = pd.to_datetime(df.ts) #將原本的ts欄位中的資料,轉換為DateTime格式並回存
print(df)
print出來的結果,ts欄位中的資料,就會是我們看得懂的日期時間格式
code | short_stock_source | ts |
---|---|---|
2330 | 13832 | 2021-09-17 10:30:27 |
2890 | 151609 | 2021-09-17 10:30:27 |
2409 | 65962 | 2021-09-17 10:30:27 |