import shioaji as sj
api = sj.Shioaji()
accounts = api.login("YOUR_PERSON_ID", "YOUR_PASSWORD", contracts_timeout=10000)
api.activate_ca(
ca_path="/c/your/ca/path/Sinopac.pfx",
ca_passwd="YOUR_CA_PASSWORD",
person_id="Person of this Ca",
)
contract = api.Contracts.Stocks.TSE.TSE0050
order = api.Order(
price=90,
quantity=10,
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,
)
trade = api.place_order(contract, order)
trade
输出结果为
Trade(
contract=Stock(
exchange=<Exchange.TSE: 'TSE'>,
code='0050',
symbol='TSE0050',
name='元大台湾50',
category='00',
limit_up=115.8,
limit_down=94.8,
eference=105.3,
update_date='2020/09/21',
margin_trading_balance=15390,
short_selling_balance=2,
day_trade=<DayTrade.Yes: 'Yes'>
),
order=Order(
action=<Action.Buy: 'Buy'>,
price=90.0,
quantity=10,
id='38e68afe',
seqno='482283',
ordno='WA313',
account=Account(
account_type=<AccountType.Stock: 'S'>,
person_id='PAPIUSER04',
broker_id='9A95',
account_id='0506112',
signed=True
),
price_type=<StockPriceType.LMT: 'LMT'>,
order_type=<FuturesOrderType.ROD: 'ROD'>,
order_lot=<TFTStockOrderLot.IntradayOdd: 'IntradayOdd'>
),
status=OrderStatus(
id='38e68afe',
status=<Status.Submitted: 'Submitted'>,
status_code='00',
order_datetime=datetime.datetime(2020, 9, 21, 14, 38, 51), deals=[]
)
)
假如要抽单
api.update_status(api.stock_account)
api.cancel_order(trade)
api.update_status(api.stock_account)
trade
Trade(
contract=Stock(
exchange=<Exchange.TSE: 'TSE'>,
code='0050',
symbol='TSE0050',
name='元大台湾50',
category='00',
limit_up=115.8,
limit_down=94.8,
reference=105.3,
update_date='2020/09/21',
margin_trading_balance=15390,
short_selling_balance=2,
day_trade=<DayTrade.Yes: 'Yes'>
),
order=Order(
action=<Action.Buy: 'Buy'>,
price=90.0,
quantity=10,
id='9b44c3b2',
seqno='482293',
ordno='WA328',
account=Account(
account_type=<AccountType.Stock: 'S'>,
person_id='PAPIUSER04',
broker_id='9A95',
account_id='0506112',
signed=True
),
price_type=<StockPriceType.LMT: 'LMT'>,
order_type=<FuturesOrderType.ROD: 'ROD'>,
order_lot=<TFTStockOrderLot.IntradayOdd: 'IntradayOdd'>
),
status=OrderStatus(
id='9b44c3b2',
status=<Status.Cancelled: 'Cancelled'>,
status_code='00',
order_datetime=datetime.datetime(2020, 9, 21, 14, 54, 36),
cancel_quantity=10, deals=[]
)
)
改单,注意零股是不能修改价格的,只能调整买卖的股数
api.update_status(api.stock_account)
api.update_order(trade=trade, qty=2)
api.update_status(api.stock_account)
trade
Trade(
contract=Stock(
exchange=<Exchange.TSE: 'TSE'>,
code='0050',
symbol='TSE0050',
name='元大台湾50',
category='00',
limit_up=115.8,
limit_down=94.8,
reference=105.3,
update_date='2020/09/21',
margin_trading_balance=15390,
short_selling_balance=2,
day_trade=<DayTrade.Yes: 'Yes'>
),
order=Order(
action=<Action.Buy: 'Buy'>,
price=90.0,
quantity=10,
id='9b44c3b2',
seqno='482293',
ordno='WA328',
account=Account(
account_type=<AccountType.Stock: 'S'>,
person_id='PAPIUSER04',
broker_id='9A95',
account_id='0506112',
signed=True
),
price_type=<StockPriceType.LMT: 'LMT'>,
order_type=<FuturesOrderType.ROD: 'ROD'>,
order_lot=<TFTStockOrderLot.IntradayOdd: 'IntradayOdd'>),
status=OrderStatus(
id='9b44c3b2',
status=<Status.Submitted: 'Submitted'>,
status_code='00',
order_datetime=datetime.datetime(2020, 9, 21, 14, 54, 36),
cancel_quantity=2,
deals=[]
)
)
>>: Day12 - 物理模拟篇 - 弹跳球世界III - 成为Canvas Ninja ~ 理解2D渲染的精髓
30天终於完成了 虽然扣掉第一天与最後一天实际只有28天~XD 但是要连续发文真的很不容易 回顾这3...
这篇我们要来讲到isNaN这个函式,这是一个用来判断输入资料是不是数字的函式。 这个函式的结构如下:...
前言 今年算是拖到最後一天最後一刻才开赛... 因为疫情的关系今年实在有点忙不过来, 因此早在两个月...
前言 就如同标题所讲的,今天就来自由练习吧。那今天我练习的主要会是在骨架的部分。对,过了这麽久依旧在...
使用Window 的方法可以省略掉 Window 字眼 EX: window.alert('Hi!'...