{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "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\n", "Ca Initial Done.\n" ] }, { "data": { "text/plain": [ "0" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import shioaji as sj\n", "\n", "api = sj.Shioaji()\n", "accounts = api.login(\"YOUR_PERSON_ID\", \"YOUR_PASSWORD\", contracts_timeout=10000)\n", "api.activate_ca(\n", " ca_path=\"/c/your/ca/path/Sinopac.pfx\",\n", " ca_passwd=\"YOUR_CA_PASSWORD\",\n", " person_id=\"Person of this Ca\",\n", ")\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def order_callback_func(order_state, state):\n", " print(f'order_state: {order_state}')\n", " print(f'state: {state}')\n", "\n", "api.set_order_callback(order_callback_func)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "order_state: ORDER\n", "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'}}\n" ] } ], "source": [ "contract = api.Contracts.Stocks.TSE.TSE2890\n", "order = api.Order(price=11.15,\n", " quantity=2,\n", " action=\"Buy\",\n", " price_type=\"LMT\",\n", " order_type=\"Common\",\n", " account=api.stock_account\n", " )\n", "trade = api.place_order(contract, order)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "order_state: ORDER\n", "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'}}\n" ] } ], "source": [ "api.update_status(api.stock_account)\n", "trade = api.cancel_order(trade)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Trade(contract=Stock(exchange=, code='2890', symbol='TSE2890', name='永豐金', category='17', limit_up=13.55, limit_down=11.15, update_date='2020/03/12', day_trade=), order=Order(action=, price=11.15, quantity=2, id='71d711cf', seqno='375264', ordno='I2700', account=Account(account_type=, person_id=SecretStr('**********'), broker_id=SecretStr('**********'), account_id=SecretStr('**********'), signed=True, username=SecretStr('')), price_type=, order_type=), status=OrderStatus(id='71d711cf', status=, status_code='00', order_datetime=datetime.datetime(2020, 3, 12, 11, 19, 39), modified_price=11.15, cancel_quantity=1, deals=[]))" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trade" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "order_state: ORDER\n", "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'}}\n" ] } ], "source": [ "api.update_status(api.stock_account)\n", "trade = api.update_order(trade=trade, price=11.15, qty=1)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Trade(contract=Stock(exchange=, code='2890', symbol='TSE2890', name='永豐金', category='17', limit_up=13.55, limit_down=11.15, update_date='2020/03/12', day_trade=), order=Order(action=, price=11.15, quantity=2, id='71d711cf', seqno='375264', ordno='I2700', account=Account(account_type=, person_id=SecretStr('**********'), broker_id=SecretStr('**********'), account_id=SecretStr('**********'), signed=True, username=SecretStr('')), price_type=, order_type=), status=OrderStatus(id='71d711cf', status=, status_code='00', order_datetime=datetime.datetime(2020, 3, 12, 11, 19, 39), modified_price=11.15, deals=[]))" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trade" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 4 }