{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Login Shioaji." ] }, { "cell_type": "code", "execution_count": 1, "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" ] } ], "source": [ "import shioaji as sj\n", "api = sj.Shioaji()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[StockAccount(person_id=SecretStr('**********'), broker_id=SecretStr('**********'), account_id=SecretStr('**********'), signed=True, username=SecretStr('**********'))]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "accounts = api.login(\"YOUR_PERSON_ID\", \"YOUR_PASSWORD\")\n", "accounts" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ca Initial Done.\n" ] }, { "data": { "text/plain": [ "0" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "api.activate_ca(\n", " ca_path=\"/c/your/ca/path/Sinopac.pfx\",\n", " ca_passwd=\"YOUR_PASSWORD\",\n", " person_id=\"Person of this Ca\",\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Get Contract Object." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Stock(exchange=, code='2890', symbol='TSE2890', name='永豐金', category='17', limit_up=13.75, limit_down=11.25, update_date='2020/03/11', day_trade=)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "contract = api.Contracts.Stocks.TSE.TSE2890\n", "contract" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Making Order Object.\n", "### Buy" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Order(action=, price=12, quantity=3, account=StockAccount(person_id=SecretStr('**********'), broker_id=SecretStr('**********'), account_id=SecretStr('**********'), signed=True, username=SecretStr('**********')), price_type=, order_type=)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "order = api.Order(\n", " price=12, \n", " quantity=3, \n", " action=\"Buy\", \n", " price_type=\"LMT\", \n", " order_type=\"ROD\", \n", " order_lot=\"Common\", \n", " account=api.stock_account\n", " )\n", "order" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sell" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Order(action=, price=12, quantity=1, account=StockAccount(person_id=SecretStr('**********'), broker_id=SecretStr('**********'), account_id=SecretStr('**********'), signed=True, username=SecretStr('**********')), price_type=, order_type=)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "order = api.Order(\n", " price=12, \n", " quantity=1, \n", " action=\"Sell\", \n", " price_type=\"LMT\", \n", " order_type=\"ROD\", \n", " order_lot=\"Common\", \n", " account=api.stock_account\n", " )\n", "order" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### First Sell" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Order(action=, price=12, quantity=1, account=StockAccount(person_id=SecretStr('**********'), broker_id=SecretStr('**********'), account_id=SecretStr('**********'), signed=True, username=SecretStr('**********')), price_type=, order_type=, first_sell=)" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "order = api.Order(\n", " price=12, \n", " quantity=1, \n", " action=\"Sell\",\n", " price_type=\"LMT\",\n", " order_type=\"ROD\",\n", " order_lot=\"Common\",\n", " first_sell=\"true\",\n", " account=api.stock_account\n", " )\n", "order" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Place Order" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "trade = api.place_order(contract, order)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Trade(contract=Stock(exchange=, code='2890', symbol='TSE2890', name='永豐金', category='17', limit_up=13.75, limit_down=11.25, update_date='2020/03/11', day_trade=), order=Order(action=, price=12, quantity=3, id='436ab247', seqno='622967', ordno='IA015', account=Account(account_type=, person_id=SecretStr('**********'), broker_id=SecretStr('**********'), account_id=SecretStr('**********'), signed=True, username=SecretStr('')), price_type=, order_type=), status=OrderStatus(id='436ab247', status=, status_code='0', order_datetime=datetime.datetime(2020, 3, 11, 14, 48, 40), deals=[]))" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trade" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example For\n", "### Place Order ROD LMT" ] }, { "cell_type": "code", "execution_count": 19, "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" ] } ], "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", "\n", "contract = api.Contracts.Stocks.TSE.TSE2890\n", "order = api.Order(\n", " price=12,\n", " quantity=10,\n", " action=\"Buy\",\n", " price_type=\"LMT\",\n", " order_type=\"ROD\",\n", " account=api.stock_account\n", " )\n", "trade = api.place_order(contract, order)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Trade(contract=Stock(exchange=, code='2890', symbol='TSE2890', name='永豐金', category='17', limit_up=13.75, limit_down=11.25, update_date='2020/03/11', day_trade=), order=Order(action=, price=12, quantity=10, id='c068cdc9', seqno='622974', ordno='IA016', account=Account(account_type=, person_id=SecretStr('**********'), broker_id=SecretStr('**********'), account_id=SecretStr('**********'), signed=True, username=SecretStr('')), price_type=, order_type=), status=OrderStatus(id='c068cdc9', status=, status_code='0', order_datetime=datetime.datetime(2020, 3, 11, 14, 49, 31), deals=[]))" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trade" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Place Order about First Sell" ] }, { "cell_type": "code", "execution_count": 13, "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" ] } ], "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", "\n", "contract = api.Contracts.Stocks.TSE.TSE2890\n", "order = api.Order(price=12.2,\n", " quantity=1,\n", " action=\"Sell\",\n", " price_type=\"LMT\",\n", " order_type=\"ROD\",\n", " first_sell=\"true\",\n", " account=api.stock_account\n", " )\n", "trade = api.place_order(contract, order)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Trade(contract=Stock(exchange=, code='2890', symbol='TSE2890', name='永豐金', category='17', limit_up=13.75, limit_down=11.25, update_date='2020/03/11', day_trade=), order=Order(action=, price=12.2, quantity=1, id='1902ddc1', seqno='622981', ordno='IA022', account=Account(account_type=, person_id=SecretStr('**********'), broker_id=SecretStr('**********'), account_id=SecretStr('**********'), signed=True, username=SecretStr('')), price_type=, order_type=), status=OrderStatus(id='1902ddc1', status=, status_code='0', order_datetime=datetime.datetime(2020, 3, 11, 14, 52, 35), deals=[]))" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trade" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cancel Order" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "api.update_status(api.stock_account)\n", "api.cancel_order(trade)\n", "api.update_status(api.stock_account)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Trade(contract=Stock(exchange=, code='2890', symbol='TSE2890', name='永豐金', category='17', limit_up=13.75, limit_down=11.25, update_date='2020/03/11', day_trade=), order=Order(action=, price=12.0, quantity=10, id='314a7e1d', seqno='622984', ordno='IA023', account=Account(account_type=, person_id=SecretStr('**********'), broker_id=SecretStr('**********'), account_id=SecretStr('**********'), signed=True, username=SecretStr('')), price_type=, order_type=), status=OrderStatus(id='314a7e1d', status=, status_code='00', order_datetime=datetime.datetime(2020, 3, 11, 14, 53, 13), cancel_quantity=10, deals=[]))" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trade" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Update Order" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "api.update_status(api.stock_account)\n", "api.update_order(trade=trade, price=12, qty=2)\n", "api.update_status(api.stock_account)" ] }, { "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.75, limit_down=11.25, update_date='2020/03/11', day_trade=), order=Order(action=, price=12.0, quantity=10, id='314a7e1d', seqno='622984', ordno='IA023', account=Account(account_type=, person_id=SecretStr('**********'), broker_id=SecretStr('**********'), account_id=SecretStr('**********'), signed=True, username=SecretStr('')), price_type=, order_type=), status=OrderStatus(id='314a7e1d', status=, status_code='00', order_datetime=datetime.datetime(2020, 3, 11, 14, 53, 13), cancel_quantity=2, deals=[]))" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trade" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "file_extension": ".py", "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" }, "mimetype": "text/x-python", "name": "python", "npconvert_exporter": "python", "pygments_lexer": "ipython3", "version": 3 }, "nbformat": 4, "nbformat_minor": 4 }