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.8.tar.gz (121.0 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.8-cp313-cp313-win_amd64.whl (712.2 kB view details)

Uploaded CPython 3.13Windows x86-64

nautilus_futu-0.3.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (910.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (887.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

nautilus_futu-0.3.8-cp313-cp313-macosx_11_0_arm64.whl (807.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nautilus_futu-0.3.8-cp313-cp313-macosx_10_12_x86_64.whl (831.8 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

nautilus_futu-0.3.8-cp312-cp312-win_amd64.whl (712.9 kB view details)

Uploaded CPython 3.12Windows x86-64

nautilus_futu-0.3.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (910.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (887.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

nautilus_futu-0.3.8-cp312-cp312-macosx_11_0_arm64.whl (807.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nautilus_futu-0.3.8-cp312-cp312-macosx_10_12_x86_64.whl (832.3 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: nautilus_futu-0.3.8.tar.gz
  • Upload date:
  • Size: 121.0 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.8.tar.gz
Algorithm Hash digest
SHA256 576cffbb43290814c2af0e0bc5cae787a2647ea367c141d31a208ac80d5006ca
MD5 5abcdc7b1c112e88b92ffe78c5b7cd16
BLAKE2b-256 1cfeaf12fbd65e0f40ce4bef74656477dd6ae7047908338afc5b397827ca1b0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.8.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.8-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0a35c4b6090694c1e24217c8ae5f0b3b2243569dd250ba86d6c736d201f85987
MD5 39e7da2d1ee6f4e580f4e8e9041c6798
BLAKE2b-256 618db339a8a53a8a9823220e37a92dd81492a46e29804fa9b8467e807e47c7c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.8-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.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c99a70e34eecc99ae7cdb21451f2654dfdc9b57e709bd4baab3124f87fd5e8d7
MD5 07954c9a4dcb4ff4563556e659c25099
BLAKE2b-256 9e03fad5f9cdcb5ffeaeb88cd8c07e9c5653c84f8db61525fc5be91c6a1a932f

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.8-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.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ea957afedc4505f0f263984491c07a3b8ceb3c0843b750a29d45d7e4d5e031b4
MD5 a67b6e07cde768202c802f30d6df3939
BLAKE2b-256 d299611c9dfeaf3db82f723db850807c94c240dc3c029c4057d74a29d7e7ce37

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.8-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.8-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a74c19913def01585bc32c4ad75bc6dff5238d935965cc7584749473cc1f5db7
MD5 ed3828d3254cb768c41868f3347bf392
BLAKE2b-256 1d5a88a33c1bfa3456f8f51118504469a303872b65d48f577cfa5a2a7f177876

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.8-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.8-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.8-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9c16b9a9a74553139831d4d19a02a0f5ccc2fadc6b7d609981672e4078b3f8a6
MD5 c476fb99d46798271fee53487c5669d9
BLAKE2b-256 a8bc67da1b0184ca2b09a6d3e2ae86d2d3144007044b435f89c8609bad457ba1

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.8-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.8-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 fc90076550e8867f505519ce8118e7b045ebe089241eb6f7ef289646e4aa1cfe
MD5 141eb9804c15ee16e3733df774e408b1
BLAKE2b-256 69807f61fc043edf10889efc6bdaf319999363b69b8215150768cb0501727637

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.8-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.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f909ff70377b933ac184594dfd666284e8879559266d75b271c0e1c386f6b905
MD5 3e2677d484c7bc66cc192e245e40e96b
BLAKE2b-256 f89338ea6b543e202fe4eaf08489614962a564ed1c8549ec2c1e6e703dbef131

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.8-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.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b691776b06fcea93e0a297121725820637738e1560ffa2a555a9d0c6fd9be32a
MD5 833c0dcb8fd18195a7556d2049b147f2
BLAKE2b-256 74f92b426727e7761d5e7b0311b8c6b517278d22313d638fd113cfd2224bb451

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.8-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.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bdd37ce6ceae71a9c4f250fc3748501bb9c3a805a305cf96e6da848b503636af
MD5 54a2c50916d1d81d499dbf713bcd79de
BLAKE2b-256 b6a11c472bf121503792826a6d9ea3d7d74f31db29d38f366a5337cfba5b28a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.8-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.8-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for nautilus_futu-0.3.8-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 038aa8b357cf15c43d3665f62bb04aaf561c5d180d5ea861d6bd08437020cbb3
MD5 19edc0d3250f812fff03bdf2a4cd9d74
BLAKE2b-256 dfd5463e25a7b36b7707d87e37268249d612a8bceb060a0a4ada1144bd859f3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for nautilus_futu-0.3.8-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