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.7.tar.gz (120.8 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.7-cp313-cp313-win_amd64.whl (712.0 kB view details)

Uploaded CPython 3.13Windows x86-64

nautilus_futu-0.3.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (910.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (887.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

nautilus_futu-0.3.7-cp313-cp313-macosx_11_0_arm64.whl (807.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nautilus_futu-0.3.7-cp313-cp313-macosx_10_12_x86_64.whl (831.6 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

nautilus_futu-0.3.7-cp312-cp312-win_amd64.whl (712.7 kB view details)

Uploaded CPython 3.12Windows x86-64

nautilus_futu-0.3.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (910.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (887.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

nautilus_futu-0.3.7-cp312-cp312-macosx_11_0_arm64.whl (807.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nautilus_futu-0.3.7-cp312-cp312-macosx_10_12_x86_64.whl (832.1 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: nautilus_futu-0.3.7.tar.gz
  • Upload date:
  • Size: 120.8 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.7.tar.gz
Algorithm Hash digest
SHA256 0dc36e8313ae22170f72f9fb36a55b1f1618b37983e46e337718896903690b01
MD5 204ec000b4433aa2d74b7e29d2ea6ffc
BLAKE2b-256 69b7767c3843a85ded25ed86fd7839782c5dc51342bcb61d80c94c1bc70548fe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 95cd59bdf4bd8ff897eb40bf251481c60991c29adc3cf7766ed7bc4dff9f1688
MD5 c42e0d31552192a8b6db17e0f6b89c0b
BLAKE2b-256 84b4a5be61bd40afc8ed5a5c6815b75727c143ce710285d5d0890ccf5b1fa47b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 664df3a83f86e2ea081b054d0400a25af834416018787832d1a2fe222ec00a27
MD5 18f83aba241c4da12f8f6e3166096da1
BLAKE2b-256 229a9bc92f6e3f6d5f3f8b9e236b99a9e0e19a30809f4037431ced8cd0bbf74a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cb3b3b84d22798db12b1e9d51385e595667d492576f1b98454c494a2ffd2694f
MD5 683d1f5d3abd28eada13c8fd99fc3af0
BLAKE2b-256 9909068611f6acec7addde45090047e6c5010a24e19e84f059b722d41e4f31ca

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a142c2c0ed7342e3849aae1feb59fe6ee23c724e83dc9a040ec6e821ff6bed2
MD5 9d05651c5bce81ec32568b16fcc4b23e
BLAKE2b-256 d240fc9fcadb4a7fe9fe0faa164ebd154fb8d863da11c9fe89181ce6c855f9bf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.7-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2fdfb138d1640f871641c07408da7256c55f2df562d7625d9498d82a27d2ac86
MD5 7a1a90ceeb296e204cbeec1635623005
BLAKE2b-256 7037b597754f665bb52aa4d2c5afa69eeb7fbb8821a90d8a4497b6750fb9c51f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 632291f339598bc3ac65cc7a97b390d75c5039c0d60b80360a1e9124430feba5
MD5 54a9223ae5260b8d07e7bd5ab3e4da42
BLAKE2b-256 d226e1f792b899386778870305e6688ce2e88edec7b72b0edc7c64514a53d7dc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f30d96524ecec3ec0a00f18cae42eaf4db45b7ace5cd31a3072a6ac0bddfc299
MD5 70003dc05f6a8653ab06665f37d914e9
BLAKE2b-256 52d52e458c3d743e1a3ae25713e93361364878126d07b1a5f73bec659293b815

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0a998496d009a514497f11b9d47640cfeef68ab9b72eb114a432be8b8105ef4f
MD5 573e8fff53e1ed9a3a8021853eb81db2
BLAKE2b-256 aa6d523190e8758ade6e6fcc73d655b2d8838b778b8eebc0145bcad1605502b3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 452d017018fd539ddc3cf4677f4bfdc7e0314f75d76c9523a325558dd79a15b3
MD5 636a0c72c8d7427bcf4fa9fdd0d5d99f
BLAKE2b-256 c546603e434ed8206e5aa84fbbfd81fb13845feb22bbedc8bb425ab6fd81dd1c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.7-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e431d7feb8217e47bbd8d682d971138b77288038a87e63a251238c5fffe97735
MD5 9d172eb57300c5145bd6be16694aa6ae
BLAKE2b-256 585dcfa84359aefbf50d6e01998703cfa0fe405e0631346b330ae2fe0e3851b8

See more details on using hashes here.

Provenance

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