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.10
  • 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

# 开发模式构建(自动编译 Rust 并安装 Python 包)
pip install maturin
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.2.1.tar.gz (99.2 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.2.1-cp313-cp313-win_amd64.whl (524.3 kB view details)

Uploaded CPython 3.13Windows x86-64

nautilus_futu-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (726.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

nautilus_futu-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (708.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

nautilus_futu-0.2.1-cp313-cp313-macosx_11_0_arm64.whl (635.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nautilus_futu-0.2.1-cp313-cp313-macosx_10_12_x86_64.whl (651.3 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

nautilus_futu-0.2.1-cp312-cp312-win_amd64.whl (525.1 kB view details)

Uploaded CPython 3.12Windows x86-64

nautilus_futu-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (726.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

nautilus_futu-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (709.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

nautilus_futu-0.2.1-cp312-cp312-macosx_11_0_arm64.whl (635.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nautilus_futu-0.2.1-cp312-cp312-macosx_10_12_x86_64.whl (651.7 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: nautilus_futu-0.2.1.tar.gz
  • Upload date:
  • Size: 99.2 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.2.1.tar.gz
Algorithm Hash digest
SHA256 72c83cee2b456e734f324950c27580944b7b08c2cc0634844e0bd22725d8eda7
MD5 b22855d1ec4bd8a42920b67b9ea684ad
BLAKE2b-256 b568c685d53361f061339bd0d7dbbb9dbe29d857898bf63e8ebd42b457f8ec2d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.2.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e7119c50bce78424db26b99683406ea667ae8291d225e18f5e8933076792a37a
MD5 93e6966f513d234e2699cedf8499cbf2
BLAKE2b-256 4d739c253a4ee773f55f098ab739f8f66c362c7ce4652906f89ce77203732945

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0bb1d73d583c394f1438db78baf34e3aaa5af19ad8d68056052e7bf84b563495
MD5 105a9aeabffbfaf90aad46a08241d2e9
BLAKE2b-256 e3496329ba8fd1bb1ad36016f7c085697f0e213bfa0eef8a4d984297f94d8a4a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 412498a05503fde8011d2dc4acde09f28f07498b79547df9328fb7142cb082bb
MD5 aca4de03114e48889d6e523de1af2552
BLAKE2b-256 5659624111491213315350f785b597552ba56d2e0e1e4e6856b273dafb4065e0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9073b64ecd65b3e2a796f1b5d886ff7cb3db57069fe462ff7f629bc018ae426a
MD5 4b592b5a0e9bf344dbab537e3e59488b
BLAKE2b-256 8c53473585abc2cd1f4472aaee833b5b679498db9c8534eea33ab302183a28cc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.2.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d55db99023ef695d057bb05a7ed16cd2141875b05f56340ec586447ca2b88ccc
MD5 17b848f0d830cb6f83cf516f0b53af5d
BLAKE2b-256 37f929e7a531e3621979eeaa51bfb413c6bba8c2f6562b152b9e14e9e67fbc2b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.2.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 29e7f7c4cd3d88da09788ca1d3770bd55efa7113f26e5a8063f30f393f8ad70f
MD5 02c6cbfa2ca2396c3bf70421b888f747
BLAKE2b-256 72ed77dc62b1eb5b546301fe7526b9715f3fcfdd800a67cb7f2b8ad702c9571d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cdd2ec545e5743bedbb634716c0434387a4fe35ac009210b811d4141427eb01a
MD5 e926cae5319a438937756671b1638820
BLAKE2b-256 767e46457024188a0d1a20ee5363799ccd5939e2541acab3efbe5a0883bbda6d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 91fdce38ea812b46333589011f9b8a9c37c1f8f98e964b748b423c89ed9ddca7
MD5 de94f31fef8f5e155480d434ff109807
BLAKE2b-256 190de3d95922eb685e13c234e0d9eb6ce02f799ca0a28c719409f04fa60d73f9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1b08279eea962d1289a82cb270a494f07722107b45b403c2162b3dc2149ac804
MD5 69cf79831e3b449999a5c3f1d258f9c7
BLAKE2b-256 115e493062da2279530e2fe55bebd7d66f16efc26a3c9a251cbfbf9f22c2a7af

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.2.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d28133da1a23d08b87e894c8d1507348aa4e3da44cb18b558987d56646d58f6e
MD5 437c821af9a2315dbd477624a974d261
BLAKE2b-256 2f335b19e16cecf3bad34581d30c68cb6702369ea1e82d746f0a43f80a307f77

See more details on using hashes here.

Provenance

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