官方说明文件:
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。
若你要用虚拟帐户登入并练习或测试下单功能,不必启动电子凭证,可跳过这个步骤。
官方说明文件: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 = 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 = 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 = 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 = 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 = 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 = 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 = 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:画出你的藏宝图——图形使用者介面
今日题目 题目连结:506. Relative Ranks 题目主题:Array, Sorting,...
实例变数 实例变数(instance variable)拥有储存资料成员的记忆体空间,不与其他物件共...
前言 该系列是为了让看过Vue官方文件或学过Vue但是却不知道怎麽下手去重构现在有的网站而去规画的系...
前言 接下来要介绍的东西并不是学什麽工具, 而是怎麽把我们已经会的程序语言写得更有系统, 来达到高效...
等待UI开发者的回覆之际,算是有空闲的时间可以展开实际的怪物调整。有监於Invenotry系统的复杂...