iT邦幫忙

2021 iThome 鐵人賽

DAY 17
0
永豐金融APIs

深入解析 Shioaji API系列 第 17

Day 17 - 取得帳務相關資訊 (下)

官方說明文件:https://sinotrade.github.io/tutor/accounting/account_portfolio/
本篇的功能基本跟上一篇一樣,只是執行的function不同
因為目前還想不到要寫什麼主題,所以就先測試看看這份文件上的function跟前一篇的有什麼不同
請注意,此篇說明的function,在之後版本可能會被拿掉。

api.get_account_margin

api.get_account_margin,取得期貨帳戶權益

account_margin = api.get_account_margin() #取得期貨帳戶權益資訊
df_margin = pd.DataFrame(account_margin.data()) #透過data()取得資料,並轉換為DataFrame
print(df_margin)

執行後,會取得shioaji.backend.http.account.AccountMargin的物件,要取得資料就要先透過data(),執行後會回傳一個list,list裡面是一個存放帳戶權益資訊的dict。由於裡頭的屬性很多,這裡就不多加說明,有興趣的人,可以參考以下的範例:

account_margin = api.get_account_margin() #取得期貨帳戶權益資訊
data = account_margin.data() #取得帳戶list
account_margin.data()[0]['Equity'] #取得帳戶權益數內容

前面說到,這個fuction在之後版本可能會被拿掉。若要取得期貨帳戶權益資訊,也可以直接使用api.AccountMargin取得。

api.get_account_openposition

api.get_account_openposition,取得未平倉部位,參數說明如下:

get_account_openposition(
    product_type="0", #商品類型
    query_type="0", #查詢類型
    account={} #查詢帳戶,若沒有指定,會
    )

程式範例如下:

positions = api.get_account_openposition(query_type='1', account=api.futopt_account)
df_positions = pd.DataFrame(positions.data())
print(df_positions)

api.get_account_settle_profitloss

api.get_account_settle_profitloss,取得平倉損益,參數說明如下:

api.get_account_settle_profitloss(
        product_type="0", #商品類型,預設為0全部
        summary="Y", #是否為匯總資料
        start_date="", #起始日期
        end_date="", #結束日期
        currency="", #幣別
        account={}, #交易帳戶
    )

請注意,這裡的日期格式為%Y%m%d,跟之前所傳入的日期格式不同。程式範例如下:

settle_profitloss = api.get_account_settle_profitloss(start_date='20210601', end_date='20210930')
df_settle_profitloss = pd.DataFrame(settle_profitloss.data())
print(df_settle_profitloss)

api.get_stock_account_funds

api.get_stock_account_funds,取得股票帳戶資訊,內容包含已實現損益、未實現損並及交割資訊(T+0~T+2),參數說明如下:

api.get_stock_account_funds(
    include_tax=' ', #是否包含交易稅
    account: shioaji.account.StockAccount = None, #交易帳戶
)

程式範例如下:

stock_account_funds = api.get_stock_account_funds()
df_stock_account_funds = pd.DataFrame(stock_account_funds.data())
print(df_stock_account_funds)

api.get_stock_account_real_profitloss

api.get_stock_account_real_profitloss,取得帳戶已實現損益,參數說明如下:

api.get_stock_account_real_profitloss(
        stock_type="A", #股票類型
        start_date="", #起始日期,必填
        end_date="", #結束日期,必填
        currency="A", #幣別
        filter_rule=" ", #篩選條件
        account=None, #交易帳戶
    )

程式範例如下:

real_profitloss = api.get_stock_account_real_profitloss(start_date='20210601', end_date='20210930')
df_real_summary = pd.DataFrame(real_profitloss.data()['summary'])
df_real_detail = pd.DataFrame(real_profitloss.data()['detail'])
print(df_real_summary)
print(df_real_detail)

api.get_stock_account_unreal_profitloss

api.get_stock_account_unreal_profitloss,取得帳戶未實現損益,參數說明如下:

api.get_stock_account_unreal_profitloss(
    stock_type='A', #股票類型
    currency='A', #幣別
    filter_rule=' ', #篩選條件
    account=None, #交易帳戶
)

程式範例如下:

unreal_profitloss = api.get_stock_account_unreal_profitloss()
df_unreal_summary = pd.DataFrame(unreal_profitloss.data()['summary'])
df_unreal_detail = pd.DataFrame(unreal_profitloss.data()['detail'])
print(df_unreal_summary)
print(df_unreal_detail)

上一篇
Day 16 - 取得帳務相關資訊 (上)
下一篇
Day 18 - 取得所有Contract程式範例
系列文
深入解析 Shioaji API30

尚未有邦友留言

立即登入留言