问财量化选股策略逻辑
选股逻辑:MACD指标零轴以上,归属母公司股东的净利润(同比增长率)大于20%小于等于100%,2019分红比例>25%。该选股策略综合考虑了技术面和基本面指标,同时加入了分红比例的指标,有助于选出高增长、高分红的股票。
选股逻辑作为第一个段落放入标题为 ## 问财量化选股策略逻辑 的段落中。分析以上的选股逻辑(每个逻辑以 , 进行分隔) ,分析选股的逻辑(放入标题为 ## 选股逻辑分析 的段落),有什么风险?(放入标题为 ## 有何风险? 的段落)如何优化?(放入标题为 ## 如何优化? 的段落)并最终给出完善选股逻辑(放入标题为 ## 最终的选股逻辑 的段落),请用markdown格式。
选股逻辑分析
该选股策略综合考虑了技术面和基本面指标,同时加入了分红比例的指标,有助于选出高增长、高分红的股票。选股策略中,MACD指标零轴以上的条件,考虑了多头趋势,同时加入了均线形态的条件。归属母公司股东的净利润同比增长率大于20%小于等于100%,则强化了基本面的条件。加入2019分红比例>25%的条件,则强化了股票分红能力的考虑。
有何风险?
该选股策略可能存在以下风险:
- 忽略了其他重要指标,如市值、价格等资产方面的指标。
- 忽略了行业与市场的相对价值。即使在同一行业中,股票在技术面、业绩和分红方面表现很好,但该行业的整体前景较差,这样的股票也可能出现下跌风险。
- 对于分红比例的指标,仅考虑了2019年的数据,可能忽略了长期的公司分红能力表现,以及未来的分红可能存在波动的风险。
如何优化?
以下是一些优化建议:
- 加入其它重要基本面指标,如市盈率、市净率等,加强对公司价值的评估。
- 强化行业与市场的相对价值考虑,对不同行业的股票设置不同的筛选条件。
- 考虑增加分红连续性因素,如连续3年分红的公司,以及对股票分红历史表现的考察。
- 对于MACD指标的选择,可以考虑加入其它技术面指标,如KDJ、RSI等相互印证。
最终的选股逻辑
选股策略:MACD指标零轴以上,归属母公司股东的净利润(同比增长率)大于20%小于等于100%,2019分红比例>25%。该选股策略综合考虑了技术面和基本面指标,并加入了分红比例的指标,有助于选出高增长、高分红的股票。
同花顺指标公式代码参考
SELECT CODE,SECNAME FROM STOCK_BASICS WHERE LIST_STATUS='L'
AND (MACD(CLOSE,12,26,9)>0) AND (YOY(NET_PROFIT,1)>20/100) AND (YOY(NET_PROFIT,1)<=100/100)
AND (DIVIDEND_RATIO_2019>25)
ORDER BY BIDORDER DESC LIMIT 50
Python代码参考
def initialize(context):
set_benchmark('000300.XSHG')
# 获取所有股票
g.all_stocks = list(get_all_securities(types=['stock']).index)
# 每日运行选股逻辑
run_daily(select_stocks, time='before_open', reference_security='000300.XSHG')
def select_stocks(context):
# 获取当前股票池
trash_stocks = list(filter(lambda s: not get_current_data()[s].is_trading, g.all_stocks))
stocks = list(set(g.all_stocks) - set(trash_stocks) - set(context.portfolio.positions.keys()))
# 遍历所有股票,进行选择
g.stock_dict = {}
for stock in stocks:
# 如果MACD指标零轴以下,跳过
dif, dea, macd = talib.MACD(get_price(stock, frequency='1d', count=200, end_date=context.previous_date), fastperiod=12, slowperiod=26, signalperiod=9)
if macd[-1] <= 0:
continue
# 如果净利润同比增长率不过关,跳过
q = query(income.statDate, income.netProfitYoYRatio, valuation.code).filter(
valuation.code == stock, income.statDate >= (get_today() - datetime.timedelta(days=365)))
data = get_fundamentals(q)
# 检查2019年分红比例是否大于25%
if get_fundamentals(query(valuation.code, dividend_ratio.dividend_ratio_2019).filter(valuation.code == stock)).iloc[0]['dividend_ratio_2019'] <= 0.25:
continue
# 检查是否是ST股票
if get_security_info(stock).name.find('ST') != -1:
continue
g.stock_dict[stock] = True
# 按照结果排序
high_value_stocks = sorted(g.stock_dict.keys(), key=lambda s: data[data['code'] == s].iloc[-1]['trade_amount'], reverse=True)[:5]
if len(high_value_stocks) > 0:
buy_list = [(s, 1) for s in high_value_stocks]
else:
buy_list = []
# 调仓
adjust_position(context.portfolio.positions, buy_list, [], [])```
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


