事前準備
caution
使用正式交易之前,您必須完成以下步驟
- 申請使用交易 API 服務
- 申請憑證
- 簽署同意書
- 等待審核
- 進行模擬測試
- 申請模擬環境金鑰
- 修改模擬環境設定檔
- 安裝套件
- 完成模擬下單
申請使用交易 API 服務
進入交易 API 金鑰網站點選 登入
按鈕(如下圖)
使用您的證券帳號登入系統(如下圖)
有富果帳戶卻無法登入怎麼辦?
因 富果交易 API 屬於玉山證券富果帳戶的專屬服務,所以您必須使用 「8840 經紀本部」或「884M 數位分公司」進行登入,詳情可參考 更換分公司說明!
申請憑證
依照頁面顯示步驟申請憑證(如下圖)
簽署 API 服務申請同意書
請勾選同意書內容(如下圖)
等待審核
送出申請後,您會同時收到一封標題為「【玉山證券富果帳戶】已收到您的交易 API 申請資料」的信件,審核過程約 1 至 3 個工作天。如未收到信件或審核超過 3 個工作天(不含假日),請聯絡技術客服反應。
caution
審核通過後,您會收到一封標題為「【玉山證券富果帳戶】交易 API 申請完成通知」的信件。
進行模擬測試
申請模擬環境金鑰
審核通過後,請您再次登入交易 API 入口網站,即可看到模擬金鑰申請畫面(如下圖)
取得憑證檔案
- 請點擊左下角「匯出憑證」並輸入憑證密碼,下載ID_DATE.p12
憑證檔案 (檔名為身份證字號 + 憑證過期日)。什麼是憑證密碼?
憑證密碼是指您之前申請憑證時所設置的密碼,示意圖如下:
取得模擬環境設定檔
- 點擊右上角「新增模擬金鑰」->「下載金鑰」,下載config.simulation.ini.example
模擬環境設定檔。增加白名單
- 頁面會顯示已建立的金鑰內容,請一併將您稍後會執行程式的 IP 位址加入「模擬 IP 白名單」,以便模擬環境能夠允許您的連線。(如下圖)
caution
若您屬於非固定 IP 的使用者 ex. Colab, 非固定 IP 的公司/家用網路,您可以暫時將 IP 白名單設定為 0.0.0.0/0(允許全部來源 IP),以便進行開發測試。
您的資料夾結構應該會像是這樣
.
├── config.simulation.ini
└── ID_DATE.p12
如果您首次執行,您的模擬 API 金鑰管理頁面將會出現一筆模擬金鑰(如下圖)
修改模擬環境設定檔
將模擬環境
範例的設定檔改名成 config.simulation.ini
,並在設定檔 [CERT] -> Path 的欄位填入您的憑證檔 (ID_DATE.p12) 路徑 (如何取得正確路徑)
# config.simulation.ini
[Core]
Entry = https://fugletradingapi-simulation.esunsec.com.tw/api/v1
Environment = SIMULATION
[Cert]
Path = ;Your Cert File Path Ex: ./python/cert.p12
[Api]
Key = XXXXXXXXXXXXXXXX
Secret = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[User]
Account = 884XXXXXXXX
安裝套件
- Python
- Node.js
pip install fugle-trade -U
目前支援 Python 3.7, 3.8, 3.9, 3.10 等版本。
npm install --save @fugle/trade
目前支援 Node.js 16 以上版本。
完成模擬下單
- Python
- Node.js
您可以在與憑證及設定檔相同的資料夾內新增 index.py
,使用以下內容進行連線測試
from configparser import ConfigParser
from fugle_trade.sdk import SDK
from fugle_trade.order import OrderObject
from fugle_trade.constant import (APCode, Trade, PriceFlag, BSFlag, Action)
# 讀取設定檔
config = ConfigParser()
config.read('./config.simulation.ini')
# 登入
sdk = SDK(config)
sdk.login()
# 建立委託物件
order = OrderObject(
buy_sell = Action.Buy,
price_flag = PriceFlag.LimitDown,
price = None,
stock_no = "2884",
quantity = 1,
)
sdk.place_order(order)
print("Your order has been placed successfully.")
程式會跳出提示,請您輸入玉山證券富果帳戶的登入密碼以及憑證密碼:
# 執行程式
$ python index.py
Enter esun account password: # 請輸入您玉山證券富果帳戶的登入密碼
Enter cert password: # 請輸入您的憑證密碼
Your order has been placed successfully.
不小心輸入錯誤密碼怎麼辦?
您可以執行 sdk.reset_password()
,重新輸入玉山證券富果帳戶的登入密碼及憑證密碼再重新登入,範例如下:
from configparser import ConfigParser
from fugle_trade.sdk import SDK
from fugle_trade.order import OrderObject
from fugle_trade.constant import (APCode, Trade, PriceFlag, BSFlag, Action)
config = ConfigParser()
config.read('./config.simulation.ini') # 請換上您正在使用的 config 檔案
sdk = SDK(config)
sdk.reset_password() # 此函數用來重設密碼
sdk.login()
若想了解更多可參考 相關文件 !
您可以在與憑證及設定檔相同的資料夾內新增 index.js
,使用以下內容進行連線測試
import { FugleTrade, Order } from '@fugle/trade';
// 環境設定
const fugle = new FugleTrade({
configPath: './config.simulation.ini',
});
// 登入
await fugle.login();
// 建立委託物件
const order = new Order({
buySell: Order.Side.Buy,
price: '',
stockNo: '2884',
quantity: 1,
apCode: Order.ApCode.Common,
priceFlag: Order.PriceFlag.LimitDown,
bsFlag: Order.BsFlag.ROD,
trade: Order.Trade.Cash,
});
// 送出委託
await fugle.placeOrder(order);
console.log("Your order has been placed successfully.");
程式會跳出提示,請您輸入玉山證券富果帳戶的登入密碼以及憑證密碼:
# 執行程式
$ node index.js
Enter esun account password # 請輸入您玉山證券富果帳戶的登入密碼
Enter cert password # 請輸入您的憑證密碼
Your order has been placed successfully.
caution
您可以透過模擬環境測試您的下單、查詢委託等指令,唯目前模擬環境在接單後不會有模擬成交之行為,其帳務及交易商品等資訊亦不保證與正式環境相同。
info
若程式執行成功,稍後您會收到一封標題為「【玉山證券富果帳戶】交易 API 正式金鑰申請通知」的信件,代表您已完成模擬環境的連線測試,可以申請正式金鑰了!
恭喜您!你已經可以開始使用交易 API 撰寫策略、進行實單交易了!請您再次登入交易 API 入口網站,即可看到頁面左側選單有新增API 金鑰管理的功能(如下圖),您可依照之前建立模擬金鑰的操作方式,下載正式環境的金鑰及設定檔。