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

# 创建并激活虚拟环境
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.1.tar.gz (119.1 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.1-cp313-cp313-win_amd64.whl (712.2 kB view details)

Uploaded CPython 3.13Windows x86-64

nautilus_futu-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (914.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (884.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

nautilus_futu-0.3.1-cp313-cp313-macosx_11_0_arm64.whl (804.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nautilus_futu-0.3.1-cp313-cp313-macosx_10_12_x86_64.whl (834.7 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

nautilus_futu-0.3.1-cp312-cp312-win_amd64.whl (712.9 kB view details)

Uploaded CPython 3.12Windows x86-64

nautilus_futu-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (914.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (884.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

nautilus_futu-0.3.1-cp312-cp312-macosx_11_0_arm64.whl (805.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nautilus_futu-0.3.1-cp312-cp312-macosx_10_12_x86_64.whl (835.2 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: nautilus_futu-0.3.1.tar.gz
  • Upload date:
  • Size: 119.1 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.1.tar.gz
Algorithm Hash digest
SHA256 709f4f5289341c3ed74b680d603e40639e75266815be46d457c02bc630458230
MD5 9dafd936e87a5825922060e3111a05ca
BLAKE2b-256 792f348d0adf334ce03ec788d1f75bd6fd3bb51c6c28f6c22395951ebf593413

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2af1434be85e520112199967a5236539907f3afdb39708abda0cce24d2e7bcbb
MD5 6d19809a52b77426c27ebc4222bc7228
BLAKE2b-256 761b3923c57d6267c4d08179b44d66e33264d4a745808e1df2496661ae16efbc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 09a790c0b3e514c0ee2d54758fe735f40dd76f03615dae66bcdd357d07f6f4ec
MD5 e27e6be224c513f2384df9ba1567393c
BLAKE2b-256 cd8f02348a6d4b34be4d09ab33c3ccdab9cdbce327660920928b4a2bd329136f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ea5ab4452c47685aaffbdd916aa98d8d2c7b1bad39cdaa1f59980d761b62027a
MD5 366bd62db54f01d0ca2f83cc60a6f711
BLAKE2b-256 452dee7f4747152759b55f161ee51c82f0a0af51eb8416f66f64d84a484778b8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4a65a49843e25abd614900526582eb6a73a17048bcb1e285f89dfb05b37bb1e6
MD5 71cae0a8e2f14298f57465f7e6f83eea
BLAKE2b-256 c5aa458978261aa088fde6c7be01ef874e11c9ad37bb9bf4e1e12fd7253376eb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e2efb4677db3d9821878fcd227fbd71319d66b143f6718da3a6805a2f9645c09
MD5 2c6f79ccfa0c363c4fb423245043fe15
BLAKE2b-256 b98eb1d0957e594dfa92c5463dd2d4dae1bea3982bc281de457f4b6b61001382

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4f0f24f43c27e5a9b8cee5ce1e318dc75ebe31fec2bd74e6e541c96768d18904
MD5 824af823b4e4b22b3472ef1e9784fafe
BLAKE2b-256 037e339fcf7ce0532ec03473daceb1e2b710a9e6a98644dfac2324a2f7b32e62

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c093a15fa892aab8cb46422b7d4cbf5113b0d4768aee6b393ebdccdca2181b4b
MD5 06437dabb3c28d9c4684294ea9a64cfc
BLAKE2b-256 8179596a765e412b1661cf717c70515933c2319967b74d3a2dd71e239400d1d8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b112152ab8725ad5a76266c53a1424f7f73f7b4c0cd41f7c92bf93ac736cf764
MD5 1d701db50b4ec5342a9f48bbc3b5bcea
BLAKE2b-256 1272fc7623720d6a52414d322ff15c9561f9f0368da8d1a008a568ebf5421b4a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a93903f2ad01f981810313652ede443399019839579ddf895f14ffd48b697b89
MD5 6a0f43f09bb1ece84e9a4a3e0ca83f58
BLAKE2b-256 5d623ce8d69b34a0d4458e6c63157514dc69c95b379eb387f23c89626982d38b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 012c159a8b629624ca9a793b687f96cdd838b4a71df2fd036d99a70c05f0e50a
MD5 8de04912079f4ed007c87b10b72011ef
BLAKE2b-256 26ed6974c7a2f496ecce0b01dece6afc5fdec037f68a22d4c2131360a67a1d13

See more details on using hashes here.

Provenance

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