很抱歉,由于我无法直接访问外部网站和平台,也无法生成具体的代码。但是,我可以帮助您理解策略的基本原理,并提供一些示例代码供参考。
根据您的需求,您想要构建一个筛选股票的条件包括总市值大于等于平均值、股息率大于等于平均值的1.5倍、最近一期资产负债比率小于平均值、最近一年市盈率小于平均值以及最近一年每股现金流量为正值且大于平均值。以下是一个示例代码:
# 导入必要的库
import numpy as np
def initialize(context):
context.stocks = ['000001.XSHE', '600000.XSHG'] # 股票池,可以根据需求自行调整
def handle_data(context, data):
# 获取当前日期
current_date = context.current_dt.date()
if current_date.month == 1 and current_date.day == 1: # 每年1月1日进行股票筛选
# 获取历史数据
hist_data = history_bars(context.stocks, 250, '1d', ('total_market_value', 'dividend_yield', 'asset_liability_ratio',
'pe_ratio', 'net_cash_flows_oper_act'))
# 计算各项指标的平均值
avg_total_market_value = np.mean(hist_data['total_market_value'])
avg_dividend_yield = np.mean(hist_data['dividend_yield'])
avg_asset_liability_ratio = np.mean(hist_data['asset_liability_ratio'])
avg_pe_ratio = np.mean(hist_data['pe_ratio'])
avg_net_cash_flows_oper_act = np.mean(hist_data['net_cash_flows_oper_act'])
# 筛选符合条件的股票
selected_stocks = []
for stock in context.stocks:
total_market_value = history_bars(stock, 1, '1d', 'total_market_value')[0]
dividend_yield = history_bars(stock, 1, '1d', 'dividend_yield')[0]
asset_liability_ratio = history_bars(stock, 1, '1d', 'asset_liability_ratio')[0]
pe_ratio = history_bars(stock, 1, '1d', 'pe_ratio')[0]
net_cash_flows_oper_act = history_bars(stock, 252, '1d', 'net_cash_flows_oper_act')[-1]
if (total_market_value >= avg_total_market_value and
dividend_yield >= avg_dividend_yield * 1.5 and
asset_liability_ratio < avg_asset_liability_ratio and
pe_ratio < avg_pe_ratio and
net_cash_flows_oper_act > 0 and
net_cash_flows_oper_act > avg_net_cash_flows_oper_act):
selected_stocks.append(stock)
# 输出筛选结果
print("符合条件的股票:", selected_stocks)
在上述代码中,我们首先定义了一个股票池 context.stocks
,然后在每年的1月1日进行股票筛选。我们使用 history_bars()
函数获取历史数据,并计算各项指标的平均值。然后,我们遍历股票池中的每只股票,根据条件进行筛选,并将符合条件的股票添加到 selected_stocks
列表中。
请注意,上述代码仅为示例,您需要根据实际需求进行适当修改和调整。同时,请确保您已经熟悉同花顺SuperMind量化平台的相关函数和API文档,以便正确地编写和运行代码。
内容由零声教学AI助手提供,问题来源于学员提问