Fubon Neo API (Trade API) 富邦新一代

By Jason Chuang 2025-03-05

Fubon Neo API 富邦新一代 2.1.1 as 2025-03-05

我很喜歡這個有支持 Windows, Linux, and macOS (M-series chip)

Python and JavaScript (TypeScript) versions

Git sample code to run both Python and TypeScript

https://github.com/chuangtc/quant-fubon

Requirements after git clone

For Python

python3 -m venv .venv
# Linux and macOS
source .venv/bin/activate
# Windows 11 powershell
.\.venv\Scripts\Activate.ps1

pip install -r requirements.txt
pip install --force-reinstall --no-cache ./lib/fubon-neo-py/XXXX.whl
python quant_fubon/run1_check_accounts.py

For JavaScript

# nodejs v22
npm install
npm run dev

For Python3 , check account info

# 連結 API Server
sdk = FubonSDK()
accounts = sdk.login(USER_ID, USER_PASSWORD, PFX_PATH, PFX_PASSWORD)   # 登入帳號 輸入:帳號、密碼、憑證路徑、憑證密碼
print(accounts)

For Python3, check inventory and bank remaining money

    # 連結 API Server
    sdk = FubonSDK()
    accounts = sdk.login(USER_ID, USER_PASSWORD, PFX_PATH, PFX_PASSWORD)   # 登入帳號 輸入:帳號、密碼、憑證路徑、憑證密碼

    # 庫存查詢
    result = sdk.accounting.inventories(accounts.data[0])

    if result.is_success:
        print(f"資料筆數: {len(result.data)}\n")
        i = 0
        for inv in result.data:
            i += 1
            print(f"第 {i} 筆\n")
            print(f"{inv}\n")

    else:
        print("查詢失敗")
        print(result)

    # 銀行餘額
    result = sdk.accounting.bank_remain(accounts.data[0])
    print(f"銀行餘額:{result}")

For Python3, 下市價單的買單 00878

# 連結 API Server
    sdk = FubonSDK()
    accounts = sdk.login(USER_ID, USER_PASSWORD, PFX_PATH, PFX_PASSWORD)   # 登入帳號 輸入:帳號、密碼、憑證路徑、憑證密碼

    # 定義單筆訂單內容

    order = Order(
        buy_sell = BSAction.Buy,
        symbol = "00878",
        price = None,
        quantity = 1000, # 股數; 1000為一張
        market_type = MarketType.Common,
        price_type = PriceType.Reference,
        time_in_force = TimeInForce.ROD,
        order_type = OrderType.Stock,
        user_def = None, # optional field
    );

    # 列印訂單內容
    print(order)

    # 下單
    order_reponse = sdk.stock.place_order(accounts.data[0], order)
    print(order_reponse)

    time.sleep(10) # 等待10秒後查詢委託單狀態

    result = sdk.stock.get_order_results(accounts.data[0])
    print(f"筆數: {len(result.data)}")
    i = 0
    for order_result in result.data:
        print(f"第 {i+1} 筆:")
        print(order_result, end="\n\n")
        i += 1

Reference