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",
)
Response Code: 0 | Event Code: 0 | Info: host '203.66.91.161:80', IP 203.66.91.161:80 (host 1 of 1) (host connection attempt 1 of 1) (total connection attempt 1 of 1) | Event: Session up Ca Initial Done.
0
def order_callback_func(order_state, state):
print(f'order_state: {order_state}')
print(f'state: {state}')
api.set_order_callback(order_callback_func)
contract = api.Contracts.Stocks.TSE.TSE2890
order = api.Order(price=11.15,
quantity=2,
action="Buy",
price_type="LMT",
order_type="Common",
account=api.stock_account
)
trade = api.place_order(contract, order)
order_state: ORDER state: {'operation': {'op_type': 'NEW', 'op_code': '00', 'op_msg': ''}, 'order': {'id': '71d711cf', 'seqno': '375264', 'ordno': 'I2700', 'action': 'Buy', 'price': 11.15, 'quantity': 2, 'order_cond': 'Cash'}, 'status': {'id': '71d711cf', 'exchange_ts': 1583983179, 'modified_price': 0, 'cancel_quantity': 0}, 'contract': {'security_type': 'STK', 'exchange': 'TSE', 'code': '2890', 'symbol': '', 'name': '', 'currency': 'TWD'}}
api.update_status(api.stock_account)
trade = api.cancel_order(trade)
order_state: ORDER state: {'operation': {'op_type': 'CANCEL', 'op_code': '00', 'op_msg': ''}, 'order': {'id': '71d711cf', 'seqno': '375264', 'ordno': 'I2700', 'action': 'Buy', 'price': 11.15, 'quantity': 2, 'order_cond': 'Cash'}, 'status': {'id': '71d711cf', 'exchange_ts': 1583983201, 'modified_price': 0, 'cancel_quantity': 1}, 'contract': {'security_type': 'STK', 'exchange': 'TSE', 'code': '2890', 'symbol': '', 'name': '', 'currency': 'TWD'}}
trade
Trade(contract=Stock(exchange=<Exchange.TSE: 'TSE'>, code='2890', symbol='TSE2890', name='永豐金', category='17', limit_up=13.55, limit_down=11.15, update_date='2020/03/12', day_trade=<DayTrade.OnlyBuy: 'OnlyBuy'>), order=Order(action=<Action.Buy: 'Buy'>, price=11.15, quantity=2, id='71d711cf', seqno='375264', ordno='I2700', account=Account(account_type=<AccountType.Stock: 'S'>, person_id=SecretStr('**********'), broker_id=SecretStr('**********'), account_id=SecretStr('**********'), signed=True, username=SecretStr('')), price_type=<StockPriceType.LMT: 'LMT'>, order_type=<FuturesOrderType.ROD: 'ROD'>), status=OrderStatus(id='71d711cf', status=<Status.Submitted: 'Submitted'>, status_code='00', order_datetime=datetime.datetime(2020, 3, 12, 11, 19, 39), modified_price=11.15, cancel_quantity=1, deals=[]))
api.update_status(api.stock_account)
trade = api.update_order(trade=trade, price=11.15, qty=1)
order_state: ORDER state: {'operation': {'op_type': 'UPDATE', 'op_code': '00', 'op_msg': ''}, 'order': {'id': '71d711cf', 'seqno': '375264', 'ordno': 'I2700', 'action': 'Buy', 'price': 11.15, 'quantity': 2, 'order_cond': 'Cash'}, 'status': {'id': '71d711cf', 'exchange_ts': 1583983197, 'modified_price': 0, 'cancel_quantity': 1}, 'contract': {'security_type': 'STK', 'exchange': 'TSE', 'code': '2890', 'symbol': '', 'name': '', 'currency': 'TWD'}}
trade
Trade(contract=Stock(exchange=<Exchange.TSE: 'TSE'>, code='2890', symbol='TSE2890', name='永豐金', category='17', limit_up=13.55, limit_down=11.15, update_date='2020/03/12', day_trade=<DayTrade.OnlyBuy: 'OnlyBuy'>), order=Order(action=<Action.Buy: 'Buy'>, price=11.15, quantity=2, id='71d711cf', seqno='375264', ordno='I2700', account=Account(account_type=<AccountType.Stock: 'S'>, person_id=SecretStr('**********'), broker_id=SecretStr('**********'), account_id=SecretStr('**********'), signed=True, username=SecretStr('')), price_type=<StockPriceType.LMT: 'LMT'>, order_type=<FuturesOrderType.ROD: 'ROD'>), status=OrderStatus(id='71d711cf', status=<Status.Submitted: 'Submitted'>, status_code='00', order_datetime=datetime.datetime(2020, 3, 12, 11, 19, 39), modified_price=11.15, deals=[]))