| Crates.io | r-fubon-neo |
| lib.rs | r-fubon-neo |
| version | 2.2.3 |
| created_at | 2025-06-15 09:52:02.156296+00 |
| updated_at | 2025-06-15 09:52:02.156296+00 |
| description | Rust implementation of Fubon Neo SDK for trading and market data (P.O.C project) |
| homepage | https://github.com/SDpower/r-fubon-neo |
| repository | https://github.com/SDpower/r-fubon-neo |
| max_upload_size | |
| id | 1713119 |
| size | 180,722 |
r-fubon-neo 是富邦證券 Neo SDK 的 Rust 實現版本 (P.O.C project),完全相容 Python 3.12+ 的 fubon_neo 套件功能。提供高性能、類型安全的金融交易和市場數據 API。
⚠️ 重要提醒: 這是一個概念驗證 (Proof of Concept) 專案,目前處於開發階段,僅供學習和研究目的使用。
git clone https://github.com/SDpower/r-fubon-neo.git
cd r-fubon-neo
# 設置環境變數
cp .env.example .env
# 編輯 .env 檔案,填入您的登入認證資訊
# 標準編譯
cargo build --release
# 靜態連結編譯 (推薦用於部署)
cargo build --release --target x86_64-unknown-linux-musl
# 標準 Docker 映像
docker build -t r-fubon-neo .
# 靜態連結映像(極小體積 - 僅 2.16MB)
docker build -f Dockerfile.static --target static -t r-fubon-neo:static .
# Distroless 靜態映像(3.94MB,更好相容性)
docker build -f Dockerfile.static --target distroless -t r-fubon-neo:distroless .
# 運行容器
docker run --rm r-fubon-neo version
docker run --rm r-fubon-neo:static version # 最小體積
docker run --rm r-fubon-neo:distroless version # 更好相容性
use r_fubon_neo::{FubonSDK, CoreSDK, Mode, Order, OrderType, BSAction, TimeInForce, LoginCredentials};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 初始化 SDK 並登入
let mut sdk = FubonSDK::new();
let credentials = LoginCredentials {
personal_id: "your_personal_id".to_string(),
password: "your_password".to_string(),
cert_path: "/path/to/your/certificate.p12".to_string(),
cert_pass: Some("your_cert_password".to_string()),
};
// 登入並獲取帳戶列表
let accounts = sdk.login(credentials)?;
println!("可用帳戶: {:?}", accounts);
// 獲取帳戶餘額
let balance = sdk.get_account_balance()?;
println!("帳戶餘額: ${:.2}", balance);
// 初始化市場數據
sdk.init_realtime(Mode::Speed)?;
if let Some(market_data) = sdk.market_data() {
// 使用 REST API 獲取股票資料
let stock_client = market_data.rest_client.stock()?;
let snapshot = stock_client.snapshot()?.get_data("2330").await?;
println!("台積電快照: {:?}", snapshot);
}
Ok(())
}
# 查看版本
r-fubon-neo version
# 登入並查看帳戶
r-fubon-neo login
# 使用環境變數 (.env 檔案)
r-fubon-neo test
r-fubon-neo market-data
# 或使用 CLI 參數
r-fubon-neo --personal-id YOUR_ID --password YOUR_PASS --cert-path /path/to/cert.p12 login
r-fubon-neo --personal-id YOUR_ID --password YOUR_PASS --cert-path /path/to/cert.p12 test
# 構建標準映像
docker build -t r-fubon-neo .
# 構建靜態連結映像 (推薦 - 僅 2.16MB)
docker build -f Dockerfile.static --target static -t r-fubon-neo:static .
# 構建 Distroless 靜態映像 (3.94MB,更好相容性)
docker build -f Dockerfile.static --target distroless -t r-fubon-neo:distroless .
# 運行標準容器
docker run --rm \
-e FUBON_PERSONAL_ID=your_id \
-e FUBON_PASSWORD=your_password \
-e FUBON_CERT_PATH=/path/to/cert.p12 \
-e FUBON_CERT_PASS=your_cert_password \
r-fubon-neo test
# 運行靜態映像 (極小體積,最高安全性)
docker run --rm \
-e FUBON_PERSONAL_ID=your_id \
-e FUBON_PASSWORD=your_password \
-e FUBON_CERT_PATH=/path/to/cert.p12 \
r-fubon-neo:static test
# 運行 Distroless 映像 (小體積,更好兼容性)
docker run --rm \
-e FUBON_PERSONAL_ID=your_id \
-e FUBON_PASSWORD=your_password \
-e FUBON_CERT_PATH=/path/to/cert.p12 \
r-fubon-neo:distroless test
# 啟動標準服務
docker-compose up fubon-neo
# 開發模式
docker-compose --profile dev up fubon-neo-dev
# 靜態連結版本
docker-compose --profile static up fubon-neo-static
docker-compose --profile distroless up fubon-neo-distroless
# 包含監控
docker-compose --profile monitoring up
# 構建腳本
./scripts/docker-build.sh -t v2.2.3 # 標準版本
./scripts/docker-build.sh -s -t static # 靜態連結版本 (2.16MB)
./scripts/docker-build.sh --distroless -t distroless # Distroless 版本 (3.94MB)
# 運行腳本
./scripts/docker-run.sh -k YOUR_KEY -s YOUR_SECRET test # Legacy method (deprecated)
# 新方法: 使用環境變數或直接運行 Docker 容器
| 映像版本 | 大小 | 說明 | 使用場景 |
|---|---|---|---|
r-fubon-neo:static |
2.16MB | 基於 scratch,完全靜態連結 | 生產部署,最高安全性 |
r-fubon-neo:distroless |
3.94MB | 基於 distroless,靜態連結 | 生產部署,更好相容性 |
r-fubon-neo:latest |
~50MB+ | 標準 Debian 基底 | 開發測試 |
# 開發模式
cargo run -- version
# 發布模式
cargo build --release
# 靜態連結版本 (推薦用於部署)
cargo build --release --target x86_64-unknown-linux-musl
cargo build --profile static
# 運行測試
cargo test
# 格式化程式碼
cargo fmt
# 檢查程式碼
cargo clippy
# 使用 Docker 開發環境
docker-compose --profile dev up fubon-neo-dev
# 或使用 cargo-watch 熱重載
cargo install cargo-watch
cargo watch -x "run -- version"
| 功能 | Python (fubon_neo) | Rust (r-fubon-neo) |
|---|---|---|
| 性能 | 標準 | 🚀 3-5倍更快 |
| 記憶體使用 | 標準 | 🔋 50% 更少 |
| 類型安全 | 運行時檢查 | ✅ 編譯時檢查 |
| 錯誤處理 | Exception | 🛡️ Result 類型 |
| 並發處理 | asyncio | ⚡ Tokio 異步 |
| 部署大小 | 需要 Python 環境 | 📦 單一執行檔 (2.16MB 靜態映像) |
app:
name: "r-fubon-neo"
version: "2.2.3"
environment: "production"
api:
timeout: 30
retry_attempts: 3
websocket:
ping_interval: 30
max_missed_pongs: 2
# 複製範例檔案
cp .env.example .env
# 編輯 .env 檔案
# FUBON_PERSONAL_ID=your_actual_personal_id
# FUBON_PASSWORD=your_actual_password
# FUBON_CERT_PATH=/path/to/your/certificate.p12
# FUBON_CERT_PASS=your_actual_cert_password
# 登入認證 (主要格式)
export FUBON_PERSONAL_ID=your_personal_id
export FUBON_PASSWORD=your_password
export FUBON_CERT_PATH=/path/to/your/certificate.p12
export FUBON_CERT_PASS=your_cert_password
# 或使用替代格式
export PERSONAL_ID=your_personal_id
export PASSWORD=your_password
export CERT_PATH=/path/to/your/certificate.p12
export CERT_PASS=your_cert_password
# 日誌等級
export RUST_LOG=info
export RUST_BACKTRACE=1
FUBON_PERSONAL_ID 或 PERSONAL_IDFUBON_PASSWORD 或 PASSWORDFUBON_CERT_PATH 或 CERT_PATHFUBON_CERT_PASS 或 CERT_PASS (可選)歡迎提交問題和拉取請求!
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)本專案採用雙重授權:
本專案為概念驗證 (P.O.C) 專案,僅供教育、學習和研究目的。
開發者: Steve Lo
聯絡方式: info@sd.idv.tw
專案性質: P.O.C (Proof of Concept) project
開發目的: 探索 Rust 在金融 API 開發領域的應用潛力
Made with ❤️ in Rust by Steve Lo
P.O.C Project - Exploring Rust in FinTech