其他分享
首页 > 其他分享> > 量化交易 米筐 财务数据与定时器

量化交易 米筐 财务数据与定时器

作者:互联网

获取财务数据(基本面数据)

get_fundamentals 查询财务数据,基本命数据,公司的数据(即将废弃)

4、 get_factor() 获取因子

说明文档地址

用途:查询财务数据

# 获取股票截止 T-1 日的因子数据
get_factor(order_book_ids, factors,count=1,universe=None,expect_df=False)
参数类型说明
order_book_idsstr or str list合约代码,可传入 order_book_id, order_book_id list
factorsstr or str list因子名称,可查询 rqdatac.get_all_factor_names() 得到所有有效因子字段
countint默认为 1,获取多少个交易日的数据
universestr当获取界面因子时,universe 指定了因子计算时的股票池
expect_dfbool默认为 False,当设置为 True 时,返回 multi-index DataFrame。

指标(因子)地址

    # 获取财务数据
    # pe_ratio 获取市盈率因子 如果是单个数据则表现为 panel
    # 多个因子 结果为 dataFrame
    fund = get_factor(context.stocks, ['pe_ratio', 'pcf_ratio'])

    # 过滤  指标pe_ratio > 20 并且 pcf_ratio < 50
    fund = fund[(fund['pe_ratio'] > 20) &  (fund['pcf_ratio'] < 50)]
    # 排序
    fund = fund.sort_values(by='pe_ratio', ascending=True) # 升序排序
	# 个数限制
    fund = fund.head(10)
    # logger.info('fund01:\n{}'.format(fund))

获取财务数据,获取因子、排序、获取股票代码列表

# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。

# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):
    # 在context中保存全局变量
    context.s1 = "000001.XSHE"
    # 实时打印日志
    logger.info("RunInfo: {}".format(context.run_info))

    
    stocks = all_instruments(type='CS').order_book_id # 所有股票
    stocks = index_components('000300.XSHG') # 沪深300
    # 股票池
    logger.info('stocks:{}'.format(stocks)) 
    logger.info('len:{}'.format(len(stocks)))
    context.stocks = stocks

# before_trading此函数会在每天策略交易开始前被调用,当天只会被调用一次
def before_trading(context):

    # 获取财务数据
    # pe_ratio 获取市盈率因子 如果是单个数据则表现为 panel
    # 多个因子 结果为 dataFrame
    fund = get_factor(context.stocks, ['pe_ratio', 'pcf_ratio'])

    # 过滤  指标pe_ratio > 20 并且 pcf_ratio < 50
    fund = fund[(fund['pe_ratio'] > 20) &  (fund['pcf_ratio'] < 50)]

    # 排序
    fund = fund.sort_values(by='pe_ratio', ascending=True) # 升序排序

    # 个数限制
    fund = fund.head(10)
    # logger.info('fund01:\n{}'.format(fund))

    # 丢弃日期列
    fund = fund.reset_index(1, drop=True)
    logger.info('fund:\n{}'.format(fund))

    # 挑选后的股票代码
    stock_list = fund.index.values
    update_universe(fund.index.values)
    
    logger.info('stock_list:\n{}'.format(stock_list))



# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def handle_bar(context, bar_dict):
    # 开始编写你的主要的算法逻辑
    pass

# after_trading函数会在每天交易结束后被调用,当天只会被调用一次
def after_trading(context):
    pass

5、定时器

官方文档

通过财务数据选股票、不用每天获取、一般每隔一个星期、一个月定期获取一些符合条件的股票

只能在init中使用

5.1 每月运行

scheduler.run_monthly(function, tradingday=t)

参数

参数类型注释
functionfunction使传入的function每日交易开始前运行。注意,function 函数一定要包含(并且只能包含)context, bar_dict 两个输入参数
tradingdayint范围为[-23,1], [1,23] ,例如,1 代表每月第一个交易日,-1 代表每月倒数第一个交易日,用户必须指定

function 函数一定要包含 context, bar_dict两个输入参数

tradingday [-23, 1] [1, 23] 1代表每月第一个交易日, -1 代表每月倒数第一个交易日

def init(context):
    # 定义按月运行 定时器
	scheduler.run_monthly(get_data, tradingday=1)

# 参数必须符合
def get_data(context, bar_dict):
	# 这里按月查询财务数据
	q = query(fundamentals.eod_derivative_indicator.pb_ratio
	).filter(fundamentals.eod_derivative_indicator.pb_ratio > 10
	).filter(fundamentals.stockcode.in_(context.index_list))
	
    fund =get_fundamentals(q)
    
	logger.info(fund.T)

运行顺序

#scheduler调用的函数需要包括context, bar_dict两个参数
def query_fundamental(context, bar_dict):
        # 查询revenue前十名的公司的股票并且他们的pe_ratio在25和30之间。
    stocks = all_instruments('CS').order_book_id
    fundamental_df = get_factor(stocks, ['pe_ratio', 'revenue'])
    fundamental_df = fundamental_df[(fundamental_df['pe_ratio'] > 25) & (fundamental_df['pe_ratio'] < 30)]
    fundamental_df = fundamental_df.sort_values(by='revenue', ascending=False).head(10).reset_index(1, drop=True)


    # 将查询结果dataframe的fundamental_df存放在context里面以备后面只需:
    context.fundamental_df = fundamental_df

    # 实时打印日志看下查询结果,会有我们精心处理的数据表格显示:
    logger.info(context.fundamental_df)
    update_universe(context.fundamental_df.index.values)

 # 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):
	# 每月的第一个交易日查询以下财务数据,以确保可以拿到最新更新的财务数据信息用来调整仓位
	scheduler.run_monthly(query_fundamental, tradingday=1)

标签:定时器,ratio,财务数据,fundamental,fund,context,pe,量化,stocks
来源: https://blog.csdn.net/weixin_45875105/article/details/120676353