Skip to main content

Futu Quantitative Trading API

Project description

富途 OpenAPI

简介

Futu API开源项目可以满足使用Futu OpenAPI进行量化投资的需求, 并提供包括Python、Json/Protobuf协议的行情及交易接口。


安装

pip install futu-api
注: 本API支持Python2.7/Python3.x, 推荐安装anaconda2或anaconda3环境,方便快捷。

快速上手


# 导入futu-api
import futu as ft

# 实例化行情上下文对象
quote_ctx = ft.OpenQuoteContext(host="127.0.0.1", port=11111)

# 上下文控制
quote_ctx.start()              # 开启异步数据接收
quote_ctx.set_handler(ft.TickerHandlerBase())  # 设置用于异步处理数据的回调对象(可派生支持自定义)

# 低频数据接口
market = ft.Market.HK
code = 'HK.00123'
code_list = [code]
plate = 'HK.BK1107'
print(quote_ctx.get_trading_days(market, start=None, end=None))   # 获取交易日
print(quote_ctx.get_stock_basicinfo(market, stock_type=ft.SecurityType.STOCK))   # 获取股票信息
print(quote_ctx.get_autype_list(code_list))                                  # 获取复权因子
print(quote_ctx.get_market_snapshot(code_list))                              # 获取市场快照
print(quote_ctx.get_plate_list(market, ft.Plate.ALL))                         # 获取板块集合下的子板块列表
print(quote_ctx.get_plate_stock(plate))                         # 获取板块下的股票列表

# 高频数据接口
quote_ctx.subscribe(code, [ft.SubType.QUOTE, ft.SubType.TICKER, ft.SubType.K_DAY, ft.SubType.ORDER_BOOK, ft.SubType.RT_DATA, ft.SubType.BROKER])
print(quote_ctx.get_stock_quote(code))  # 获取报价
print(quote_ctx.get_rt_ticker(code))   # 获取逐笔
print(quote_ctx.get_cur_kline(code, num=100, ktype=ft.KLType.K_DAY))   #获取当前K线
print(quote_ctx.get_order_book(code))       # 获取摆盘
print(quote_ctx.get_rt_data(code))          # 获取分时数据
print(quote_ctx.get_broker_queue(code))     # 获取经纪队列

# 停止异步数据接收
quote_ctx.stop()

# 关闭对象
quote_ctx.close()

# 实例化港股交易上下文对象
trade_hk_ctx = ft.OpenHKTradeContext(host="127.0.0.1", port=11111)

# 交易接口列表
print(trade_hk_ctx.unlock_trade(password='123456'))                # 解锁接口
print(trade_hk_ctx.accinfo_query(trd_env=ft.TrdEnv.SIMULATE))      # 查询账户信息
print(trade_hk_ctx.place_order(price=1.1, qty=2000, code=code, trd_side=ft.TrdSide.BUY, order_type=ft.OrderType.NORMAL, trd_env=ft.TrdEnv.SIMULATE))  # 下单接口
print(trade_hk_ctx.order_list_query(trd_env=ft.TrdEnv.SIMULATE))      # 查询订单列表
print(trade_hk_ctx.position_list_query(trd_env=ft.TrdEnv.SIMULATE))    # 查询持仓列表

trade_hk_ctx.close()


示例策略

  • 示例策略文件位于目录: (futu-api包安装目录)/py-futu-api/examples 下,用户可参考实例策略来学习API的使用。

调试开关和推送记录

  • set_futu_debug_model函数可以打开或关闭调试级别的log记录。
  • 如果打开记录,则会记录info级别的log并且记录所有逐笔、摆盘、券商经纪的推送记录,以便于后面排查,文件记录在%appdata%(%HOME%)\com.futunn.FutuOpenD\Log下面
  • examples\analysis下面会有对逐笔、摆盘、券商经纪的推送记录的分析脚本,与我们联系,拿到原始交易所数据后,可以载入比对(beta功能)

组织结构

