Day 16 - 取得帐务相关资讯 (上)

本篇重点

  • api.list_positions
  • api.list_profit_loss
  • api.list_profit_loss_detail
  • api.list_settlements
  • api.account_balance

api.list_positions

api.list_positions,用来查看即时库存,参数说明如下:

api.list_positions(
    account: shioaji.account.Account = None, #交易帐户,预设为None
    unit: shioaji.constant.Unit = <Unit.Common: 'Common'>, #单位,预设为整股
    timeout: int = 5000 #timeout预设为5000ms,即延迟时间?
)

虽然account参数没有预设值,但其实在程序中有做判断,若没有传入account参数,则预设是带入api.stock_account。
https://ithelp.ithome.com.tw/upload/images/20211001/20140827HP4P0kVtBn.png
回传的资料,会是shioaji.position.Position的list,资料内容说明如下

[Position(
code='2890', #金融商品代码
direction=<Action.Buy: 'Buy'>, #持有部位的方式
quantity=10, #即时库存
price=10.1, #成本均价
pnl=1234.0, #损益试贞
yd_quantity=10, #昨日余额
cond=<StockOrderCond.Cash: 'Cash'> #交易别StockOrderCond)]

api.list_profit_loss

api.list_profit_loss查询已实现损益,参数说明如下:

api.list_profit_loss(
        account: shioaji.account.Account = None, #交易帐户
        begin_date: str = '', #开始日期
        end_date: str = '', #结束日期
        timeout: int = 5000 #timeout预设为5000ms,即延迟时间?
        )

跟api.list_positions一样,如果没有指定所要查询的account,预设会回传stock_account的资料。而回传的资料是shioaji.position.ProfitLoss的List,说明如下:

[ProfitLoss(id=0, #序号
code='2890', #金融商品代码
seqno='14816', #序号
dseq='ID111', #委托单号
quantity=1, #数量
price=10.1, #成交价格
pnl=1234.0, #损益
pr_ratio=0.1237, #报酬率
cond='Cash', #交易别
date='2020-05-22' #成交日期
)]

api.list_profit_loss_detail

api.list_profit_loss_detail,查询已实现损益的详细内容。在执行前,要先执行list_profit_loss取得已实现损并资料,再执行list_profit_loss_detail并传入刚才回传资料中的id,才可取得详细内容
参数说明如下:

 api.list_profit_loss_detail(
        account: shioaji.account.Account = None,
        detail_id: int = 0, #即api.list_profit_loss,回传资料中的id序号
        timeout: int = 5000
    )

请注意,在执行list_profit_loss_detail前,要先执行api.list_profit_loss?

[ProfitLossDetail(date='2020-05-22', #成交日
cond='Cash', #交易别
code='2890', #股票代号
quantity=1, #数量(张)
price=10.1, #单价
cost=9100, #价金(持有成本)
dseq='ID111', #委托单号
rep_margintrading_amt=0, #融资金额
rep_collateral=0, #担保品
rep_margin=0, #保证金
fee=20, #手续费
interest=0, #利息
tax=0, #交易税
shortselling_fee=0, #借券费
currency='NTD' #币别
)]

api.list_settlements

api.list_settlements交割款项。因为只有股票交易才会有交割,因此account只能是stock_account,当然,也可以不给account参数,会自动带stock_account。
参数说明如下:

api.list_settlements(
    account: shioaji.account.Account = None, #交易帐户,可不必传入
    timeout: int = 5000
    )

回传资料为shioaji.position.Settlement的List

[Settlement(
t_money=0.0,  #T+0 交割金额
t1_money=0.0, #T+1 交割金额
t2_money=0.0, #T+2 交割金额
t_day='2021-10-01', #T+0 交割日期
t1_day='2021-10-04', #T+1 交割日期
t2_day='2021-10-05' #T+2 交割日期
)]

api.account_balance

api.account_balance,用来取得银行帐户(交割户)余额,这个function可以直接呼叫,不用给任何参数,而回传的资料如下:

[AccountBalance(acc_balance=123456.0, #帐户余额
date='2020-07-16 09:29:13', #查询时间
errmsg='' #错误讯息
)]

<<:  day31 虽然没有写完,但是还是要有summary

>>:  [day16]Vue实作-建立首页

【没钱买ps,PyQt自己写】Day 6 – 我们的第一个 output 手段 – Qlabel

看完这篇文章你会得到的成果图 前言 我们接下来的讨论,会基於读者已经先读过我 day5 文章 的架构...

[Day2]疯狂程设基本操作及Hello World

今天要来练习第一道题目及一些基本的操作。 先点CPE历届考古题2013/12/17 的第一题Hell...

人机结合之学习模式

人的科技文明发展始终来自於人性 在未来的社会,当科技与资讯更加的发达时,人与智慧型相关产品之使用已不...

【Day12】系列终止

因为某种天外飞仙,天上掉下来的炸弹等的理由,所以这个项目就会终止,在报 名截止前让我想想要参加甚麽项...

深不可测的海 - Regular Expression

使用终端机搜寻特定字串时,大家一定用过 grep 这个指令吧~ 但你有想过 grep 为什麽叫 gr...