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.5.tar.gz (119.4 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.5-cp313-cp313-win_amd64.whl (708.9 kB view details)

Uploaded CPython 3.13Windows x86-64

nautilus_futu-0.3.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (908.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.5-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.5-cp313-cp313-macosx_11_0_arm64.whl (804.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nautilus_futu-0.3.5-cp313-cp313-macosx_10_12_x86_64.whl (828.6 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

nautilus_futu-0.3.5-cp312-cp312-win_amd64.whl (709.7 kB view details)

Uploaded CPython 3.12Windows x86-64

nautilus_futu-0.3.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (908.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (885.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

nautilus_futu-0.3.5-cp312-cp312-macosx_11_0_arm64.whl (804.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nautilus_futu-0.3.5-cp312-cp312-macosx_10_12_x86_64.whl (829.2 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: nautilus_futu-0.3.5.tar.gz
  • Upload date:
  • Size: 119.4 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.5.tar.gz
Algorithm Hash digest
SHA256 7af1c5c90bf9173f42ea9f5a44ae4d802b13e3bb86625b319bd84210f21c1765
MD5 850a204d19d87894da889026ab0d3881
BLAKE2b-256 80c54a917d102d685998cd4fd8cdccbc02c3113e91c149a76641cade8c0b8a06

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 efdbf936ccf8c558014b08400f0ed4e443fa5c5137db261ff8cb6d2ed3be5fd1
MD5 db6882e7df12327e95f21146e68befb3
BLAKE2b-256 433c8d9adeea233bb668ec1b5fe0471353dd9aef07459f42dd93423cb3689067

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ebc511e3ae6913f9e4abee0dbdeaa018354b4d18f7c50986942a525eb195bdad
MD5 e94e1fdb4d16fc3aa3a5b37ddd0ba18f
BLAKE2b-256 9fc88aee686c601115cacf5650cc4bd35671156907a5658c822f543c0615db12

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ab105e2ad9828f37c05a9c58cc9cfb06de1c380d866a1972a6c5123e5532c277
MD5 69a67e815159dec37b47f8e5f9bf16c1
BLAKE2b-256 39da446e59c60cc2a60305c6debf74f7f80415e365a0d4147347db62b585d8c7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e66f657dc3aa654a4414dcbc50fb25ed83963d5c2ec95453fa2a4357febcceaf
MD5 e59cd27161216d5f51dff0bd87da503f
BLAKE2b-256 6bf37d097be50dd7f63167d784d22c5884452ecb9ca529ba95836c3807591a6e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.5-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 22446c171557e698e3bcb0cfcc9c307b7ad504efcf3c44c73bcad7ede991de1a
MD5 33e487f3f0dd4ddb04f5d5eebc1a1db3
BLAKE2b-256 ea2480e39b109f54248015570fa29cfe96e8577dd992c5b2213986aff96a6011

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 234721633c9d03f351cc7c399bce308075a57abd926289651ff677dd9a74869f
MD5 4ea7a41355c5aafc85a46236eb6b9ccd
BLAKE2b-256 62d728fcd9e0cafa047811a185384577eff982bd0ef1003ca3663bba4e9d5a85

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9a07870d3ac411493d6e6d92532cf54c5e2ebde494c22fe68de0b28e2857b528
MD5 a5ca75be091e3871f90f49b1945fed5a
BLAKE2b-256 922e1a0cda36ea5b2c8d849b48339e98ac8c2293d2332eb778fd15d2f31cc5e4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f698c5fc2b357d2fdab561bbbbb669bb3981862a9bf7914ffeba1ea6e5ea825a
MD5 2c7df5f4a93a14911dc41c610b83d0f8
BLAKE2b-256 18eef82b555b67727eb342f66c2d80c66610e95838016ceecd314ecd1ebab5d9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b3bddcdb2e98b4dddfd79d65a0ad76f694636c4b75bd79058814c259c8240f3b
MD5 8ff5f08be47dcedeb50e191018474c28
BLAKE2b-256 09b75df573ae665bceec427fc9688b11e7a5610436a32bfdb0255bf6a5ffb74e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.5-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0795002923b8c117863bf02345f59f617d1722f13d374c7412e97994ab66b979
MD5 c81b8a9f40724ac1fedbecd3ea2c365e
BLAKE2b-256 c350e36c93ae6697a1d0fad78f0937cf9b972fc42f1ee4a7a455fcc45271fa5d

See more details on using hashes here.

Provenance

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