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.4.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.4-cp313-cp313-win_amd64.whl (708.6 kB view details)

Uploaded CPython 3.13Windows x86-64

nautilus_futu-0.3.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (908.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (885.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

nautilus_futu-0.3.4-cp313-cp313-macosx_11_0_arm64.whl (805.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nautilus_futu-0.3.4-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.4-cp312-cp312-win_amd64.whl (709.3 kB view details)

Uploaded CPython 3.12Windows x86-64

nautilus_futu-0.3.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (908.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (886.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

nautilus_futu-0.3.4-cp312-cp312-macosx_11_0_arm64.whl (805.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nautilus_futu-0.3.4-cp312-cp312-macosx_10_12_x86_64.whl (829.1 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: nautilus_futu-0.3.4.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.4.tar.gz
Algorithm Hash digest
SHA256 dc2615673a3e56835cd76b2bb3192040e8142ec64876ea550340a8079ec48ee1
MD5 cb2cd976e34a8d8f52c59e6786240d24
BLAKE2b-256 da7d88f4f353369f631f0e200ebe77501930913399cccc5f53011ee22ed83ada

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c73e396676cd67b63a0fac3b67473efe9bfe1f19b0782db48d548364c90a2340
MD5 1d3c493deb799e30c11991ca75f6f6af
BLAKE2b-256 7c6e91e503b3db66c32e1c277309ad01169a03e30d977006c7f12baafb5d5e69

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f0a4d0454aa1ee8cbb00d054f2962d23c92d67ce61b2af66937452d3dfe9ffd9
MD5 bb80a1dc62608f07362011f7df3b1c6a
BLAKE2b-256 0c7fb3e81e6a80b8e30b2f46f7422862a2aef7a337595e59629605e057feeaca

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3677110109058a6f4847017a4ae5df7d4739a15cc193fcf65a06eb340716f6ba
MD5 703b19571f0489ca7ccd1936384046a2
BLAKE2b-256 a89fe31b5b4d884cc5b3e6b1474eca612400624130b6305285ed5f210854216f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 84288cbe32294d95f1706e217e85e7ebb65ad5149cc2f5776b1fa7a35dbfb7f3
MD5 03ccc616bb033cd304e1da23d3319a85
BLAKE2b-256 70e6a5b699e50607ef07852f3eb91948a0782a829ea7589f0ef04943b7ab4942

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.4-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 57417609cc1ae596b8bb9d9a42fa4ad8bfc5bdb209fbddf39f55abe45af64f80
MD5 7823bcc9f4025a9acc7736bdac56e060
BLAKE2b-256 9e1a480a8e9523705e88d7419f00895fe0dadcee5a3fa262469b3a1b3186d69e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 65eac15d35942d75d94f5c5bcd6342c8992333a561ec05375deadbcf982fd179
MD5 c476d3e017696ae5412ae479ec9f8af3
BLAKE2b-256 a3e745602a58ef81f3254e3574a254b556e89a0cc59151f57c77ec86a6be8d0c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5c72d506096f13bd7fb4190a032aa85cc72e353d921dde1bb40b82bee1fd0f46
MD5 f47cc1dfa490fcc781d9793017147639
BLAKE2b-256 fa29336f283335041222cce268808765725192af72db7398cecf48f9a2fd8f1b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 012c9dcb098c2a94f5ea30fcc8a422e15dea9d7f212a2c64fd355a5d0871db18
MD5 c1c5dee813095839d125899ba3527509
BLAKE2b-256 7706185d3480cfa736343f39f795ac575d1864898d4158e589e8315855d04da5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6ce59870077a0b608fa172f1ab53ffd126c7d65a747715fe7489a506eabba0f2
MD5 b8e41919d2e2ce6756e56e51fd38f7ca
BLAKE2b-256 fa75890bf1eae9efbb963556b3abb69e70c5d6767b5b6888de2f5f9e67cdd2ed

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.4-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2758be6cf6658c93b32fc7ac734929232bda81a932c116dcf1e05f805befc24c
MD5 10ca72d0e0bf5df910e9b547d99bab8f
BLAKE2b-256 7ed72fba4e37153b4b629a9358bdf9c1852c41857208424ddfaffaf9ec0901c6

See more details on using hashes here.

Provenance

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