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.4.1.tar.gz (124.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.4.1-cp313-cp313-win_amd64.whl (741.9 kB view details)

Uploaded CPython 3.13Windows x86-64

nautilus_futu-0.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (937.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

nautilus_futu-0.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (913.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

nautilus_futu-0.4.1-cp313-cp313-macosx_11_0_arm64.whl (833.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nautilus_futu-0.4.1-cp313-cp313-macosx_10_12_x86_64.whl (855.3 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

nautilus_futu-0.4.1-cp312-cp312-win_amd64.whl (742.6 kB view details)

Uploaded CPython 3.12Windows x86-64

nautilus_futu-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (937.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

nautilus_futu-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (913.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

nautilus_futu-0.4.1-cp312-cp312-macosx_11_0_arm64.whl (833.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nautilus_futu-0.4.1-cp312-cp312-macosx_10_12_x86_64.whl (855.9 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: nautilus_futu-0.4.1.tar.gz
  • Upload date:
  • Size: 124.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.4.1.tar.gz
Algorithm Hash digest
SHA256 e94c7a0b2fee50186cf1641f1d6abd8712ed3d858292eaeded677b749d42405e
MD5 d7f1f598f2258a6abb1e9d63ce02a624
BLAKE2b-256 6f46bd25543ede5cb865f17425c834be249ea955000d476cc121e99e07f05e91

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.4.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8094b0409f2fdf16ec4c800e962f94a8c115ab30b5f05e6a5b0d8517bb05d99c
MD5 06b656c6bfa59674d0d6c478c95d0f7e
BLAKE2b-256 dadcaeb73215c04250f78f63b76f95031a847a4cdf31ca43d495920cd2852a5b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8b8ef451965358109c8ac727ada1d46421437d5ab88c34c526666aff9cab13c7
MD5 9792bcf4c456a99b1d4892f4697dee15
BLAKE2b-256 4d81eaa573bc3824e20b6d70aeb4d944f4f3ea1ea68b9f7ab4395b90f7761c4d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cb4c96722d2dc714d8be839a708718c7c33e73fde683fc560e520258b867fe6a
MD5 35f1f06dfc87e545d86544247d5ce39e
BLAKE2b-256 89d1eeff99347fa25d2f8c353d4ec1a0fa0af95a5678b520991be7e80b552745

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.4.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f9197aeed6725f387fa15d856e7154aa6d3b6ebfe8262ab561d1301356b0c1f3
MD5 91fd25bee9b517a0777e2b24af796a4a
BLAKE2b-256 b0640281f869345a8f6522a9fb17cba7494fc19c5d5d8b5531bd8546f67489fa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.4.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 435cade6b0f6f8c4c62132b0ee61994660904d8c6178e50588797b59ab6c4465
MD5 c1efd2fdb591925a3456890f8b78e0b1
BLAKE2b-256 91446663b38d6b47800706c79646a53a70ce17fd267c57b24f2a034db96b48cc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.4.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 36c138d84b7e9ccbab39079deedc707c3876e1dab71c5d89dabb313319b2c48d
MD5 5e66bddeaf374953324b3278293964d8
BLAKE2b-256 21db4aee5a6dab5c0a853be035013bdee1a76023f3ef509c7ed0ec1a4913da69

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 adc8db9aa863a26334a539552d6285ad47d50dc24a078c10f7fa39b7882c0055
MD5 e47562092b171fa27934c5d47b981837
BLAKE2b-256 22466a917654a08418bad7e1aeefcfbc50113b81b7093ed11e8479d094778a5a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 757ce8695253499c85866c6b906cbea626396ad9120761d0f1645b3b10ae2bda
MD5 384907c6e142b803536f691823ca9463
BLAKE2b-256 30e51d6f1f0f2425e9960851f05379fbf79f1e9fcbe674e13a622ac570a80dc0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.4.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9c811c07c754e14fe7314683249868ff1b9050f2fbd76ead5b7fc74912ea0618
MD5 a2326bf8e96a1465c330cbd2d996c6e5
BLAKE2b-256 056e39f8e313c886572f6a4ed5851a6557fabcd06376047211f351abea3f51ef

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.4.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 73caf2c10cb818bdf7df075f547a665e2289f17cab36ada70498c71d2ddde24b
MD5 2d516b9dbb787aed5c155a72e96a2f66
BLAKE2b-256 395e419aabcb5d1a836b34abe4483aae0d9f69363344362da82b21cc42e2265d

See more details on using hashes here.

Provenance

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