富途牛牛A股数据API使用基础教程

富途牛牛API使用笔记

为什么 选择 富途牛牛 API

当我们需要进行自动化选股进行操作时,就需要直接操作数据,而不是券商给我们提供的软件(因为每个券商的软件往往有我们的一部分功能, 而我们希望要的是每个券商的一部分功能),市场上A股数据很多很多,最终选择使用富途牛牛的这份数据 ,主要有以下几点:

  • 免费的
    不得不说这点很吸引人,小散能省点就省点
  • 官方客服比较好
    官方的客服在QQ群会尽可能及时回复我们的疑问,对于免费来说已经非常难得
  • 功能很全
    基本上需要的功能大部分都有,支持python,java等多种语言
  • 支持港股、美股等数据
    不仅仅是A股,还支持港股、美股、期货等数据,方便日后扩展到其他市场

富途牛牛 API介绍

富途牛牛 A股 API安装教程

使用富途牛牛API需要两部分,一个叫做 FutuOpenD,另一个就是python API

需要先安装FutuOpenD,这个程序负责和富途牛牛的服务器进行通信,具体怎样通信的,是否会很快,没有过多研究
我选择安装的是windows版本,个人电脑操作方便一些,同时是支持linux等版本的

运行FutuOpenD后,需要登录个人的富途牛牛账号,这个需要自己注册一个,并且需要开户,提交自己的信息即可,登录进去,左侧的配置都默认即可

windows下安装环境 python

  • 安装Anaconda
  • Anaconda doc
conda create -n py3 pip # 创建py3环境  conda create --name py3.7 python=3.7
conda activate py3  # 激活环境    
# conda remove -n py3 --all  #删除环境
pip install futu-api  # 这行即可 

至此开发环境就准备好了

富途牛牛 A股 条件过滤 简介

富途牛牛 A股 API选择股票
API接口文档比较完善,而且还有例子,照着写就行了

过滤市盈率和ROE

比如我想写一个市盈率在 1~20, ROE 在 10~40 的过滤条件,如下所示

PE_TTM = SimpleFilter()
PE_TTM.filter_min = 1
PE_TTM.filter_max = 20
PE_TTM.stock_field = StockField.PE_TTM  # 1 < 市盈率 < 20
PE_TTM.is_no_filter = False

ROE = FinancialFilter()
ROE.filter_min = 10
ROE.filter_max = 40
ROE.stock_field = StockField.RETURN_ON_EQUITY_RATE  # 10% < ROE > 40%
ROE.is_no_filter = False
ROE.sort = SortDir.ASCEND
ROE.quarter = FinancialQuarter.ANNUAL

my_filter_lists = []
my_filter_lists.append(ROE) # ROE
my_filter_lists.append(PE_TTM)  # 市盈率

nBegin = 0
last_page = False
ret_list = list()
while not last_page:
	nBegin += len(ret_list)
	ret, ls = quote_ctx.get_stock_filter(market=Market.SH, filter_list= my_filter_lists,begin=nBegin)  # 对香港市场的股票做简单、财务和指标筛选
	if ret == RET_OK:
		last_page, all_count, ret_list = ls
		for item in ret_list:
			print(item)
		#print('all count = ', len(ret_list))
		#print(ret_list)
		
	else:
		print('error: ', ls)

可以对很多选项进行过滤,具体查看官网文档富途牛牛 A股 API选择股票,唯一遗憾是没有找到板块信息的过滤字段

过滤板块信息

没有找到富途牛牛API过滤板块的信息,如果你想排除某些板块,则需要首先获得板块下股票,然后在从结果中过滤掉
一个小例子:过滤掉结果中板块是房地产和金融的股票

quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
bad_bk = ['金融','房地产']   # 过滤掉板块
my_filter_lists = []


MARKET_VAL = SimpleFilter()
MARKET_VAL.filter_min = 1000000000 * 2  #  10 亿
MARKET_VAL.filter_max = 1000000000 * 350
MARKET_VAL.stock_field = StockField.MARKET_VAL  #  市值
MARKET_VAL.is_no_filter = False




my_filter_lists.append(MARKET_VAL) # 总市值

bad_stock = None

bad_code = [] # 通过 房地产
ret, data = quote_ctx.get_plate_list(Market.SH, Plate.INDUSTRY)
if ret == RET_OK:
    for item in bad_bk:
        bad_code.append(data[data['plate_name'].str.contains(item)]['code'].values[0])
else:
    print('error:', data)

for item in bad_code:
    ret, data = quote_ctx.get_plate_stock(item)
    if ret == RET_OK:
        if bad_stock is None:
            bad_stock = data
        else:
            bad_stock = bad_stock.append(data)

    else:
        print('error:', data)
#bad_stock.to_csv('test.csv')
bad_code = bad_stock['code'].values.tolist()  # 不显示的股票列表

bad_code 列表就是需要排除的房地产和金融板块下的所有股票

其他相关需求,可以查找对应的API, 看看api说明即可进行开发

相关资料

富途牛牛 A股 API选择股票

备注

本文写于2021/9/1,由于时间关系,官方文档可能变化,请及时查看官方文档,防止被误导,如有问题也可以加入我们的交流群

你可能感兴趣的:(股票技术开发,python)