.
├── futu
│   ├── common #主要框架代码
│   │   ├── callback_executor.py
│   │   ├── comm_add_path.py
│   │   ├── conn_key.txt
│   │   ├── conn_mng.py
│   │   ├── constant.py
│   │   ├── err.py
│   │   ├── ft_logger.py
│   │   ├── handler_context.py
│   │   ├── __init__.py
│   │   ├── network_manager.py
│   │   ├── open_context_base.py
│   │   ├── pb
│   │   │   └── __init__.py
│   │   ├── pbjson.py
│   │   ├── sys_config.py
│   │   └── utils.py
│   ├── examples #一些简单的演示demo
│   │   ├── analysis
│   │   │   ├── broker_analysis.py
│   │   │   ├── orderbook_analysis.py
│   │   │   └── ticker_analysis.py
│   │   ├── check_all_get_push.py
│   │   ├── __init__.py
│   │   ├── loop_get_mkt_snapshot.py
│   │   ├── macd.py
│   │   ├── simple.py
│   │   ├── stocksell.py
│   │   └── tiny_quant #这里是一个历史遗留的复杂回测框架,暂时继续保留两个demo,这里建议开发者自己找好用的回测框架,不要再依赖这个破碎框架(裁剪自vnpy)
│   │       ├── demo
│   │       │   ├── __init__.py
│   │       │   ├── tq_macd
│   │       │   │   ├── __init__.py
│   │       │   │   ├── setting.json
│   │       │   │   └── TinyStrateMACD.py
│   │       │   └── tq_sample
│   │       │       ├── __init__.py
│   │       │       ├── setting.json
│   │       │       └── TinyStrateSample.py
│   │       ├── __init__.py
│   │       └── tiny_quant_frame #裁剪自vnpy
│   │           ├── event
│   │           │   ├── eventEngine.py
│   │           │   ├── eventType.py
│   │           │   └── __init__.py
│   │           ├── FutuDataEvent.py
│   │           ├── FutuMarketEvent.py
│   │           ├── __init__.py
│   │           ├── setting.json
│   │           ├── TinyDefine.py
│   │           ├── TinyQuantBase.py
│   │           ├── TinyQuantFrame.py
│   │           ├── TinyStrateBase.py
│   │           └── TinyStrateSample.py
│   ├── __init__.py
│   ├── quote #行情相关接口代码
│   │   ├── __init__.py
│   │   ├── open_quote_context.py
│   │   ├── quote_query.py
│   │   └── quote_response_handler.py
│   ├── trade #交易相关接口代码
│   │   ├── __init__.py
│   │   ├── open_trade_context.py
│   │   ├── trade_query.py
│   │   └── trade_response_handler.py
│   └── VERSION.txt
├── setup
│   ├── PyCrypto-Wheels.url
│   └── .url
└── setup.py

使用须知

  • python脚本运行前,需先启动FutuOpenD网关客户端

API与FutuOpenD网关客户端的架构

image


API及FutuOpenD客户端交流方式

  • 富途开放API群(229850364, 108534288)
  • 有一定交易额或特殊需求的用户请在入群后联系群主

使用说明

  • 有任何问题可以到 issues 处提出,我们会及时进行解答。
  • 使用新版本时请先仔细阅读接口文档,大部分问题都可以在接口文档中找到你想要的答案。
  • 欢迎大家提出建议、也可以提出各种需求,我们一定会尽量满足大家的需求。

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

futu-api-8.6.4608.tar.gz (239.4 kB view details)

Uploaded Source

File details

Details for the file futu-api-8.6.4608.tar.gz.

File metadata

  • Download URL: futu-api-8.6.4608.tar.gz
  • Upload date:
  • Size: 239.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.10.0

File hashes

Hashes for futu-api-8.6.4608.tar.gz
Algorithm Hash digest
SHA256 2113fbc0bb24487979828d933c7d66f2dcd9d0994d99211a915d3330c565d8df
MD5 68ff4c44e57bd66146bb2e2f0f1ce678
BLAKE2b-256 b5b185ff356c194c78438e83cb96e895ff42244f820ce9eaa942a76b1d92506e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page