Day 12 - 下单电子凭证及Stock股票Order建立

本篇重点

  • api.activate_ca 启动下单电子凭证
  • Stock股票Order建立

api.activate_ca 启动电子凭证

官方说明文件:
https://sinotrade.github.io/tutor/order/CA/
在下单之前,需要先下载永丰证券帐户的下单电子凭证,下载方式请参考官方说明
https://www.sinotrade.com.tw/CSCenter/CSCenter_13_1?tab=2
下载完成後,可以透过api.activate_ca来启用下单电子凭证,范例如下:

from dotenv import load_dotenv
import os
import shioaji as sj

load_dotenv('D:\\python\\shioaji\\.env') #读取.env中的环境变数
api = sj.Shioaji()
api.login(
    person_id=os.getenv('YOUR_PERSON_ID'), 
    passwd=os.getenv('YOUR_PASSWORD')
)

result = api.activate_ca(
    ca_path=os.getenv('YOUR_CA_PATH'), # 下单电子凭证路径及档案名称
    ca_passwd=os.getenv('YOUR_CA_PASS'), # 下单电子凭证密码
    person_id=os.getenv('YOUR_PERSON_ID'), # 身份证字号
)
print(result)

api.logout()

启用下单电子凭证前要先执行api.login进行登入。在这里一样把电子凭证相关资讯先储存在env档案中,再透过os.getenv()取得资讯并传入activate_ca中,若电子凭证启用成功,则回传的result就会是True。

若你要用虚拟帐户登入并练习或测试下单功能,不必启动电子凭证,可跳过这个步骤。

Order物件建立说明

官方说明文件:https://sinotrade.github.io/tutor/order/Stock/#making-order-object
在发送委托单前,要先产生一个Order物件。
Order物件建立的参数说明如下:

参数 参数说明 参数范例
price 委托价格 18.5
quantity 委托数量 1
action 委托单动作 {Buy, Sell}
price_type 价格类型 {LMT, MKT, MKP} (限价、市价、范围市价)
order_type 委托单类型 {ROD, IOC, FOK} (当日有效、立即成交否则取消、全部成交否则取消)
order_cond 委托单种类 {Cash, MarginTrading, ShortSelling} (现股、融资、融券)
order_lot 委托单交易单位 {Common, Fixing, Odd, IntradayOdd} (整股、盘後定价、盘後零股、盘中零股)
first_sell 是否为现冲先卖 {true, false}
octype 仓别 {Auto, NewPosition, Cover, DayTrade} (自动、新仓、平仓、当冲)
OptionRight 选择权类别 {Call, Put}
account 交易帐户 可由API取得account物件

order_cond、order_lot及first_sell,为股票Order物件特有属性
octype,为期货或选择权Order物件特有属性
OptionRight为选择权Order物件特有属性

现股买进,Order范例

order = api.Order(
    price=12, 
    quantity=1, 
    action=sj.constant.Action.Buy, #买进
    price_type=sj.constant.StockPriceType.LMT, 
    order_type=sj.constant.TFTOrderType.ROD, 
    order_lot=sj.constant.TFTStockOrderLot.Common, 
    account=api.stock_account
)

现股卖出,Order范例

order = api.Order(
    price=12, 
    quantity=1, 
    action=sj.constant.Action.Sell, #卖出
    price_type=sj.constant.StockPriceType.LMT, 
    order_type=sj.constant.TFTOrderType.ROD, 
    order_lot=sj.constant.TFTStockOrderLot.Common, 
    account=api.stock_account
)

现冲先卖,Order范例

order = api.Order(
    price=12, 
    quantity=1, 
    action=sj.constant.Action.Sell,
    price_type=sj.constant.StockPriceType.LMT,
    order_type=sj.constant.TFTOrderType.ROD,
    order_lot=sj.constant.TFTStockOrderLot.Common,
    first_sell=sj.constant.StockFirstSell.Yes, #现冲先卖,设定为StockFirstSell.Yes or True
    account=api.stock_account
)

盘中零股,Order范例

order = api.Order(
    price=12, 
    quantity=1, 
    action=sj.constant.Action.Buy, #买进
    price_type=sj.constant.StockPriceType.LMT, 
    order_type=sj.constant.TFTOrderType.ROD, 
    order_lot=sj.constant.TFTStockOrderLot.IntradayOdd, #指定盘中零股
    account=api.stock_account
)

盘中零股,Order范例

order = api.Order(
    price=12, 
    quantity=1, 
    action=sj.constant.Action.Buy, #买进
    price_type=sj.constant.StockPriceType.LMT, 
    order_type=sj.constant.TFTOrderType.ROD, 
    order_lot=sj.constant.TFTStockOrderLot.IntradayOdd, #指定盘中零股
    account=api.stock_account
)

盘後定价,Order范例

order = api.Order(
    price=12, 
    quantity=1, 
    action=sj.constant.Action.Buy, #买进
    price_type=sj.constant.StockPriceType.LMT, 
    order_type=sj.constant.TFTOrderType.ROD, 
    order_lot=sj.constant.TFTStockOrderLot.Fixing, #指定盘後定价
    account=api.stock_account
)

盘後零股,Order范例

order = api.Order(
    price=12, 
    quantity=1, 
    action=sj.constant.Action.Buy, #买进
    price_type=sj.constant.StockPriceType.LMT, 
    order_type=sj.constant.TFTOrderType.ROD, 
    order_lot=sj.constant.TFTStockOrderLot.Odd, #指定盘後零股
    account=api.stock_account
)

以上为现股Order的建立及下单相关操作,若是要使用融资或融券,只要在建立Order时指定order_cond为StockOrderCond.MarginTrading(融资)或是StockOrderCond.ShortSelling(融券)即可;若在建立Order时没有指定order_cond,预设都是以StockOrderCond.Cash建立。


<<:  【Day12】Latch的生成条件以及如何避免(上)

>>:  [Day27] CH13:画出你的藏宝图——图形使用者介面

Day 8:506. Relative Ranks

今日题目 题目连结:506. Relative Ranks 题目主题:Array, Sorting,...

DAY12-JAVA的类别(6)-变数和函数

实例变数 实例变数(instance variable)拥有储存资料成员的记忆体空间,不与其他物件共...

[重构倒数第14天] - Vue3处理动态效果(二)

前言 该系列是为了让看过Vue官方文件或学过Vue但是却不知道怎麽下手去重构现在有的网站而去规画的系...

Day 08:原则、设计模式、架构

前言 接下来要介绍的东西并不是学什麽工具, 而是怎麽把我们已经会的程序语言写得更有系统, 来达到高效...

Dungeon Mizarka 029

等待UI开发者的回覆之际,算是有空闲的时间可以展开实际的怪物调整。有监於Invenotry系统的复杂...