Day 02 - 登入及下单签署

登入及下单签署

官网对应说明文件:https://sinotrade.github.io/tutor/login/
首先,说明如何登入Shioaji API。
如果你还没有永丰金证券户及帐号密码,或是你想先测试Shioaji API的功能,可以使用模拟帐户进行登入
模拟环境的帐号为PAPIUSER01~PAPIUSER08,登入密码皆为「2222」,登入方式如下:

import shioaji as sj #将shioaji重新命名为sj
api = sj.Shioaji(simulation=True) #初始化时,simulation设为True,代表要使用模拟环境
api.login(
    person_id="PAPIUSER01", 
    passwd="2222"
)
api.logout() #登出

如果你有永丰金证券户,可以直接用你的电子交易的帐号密码进行登入

import os
import shioaji as sj #将shioaji重新命名为sj

api = sj.Shioaji() #初始化api,不用给任何参数
#执行登入动作
api.login(
    person_id=os.getenv('YOUR_PERSON_ID'), #登入帐号
    passwd=os.getenv('YOUR_PASSWORD') #登入密码
)
api.logout() #登出

为了维护Shiaoji API的服务品质,从2021/08/06开始有限制帐号的连线数(同时间最多五个连线)。
所以Shioaji API提供了logout登出功能,当你不使用Shioaji API时,请记得执行logout()进行登出。其余相关服务限制,请参考官方说明档:https://sinotrade.github.io/tutor/limit/

跟第一个使用模拟环境登入方式,除了在初始化时不给任何参数外
可以看到在这里,是使用os.getenv来取得设定在系统环境变数中的帐号及密码
因为在实务上,我们不会把帐号资讯直接写在程序码中,而是将帐号资讯设定在环境变数中;当程序执行时再从环境变数中取得帐号资讯
之所以会这麽做,主要是为了防止在分享或上传程序码时,不小心把帐号资讯泄漏出去
但因为Windows、Linux的环境变数设定方式大不相同,而且你所使用的使用者帐号不一定会有权限可以新增环境变数,所以大多会透过设定档的方式储存帐号资讯
这里介绍python-dotenv这个套件,使用方式也很简单
首先,在命令提示字元中(若有使用虚拟环境,请记得先启动虚拟环境),输入下列指令进行安装

pip install python-dotenv

接着在存放程序码的资料夹底下,新增一个「.env」的档案,档案内容如下:

YOUR_PERSON_ID=PAPIUSER01
YOUR_PASSWORD=2222

等号前面为变数的名称,後面为变数的值,每个变数以换行方式区分
最後,将程序码修改为以下方式

import os
import shioaji as sj
from dotenv import load_dotenv #从dotenv模组中汇入load_dotenv这个function

load_dotenv() #读取设定档中的内容至环境变数
api = sj.Shioaji()

api.login(
    person_id=os.getenv('YOUR_PERSON_ID'),
    passwd=os.getenv('YOUR_PASSWORD')
)
api.logout()

当执行load_dotenv()时,程序就会在该资料夹底下搜寻是否有「.env」这个档案,如果有就将变数名称及值读入至环境变数中
当然,你也可以把帐号资讯存在别的资料夹底下,在使用时只要指定env档案的完整路径即可,例如:

load_dotenv('D:\Shioaji\my_account.env')

登入後,我们可以看一下这个帐号底下有哪些帐户。取得帐户资讯有两种,第一种是在执行login时,定义一个变数储存回传的帐户资讯;第二种是在login後,执行list_accounts()取得帐户资讯。这两种方式,取得的内容都是相同的,范例如下:

accounts = api.login(
    person_id=os.getenv('YOUR_PERSON_ID'),
    passwd=os.getenv('YOUR_PASSWORD')
)
accounts = api.list_accounts()

若你登入虚拟环境後,执行print(accounts),会显示以下内容

[FutureAccount(person_id='QBCCAIGJBJ', broker_id='F002000', account_id='9100020', signed=True, username='PAPIUSER01'), StockAccount(person_id='QBCCAIGJBJ', broker_id='9A95', account_id='0504350', signed=True, username='PAPIUSER01')]

可以看到虚拟环境帐号底下,分别有FutureAccount期货帐户及StockAccount股票帐户,相关变数说明如下:

变数名称 说明
person_id 身份证号码
broker_id 券商分点号码
account_id 帐户号码
signed 是否已签署API下单 若帐号资讯无此变数,表示此帐户尚未签署API下单
username 使用者名称 若使用个人帐号登入,此栏位显示你的姓名

若你的帐户尚未签署API下单,可开启永丰金iLeader,找到「数位e柜台」并开启
https://ithelp.ithome.com.tw/upload/images/20210917/20140827totMkngYIX.jpg
点「签署中心」
https://ithelp.ithome.com.tw/upload/images/20210917/20140827D5Cw33KGNI.jpg
签署中心中,有分「证券类」及「期货类」
https://ithelp.ithome.com.tw/upload/images/20210917/20140827bPLoA3lJ12.jpg
若已签署,则左上角会显示「已签署」
https://ithelp.ithome.com.tw/upload/images/20210917/20140827PCex4UldOV.jpg
若左上角显示「未签署」,则可以点进去进行签署动作
https://ithelp.ithome.com.tw/upload/images/20210917/20140827RTNwqTWPxU.jpg


<<:  Day 3

>>:  Day02:咦?啊产品已经上线了,真的要翻新吗

day5 - API接口设计: gRPC & http API 简介

当你把产品包装好之後, 要怎麽销售出去呢? 『销售』套用在系统开发上面就是怎麽让外部的系统能够使用到...

[JAVA 环境]JDK与环境变数安装

JAVA 优点: 跨平台 物件导向特性 广泛应用於企业及 Web 应用开发和行动应用开发。 编译语言...

Springboot AJAX

Springboot AJAX ...

[day 20 ] SwiftUI Essentials-Creating and Combining Views

SwiftUI Essentials - Creating and Combining Views ...

28 | 【区块组合套件介绍】Kadence Blocks

Kadence Blocks 是近两三年积极发展的区块组合套件外挂,主打《区块 Block》作为建...