Skip to main content

Futu OpenD adapter for NautilusTrader

Project description

nautilus-futu

Futu OpenD adapter for NautilusTrader — 通过富途 OpenD 网关接入港股、美股、A股等市场的量化交易适配器。

特性

  • 独立安装包 — 不依赖 NautilusTrader 主仓库,自主控制版本发布
  • Rust 协议层 — 用 Rust 实现 Futu OpenD TCP 二进制协议,高性能低延迟
  • 无 protobuf 冲突 — 不依赖 futu-api Python 包,Rust 侧用 prost 处理 protobuf,彻底避免版本冲突
  • 完整功能覆盖 — 行情订阅、历史K线、下单/改单/撤单、账户资金/持仓查询

支持市场

市场 行情 交易
港股 (HK)
美股 (US)
A股 (CN)

前置条件

  • Python >= 3.12
  • Futu OpenD 网关运行中(默认 127.0.0.1:11111
  • Rust 工具链(从源码安装时需要)

安装

pip install nautilus-futu

从源码安装:

git clone https://github.com/loadstarCN/nautilus-futu.git
cd nautilus-futu
pip install .

快速上手

import asyncio
from nautilus_futu.config import FutuDataClientConfig, FutuExecClientConfig

async def main():
    # 导入 Rust 客户端
    from nautilus_futu._rust import PyFutuClient

    client = PyFutuClient()
    client.connect("127.0.0.1", 11111, "nautilus", 100)

    # 获取行情快照
    quotes = client.get_basic_qot([(1, "00700")])  # 腾讯控股
    for q in quotes:
        print(f"{q['code']}: {q['cur_price']}")

    # 获取历史K线
    bars = client.get_history_kl(
        market=1,
        code="00700",
        rehab_type=1,      # 前复权
        kl_type=1,          # 日K
        begin_time="2025-01-01",
        end_time="2025-12-31",
    )
    print(f"获取到 {len(bars)} 根K线")

    client.disconnect()

asyncio.run(main())

集成 NautilusTrader

from nautilus_trader.live.node import TradingNode
from nautilus_futu.config import FutuDataClientConfig, FutuExecClientConfig
from nautilus_futu.factories import FutuLiveDataClientFactory, FutuLiveExecClientFactory

node = TradingNode()

# 注册 Futu 适配器
node.add_data_client_factory("FUTU", FutuLiveDataClientFactory)
node.add_exec_client_factory("FUTU", FutuLiveExecClientFactory)

# 配置
data_config = FutuDataClientConfig(
    host="127.0.0.1",
    port=11111,
)
exec_config = FutuExecClientConfig(
    host="127.0.0.1",
    port=11111,
    trd_env=0,          # 0=模拟, 1=真实
    trd_market=1,       # 1=港股, 2=美股
    unlock_pwd_md5="",  # 真实交易需要填写
)

node.build()
node.run()

项目结构

nautilus-futu/
├── crates/futu/           # Rust 核心
│   ├── proto/             # Futu OpenD .proto 文件
│   └── src/
│       ├── protocol/      # TCP 协议:包头、编解码、加解密
│       ├── client/        # 连接管理、握手、心跳、消息分发
│       ├── quote/         # 行情:订阅、快照、历史K线
│       ├── trade/         # 交易:账户、下单、查询
│       ├── generated/     # Protobuf 生成的 Rust 类型
│       └── python/        # PyO3 绑定
├── nautilus_futu/          # Python NautilusTrader 适配器
│   ├── data.py            # FutuLiveDataClient
│   ├── execution.py       # FutuLiveExecutionClient
│   ├── providers.py       # FutuInstrumentProvider
│   └── parsing/           # 数据类型转换
├── tests/
└── examples/

开发

# 安装 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 创建并激活虚拟环境
python -m venv .venv
# Linux / macOS
source .venv/bin/activate
# Windows
.venv\Scripts\activate

# 安装开发依赖
pip install -r requirements-dev.txt

# 开发模式构建(自动编译 Rust 并安装 Python 包)
maturin develop

# 运行 Rust 测试
cargo test

# 运行 Python 测试
pytest tests/python -v

架构

Python 应用 / NautilusTrader
        │
        ▼
nautilus_futu (Python 适配器层)
        │
        ▼ PyO3
nautilus_futu._rust (Rust 编译的扩展模块)
        │
        ▼ TCP + Protobuf + AES
Futu OpenD 网关
        │
        ▼
港股 / 美股 / A股 交易所

许可证

MIT

相关链接

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nautilus_futu-0.3.6.tar.gz (119.7 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

nautilus_futu-0.3.6-cp313-cp313-win_amd64.whl (708.9 kB view details)

Uploaded CPython 3.13Windows x86-64

nautilus_futu-0.3.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (908.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (885.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

nautilus_futu-0.3.6-cp313-cp313-macosx_11_0_arm64.whl (805.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nautilus_futu-0.3.6-cp313-cp313-macosx_10_12_x86_64.whl (829.5 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

nautilus_futu-0.3.6-cp312-cp312-win_amd64.whl (709.6 kB view details)

Uploaded CPython 3.12Windows x86-64

nautilus_futu-0.3.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (908.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (885.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

nautilus_futu-0.3.6-cp312-cp312-macosx_11_0_arm64.whl (805.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nautilus_futu-0.3.6-cp312-cp312-macosx_10_12_x86_64.whl (830.1 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

Details for the file nautilus_futu-0.3.6.tar.gz.

File metadata

  • Download URL: nautilus_futu-0.3.6.tar.gz
  • Upload date:
  • Size: 119.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nautilus_futu-0.3.6.tar.gz
Algorithm Hash digest
SHA256 c63eed344e7beb18c2607269eea82f25c6c0817cc68ca29b8a5fc988dd704061
MD5 cb6b5a0619b10192e08413470768c4d3
BLAKE2b-256 cfed51b2d79e747ece9d7570649d0db5d632a0482b25aeacd9a0bf2eeceeb051

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.6.tar.gz:

Publisher: release.yml on loadstarCN/nautilus-futu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nautilus_futu-0.3.6-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f7e5966a38bde9d27a9a08e87954b8167b6389b577e5a7f9829b19b322408a27
MD5 9d20daf3aef649576b60f8b134f2633a
BLAKE2b-256 8e396dc14981dc38066b4ea8623553f8d5b5f551a65b3dfe94ddc3a17482050b

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.6-cp313-cp313-win_amd64.whl:

Publisher: release.yml on loadstarCN/nautilus-futu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nautilus_futu-0.3.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e62cb10626dde5f4e0126afbb543edc4983604e8467a6c1ef2b59991d39a99fd
MD5 4f1e7287b0c89dea036e814f3b122c11
BLAKE2b-256 c16706bb2ecb691c0959681d44fa809ff4ad02ed8985abf55b3cbae4d5b1513b

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on loadstarCN/nautilus-futu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nautilus_futu-0.3.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0996ff744f36796d113f5bf2d04cc2228a62cc4f9b5070606d6d61a3cab59521
MD5 1881193fb17d4a73d7e3ef58a410a372
BLAKE2b-256 1a64de5fd152353fe9236c1bb2b8a3cfbadc14e0e4f8dc907751390b21ccb6a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on loadstarCN/nautilus-futu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nautilus_futu-0.3.6-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d5265b539eea5a533dc6c0d515e275c47231bce02adb04eb66decd1a4725169c
MD5 0eff81eeb347dd6d38e3a45e114387d9
BLAKE2b-256 7f2a7430ac45d553464df6dee8d96a53d38962db7d0d4c5d8e572abfb802cb77

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.6-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on loadstarCN/nautilus-futu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nautilus_futu-0.3.6-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.6-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8150d6f8807fd392ad74f076c93a126963755f231a784a3f142e9caa28a2e237
MD5 46d5d62f16818f6d5228ca78dfc132f6
BLAKE2b-256 f20a42d28a39c7be8769e03fb791be978c6902307e951f92f694c8c70aeac9f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.6-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: release.yml on loadstarCN/nautilus-futu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nautilus_futu-0.3.6-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 af9c8368c346a572c58e119aa9561d2f50f0e7ced47438c9acc9fba61d3daa80
MD5 707e0e9e6a7c8c0b59cada79a9356318
BLAKE2b-256 41926026a9829fd6dc0abef83600835dd36ffbd0a9f6894bd144873f4f5673be

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.6-cp312-cp312-win_amd64.whl:

Publisher: release.yml on loadstarCN/nautilus-futu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nautilus_futu-0.3.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cd729e8231d059a8a6d5b6aaec31b5edbe89c56a8d265ae4ee294a252de101db
MD5 9ad66b51688d8b767afe02c70b7e23a5
BLAKE2b-256 3899d453d89f4f5ac127297916dfadac82ebcb7d80a6843e17b3db571c660d09

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on loadstarCN/nautilus-futu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nautilus_futu-0.3.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9f1f8d33c79a27172f17808264b9dd8416624d113542fdd0b3cbddc51ef6cc06
MD5 7cb96ca6f176257285255abf5c28262e
BLAKE2b-256 548db75b1c72262e5130428f1cb136d7514c50df0a060c3c5e9ebf6ca538ddae

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on loadstarCN/nautilus-futu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nautilus_futu-0.3.6-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fceadbf9991b9b2fdff43634660bb18616c7b0fd15cf1c1450a0027c6dbf6cbc
MD5 d3bc3e2d9e155e03d722f66839592245
BLAKE2b-256 da4b39f275f6f6335687f0aa237e38007465254c7857957037016a0c2746d2dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.6-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on loadstarCN/nautilus-futu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nautilus_futu-0.3.6-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.6-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a2f26596c9403237017e015b9915992e4b88831fcc1a4c01af7f145f257fa12f
MD5 bd45e499d3d09839a21c85259951a0c3
BLAKE2b-256 aa31510b34bb5e421ab1b0e71fbd2221fd83bcbd69f2d73998ee8d8dcd3f0888

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.6-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: release.yml on loadstarCN/nautilus-futu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page