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

Uploaded CPython 3.13Windows x86-64

nautilus_futu-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (910.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (886.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

nautilus_futu-0.3.2-cp313-cp313-macosx_11_0_arm64.whl (805.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nautilus_futu-0.3.2-cp313-cp313-macosx_10_12_x86_64.whl (831.1 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

nautilus_futu-0.3.2-cp312-cp312-win_amd64.whl (710.1 kB view details)

Uploaded CPython 3.12Windows x86-64

nautilus_futu-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (910.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

nautilus_futu-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (886.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

nautilus_futu-0.3.2-cp312-cp312-macosx_11_0_arm64.whl (805.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nautilus_futu-0.3.2-cp312-cp312-macosx_10_12_x86_64.whl (831.8 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: nautilus_futu-0.3.2.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.2.tar.gz
Algorithm Hash digest
SHA256 1a102cef466c52c4158462062741821ce1a9c7ebb83690b7278a6e972e48d321
MD5 d6e8836e450691b71ceee01a79203da7
BLAKE2b-256 7c2ef384222933968f1d6adab5a98b6571e56231202a1ffcf21e55790b8c4a35

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 fdebb1efced08b0a672c2ba9dccec019e30d48b37102f1d57cc51b1a684921eb
MD5 36d14ac4ad4a346600209ac4f6743da1
BLAKE2b-256 6a5e82d2787fee1c0ace06dcb8f1fab215ef0a0b8a4d7ac7d4734dcf67a5bed6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d5d537b78fed344705fbc72517371941021217202776ee022254f01ac9c15b78
MD5 040abcad3a1a30b0adb6186ff7bfb36d
BLAKE2b-256 a778adbf47b69433ce55d789ccdae4211e8568c0ba6f22ee658284cf6199a0ea

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 51293ab5e4e904336bef12d606553aa9e230b20aa627152f6772fb582090df93
MD5 919c7c38a7b08421792edcad02aadc39
BLAKE2b-256 b6192e48a1dbd887f41df7be38431fa4a122df2ab7a07549aeacf5580a21b56b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 65246058c242ce0e6b9cd4b8fa187229f70ff06b8927d08e47df40269ffd23a0
MD5 e820b6d08a043f7e45fc0aba619135ce
BLAKE2b-256 b63fa25e1231391582983b14e1b76e515f3670c41b86008b9326ee4630178612

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e1f52d803b6042a5d48a8c779fd4f17c469a7632183d99033dfed6561a90e3b3
MD5 f628f85f469791f2958b542abf55aae3
BLAKE2b-256 fbdc7875eb10e4d09037b3621d28152ade97ef4660e493f88f61d41003e2bfeb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cd69f1cbb5db93b3fe0b0acd26d555ddbfe917a034cf50421a26430883f30015
MD5 4b94697e204b13a6061e0776c91678a5
BLAKE2b-256 3862af57347505c3e99e3b6b25c118203ed6cdc7fe48b05adf1ec0173f2dff81

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d4d71e2e118da53136d72f664cd3efff64fb9422bf2ad5473936bd793d36c294
MD5 d81bcd91891e16f768e538fe543c524f
BLAKE2b-256 486c01a53a394579d4ae7e2d1f02e4b63f404632c30aea90b174bd348eb7a4ba

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6a17609fa63a2857527da74ada9df8917a3d5283a0e49c6f355d1913c5318765
MD5 5a0f8f0a8abbf7889122873e5e3841ab
BLAKE2b-256 176584658de094773fa2e566de0f6dc3ef4e4bcc9c9ee732e32ee8452f0023fc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 83120be18043832d03ae3fcaa4e1159c357ce11de84c615e10878906f057f87c
MD5 f967c77dfcd8ec51abbd4e9a54050a1b
BLAKE2b-256 c3e8e36bd43696e5728f76c25f80110f33c30f060ec2e429fe0a7ce28d911ec8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nautilus_futu-0.3.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1ca3a422ec7ed45aee821e78ac4943accb8f3dd85f57b0e25c8fe9854f47d8fc
MD5 8d35f73a9f335c30d858894804ee9f3e
BLAKE2b-256 d7f4971809ddf585961cee225345fe2ff95824f4e1a2ee0b37425a7dd9eca50f

See more details on using hashes here.

Provenance

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