證券
委託與成交回報是在進行下單、更改單及單的狀態改變時的報告。若不想收到任何回報可在登入的時候將subscribe_trade
設定為 False,預設為皆會收到。
In
api.login?
Out
Signature:
api.login(
person_id: str,
passwd: str,
hashed: bool = False,
fetch_contract: bool = True,
contracts_timeout: int = 0,
contracts_cb: Callable[[], NoneType] = None,
subscribe_trade: bool = True,
) -> None
Docstring:
login to trading server
證券¶
下單
contract = api.Contracts.Stocks.TSE.TSE2890
order = api.Order(price=12,
quantity=10,
action=sj.constant.Action.Buy,
price_type=sj.constant.StockPriceType.LMT,
order_type=sj.constant.TFTOrderType.ROD,
custom_field="test",
account=api.stock_account
)
trade = api.place_order(contract, order)
委託回報
OrderState.TFTOrder {
'operation': {
'op_type': 'New',
'op_code': '00',
'op_msg': ''
},
'order': {
'id': 'c21b876d',
'seqno': '429832',
'ordno': 'W2892',
'action': 'Buy',
'price': 12.0,
'quantity': 10,
'order_cond': 'Cash',
'order_lot': 'Common',
'custom_field': 'test',
'order_type': 'ROD',
'price_type': 'LMT'
},
'status': {
'id': 'c21b876d',
'exchange_ts': 1583828972,
'modified_price': 0,
'cancel_quantity': 0,
'web_id': '137'
},
'contract': {
'security_type': 'STK',
'exchange': 'TSE',
'code': '2890',
'symbol': '',
'name': '',
'currency': 'TWD'
}
}
成交回報
OrderState.TFTDeal {
'trade_id': '12ab3456',
'exchange_seq': '123456',
'broker_id': 'your_broker_id',
'account_id': 'your_account_id',
'action': <Action.Buy: 'Buy'>,
'code': '2890',
'order_cond': <StockOrderCond.Cash: 'Cash'>,
'order_lot': <TFTStockOrderLot.Common: 'Common'>,
'price': 12,
'quantity': 10,
'web_id': '137',
'custom_field': 'test',
'ts': 1583828972
}
Attributes
op_type: operation type
op_code: {"00": 成功, others: 失敗}
op_msg: 錯誤訊息,若成功顯示" "。
刪單¶
op_type
顯示 Cancel。
In
api.cancel_order(trade)
Out
OrderState.TFTOrder {
'operation': {
'op_type': 'Cancel',
'op_code': '00',
'op_msg': ''
},
'order': {
'id': 'c21b876d',
'seqno': '429832',
'ordno': 'W2892',
'action': 'Buy',
'price': 12.0,
'quantity': 10,
'order_cond': 'Cash',
'order_lot': 'Common',
'custom_field': 'test',
'order_type': 'ROD',
'price_type': 'LMT'
},
'status': {
'id': 'c21b876d',
'exchange_ts': 1583829131,
'modified_price': 0,
'cancel_quantity': 10,
'web_id': '137'
},
'contract': {
'security_type': 'STK',
'exchange': 'TSE',
'code': '2890',
'symbol': '',
'name': '',
'currency': 'TWD'
}
}
改價¶
op_type
顯示 UpdatePrice。
In
api.update_order(trade=trade, price=12.5, quantity=10)
Out
OrderState.TFTOrder {
'operation': {
'op_type': 'UpdatePrice',
'op_code': '00',
'op_msg': ''
},
'order': {
'id': 'a5cff9b6',
'seqno': '429833',
'ordno': 'W2893',
'action': 'Buy',
'price': 12.5,
'quantity': 10,
'order_cond': 'Cash',
'order_lot': 'Common',
'custom_field': 'test',
'order_type': 'ROD',
'price_type': 'LMT'
},
'status': {
'id': 'a5cff9b6',
'exchange_ts': 1583829166,
'modified_price': 12.5,
'cancel_quantity': 0
'web_id': '137'
},
'contract': {
'security_type': 'STK',
'exchange': 'TSE',
'code': '2890',
'symbol': '',
'name': '',
'currency': 'TWD'
}
}
改量¶
op_type
顯示 UpdateQty。
In
api.update_order(trade=trade, price=12, quantity=2)
Out
OrderState.TFTOrder {
'operation': {
'op_type': 'UpdateQty',
'op_code': '00',
'op_msg': ''
},
'order': {
'id': 'a5cff9b6',
'seqno': '429833',
'ordno': 'W2893',
'action': 'Buy',
'price': 12.0,
'quantity': 10,
'order_cond': 'Cash',
'order_lot': 'Common',
'custom_field': 'test',
'order_type': 'ROD',
'price_type': 'LMT'
},
'status': {
'id': 'a5cff9b6',
'exchange_ts': 1583829187,
'modified_price': 0,
'cancel_quantity': 2
'web_id': '137'
},
'contract': {
'security_type': 'STK',
'exchange': 'TSE',
'code': '2890',
'symbol': '',
'name': '',
'currency': 'TWD'
}
}
使用回報資訊¶
可以利用set_order_callback
使用回報資訊。如同範例為收到回報前印出my_place_callback。
In
def place_cb(stat, msg):
print('my_place_callback')
print(stat, msg)
api.set_order_callback(place_cb)
contract = api.Contracts.Stocks.TSE.TSE2890
order = api.Order(price=12,
quantity=10,
action=sj.constant.Action.Buy,
price_type=sj.constant.StockPriceType.LMT,
order_type=sj.constant.TFTOrderType.ROD,
custom_field="test",
account=api.stock_account
)
trade = api.place_order(contract, order)
委託回報
my_place_callback
OrderState.TFTOrder {
'operation': {
'op_type': 'New',
'op_code': '00',
'op_msg': ''
},
'order': {
'id': 'c21b876d',
'seqno': '429832',
'ordno': 'W2892',
'action': 'Buy',
'price': 12.0,
'quantity': 10,
'order_cond': 'Cash',
'order_lot': 'Common',
'custom_field': 'test',
'order_type': 'ROD',
'price_type': 'LMT'
},
'status': {
'id': 'c21b876d',
'exchange_ts': 1583828972,
'modified_price': 0,
'cancel_quantity': 0,
'web_id': '137'
},
'contract': {
'security_type': 'STK',
'exchange': 'TSE',
'code': '2890',
'symbol': '',
'name': '',
'currency': 'TWD'
}
}
成交回報
my_place_callback
OrderState.TFTDeal {
'trade_id': '12ab3456',
'exchange_seq': '123456',
'broker_id': 'your_broker_id',
'account_id': 'your_account_id',
'action': <Action.Buy: 'Buy'>,
'code': '2890',
'order_cond': <StockOrderCond.Cash: 'Cash'>,
'order_lot': <TFTStockOrderLot.Common: 'Common'>,
'price': 12,
'quantity': 10,
'web_id': '137',
'custom_field': 'test',
'ts': 1583828972
}