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.3.tar.gz (119.3 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.3-cp313-cp313-win_amd64.whl (709.2 kB view details)

Uploaded CPython 3.13Windows x86-64

nautilus_futu-0.3.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (908.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (885.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

nautilus_futu-0.3.3-cp313-cp313-macosx_11_0_arm64.whl (805.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nautilus_futu-0.3.3-cp313-cp313-macosx_10_12_x86_64.whl (828.5 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

nautilus_futu-0.3.3-cp312-cp312-win_amd64.whl (709.9 kB view details)

Uploaded CPython 3.12Windows x86-64

nautilus_futu-0.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (908.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (885.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

nautilus_futu-0.3.3-cp312-cp312-macosx_11_0_arm64.whl (805.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nautilus_futu-0.3.3-cp312-cp312-macosx_10_12_x86_64.whl (829.0 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: nautilus_futu-0.3.3.tar.gz
  • Upload date:
  • Size: 119.3 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.3.tar.gz
Algorithm Hash digest
SHA256 dd43cea719d03afdde9eb16537ee5eac1e872a377540862ff81d96a92a5a79dd
MD5 4a04daa96798fd46ffca256104c2db7b
BLAKE2b-256 2e3d698f2909ef9a10703c22e71aacd7e08e461f0d78af7ace907d98687d90dc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 827f35a6bc63781e56c357dcc94b77205f7695ec105c0787f1fa35939ab02c58
MD5 ea086cbcdf824e812b09e581b54c1dc8
BLAKE2b-256 f590f9d84cc4640664e37754ea8e13f6ae0deb5aab3d376dfcae0dbfe0ad611e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7e3961b2f2d1f4d0a60b4ff4eecbb44b2602fb3aa8a2bd76b4859833d9223daf
MD5 be76d16145a0d9e988eadfc86c3ac474
BLAKE2b-256 a97d2b1daa212119a29d7b7cb7d6de33b16d28ccee8ce766ffc380d9abc58dd8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dd5a036bcb3d09dedeb36ac0bba11280122f0842e917934e600410530bc19943
MD5 8ba565220ffa4bfd8e2808de5a404fe4
BLAKE2b-256 4af1636b2ef8a94548e8736101b950013f15daab0315fe619e58c26937208e06

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ff82cc5f67f27380f1d749460ec4d8be6f735d5bb861bc395f115a2a40a7e8dc
MD5 6383571b0a3d7f839b9dd9e2631f6d9d
BLAKE2b-256 07eb618d2f9dc53a7a700f0fb5e2526b05acf39b1b0c079f4aee4f796a1ef933

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.3-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2d04d0c9dfa418cec097a8d50049b7d577f360394158e8ffee219dfb2055f82e
MD5 5d834fe811a7c1f7998629110819ed3f
BLAKE2b-256 b173c118e7ee9327055932e91daaba211095bf4ba9acd463d311822a9ff1bdcf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ae21824c2aa6365c1b851ba7d468b3c5dcb66e7e905ed379263a4678a996ba07
MD5 d66458e80139a981ff1450bd98c42359
BLAKE2b-256 a29f089e43c4c380ceee28eea920891ca263df3ffb018010db3d24a331f5b1ba

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8460614fe1507b8c4c855b00d645b670ef7b48cc782f8d90ff64cb327bf06709
MD5 0797b27a84823bdcab9a7b6a5c8a878a
BLAKE2b-256 6d79597db177686987fd49dc88ad01edc0a9c51d73629284f60900ba02cffbe2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 121805fde9753de18fb0f1f952920f2eced0c33dcf58e1f6c54aed253f563203
MD5 115a34b5cf738cfe72d8f0ba0781b9fe
BLAKE2b-256 c916a01bbec395b8d261a1ac5b6d8d6444afafa986f472c314ff7d7239cd4a57

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 88eb64e6d6d9af4cbdf65db7dc966ea372de76c227ea2763ff74f2d0f95f4ed7
MD5 344654b06451c9e3b4b88555754ee86e
BLAKE2b-256 fb888caa4720f4d14f012da3d71bf51a86d47d32c58fe4fa3fd38d37d1133f84

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d8e57d23ba7d9e5116a1fba526474783c47172129376d98102d3f3bbdf8f4dd2
MD5 65ebedaa78f8001ee05df875050a72a3
BLAKE2b-256 083d8a106f647f32fdb7c4c0869e22ad7dd802f027ac95946f91d66126d70d54

See more details on using hashes here.

Provenance

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