问财量化选股策略逻辑
选股逻辑:MACD零轴以上、饮料酒进出口、市值100亿以内的无亏损企业。选股逻辑作为第一个段落放入标题为##问财量化选股策略逻辑的段落中。分析以上的选股逻辑(每个逻辑以 , 进行分隔) ,分析选股的逻辑(放入标题为 ## 选股逻辑分析 的段落),有什么风险?(放入标题为 ## 有何风险? 的段落)如何优化?(放入标题为 ## 如何优化? 的段落)并最终给出完善选股逻辑(放入标题为 ## 最终的选股逻辑 的段落),请用markdown格式。
选股逻辑分析
该选股策略以MACD指标、饮料酒行业进出口情况和企业基本面为主要选股指标,旨在筛选MACD指标较为健康的、饮料酒行业进出口较为活跃的、市值较小但无亏损的企业。其中,MACD指标反映了当前市场走势情况,饮料酒行业进出口情况反映了行业的基本面因素,市值和无亏损则体现了企业基本面情况,筛选出的股票可能具备较好的长期投资机会。
有何风险?
以下是该选股策略可能存在的一些风险:
- MACD指标仍然可能存在滞后的情况,导致选股表现不尽如人意;
- 饮料酒进出口情况可能会收到国际贸易环境等因素的影响,也可能出现波动较大的情况;
- 无亏损企业可能存在未来盈利不增长的风险,也可能存在会计造假等不良情况。
如何优化?
以下是该选股策略的一些优化建议:
- 可以加入其他技术指标,例如RSI、KDJ等指标,以提高选股准确率;
- 可以加入其他基本面因素,例如市盈率、市净率等指标,以全面衡量股票基本面情况;
- 可以对企业的无亏损情况进行更加精细化的筛选,例如筛选无亏损且盈利增速较快的企业。
最终的选股逻辑
该选股策略以MACD指标、饮料酒行业进出口情况和企业基本面为主要选股指标,选出MACD零轴以上、饮料酒进出口数据为1、市值100亿以内且无亏损的股票作为选股结果。
同花顺指标公式代码参考
选股公式: STOCKVALUE<100 AND
ROE_TTM>0 AND
MACD()>=0 AND MACD()>(REF(MACD(),1)+REF(MACD(),2))/2 AND
stock_industry.in("饮料制造", "啤酒制造", "白酒制造") AND
stock_zh_name.regex("^[0-9A-Za-z?.\u4e00-\u9fa5]*$")
Python代码参考
from jqdata import *
#初始化函数
def initialize(context):
g.stocks_selected = []
set_benchmark('000300.XSHG') # 设置基准
#策略选股函数
def stock_select(context):
industry_name = ['饮料制造', '啤酒制造', '白酒制造']
q = query(
valuation.code
).filter(
valuation.market_cap < 100*100000000,
indicator.roe > 0,
valuation.pe_ratio > 0,
indicator.net_profit_margin > 0
).order_by(
valuation.market_cap.asc()
).limit(30)
df = get_fundamentals(q).fillna(value=0)
security_list = list(df.code)
if security_list:
for security in security_list:
current_macd = get_macd(security)
if current_macd != None and current_macd['diff'] > current_macd['dea'] and current_macd['macd'] > 0:
if get_industry(security) in industry_name:
if not is_suspended(security) and not is_st(stock) and not is_limit_up(security):
g.stocks_selected.append(security)
# 交易部分函数
def trade(security_list, cash):
position_count = len(security_list)
if position_count == 0:
return
# 单只股票买入不超过 total cash 的 1/4
if cash/position_count >= 4 * get_security_info(security_list[0]).price:
stock_value = cash / position_count
for stock in security_list:
if stock in context.portfolio.positions:
# 已持有该股,调整其仓位
target_value = stock_value
adjust_position(stock, target_value)
else:
# 未持有该股,开仓
order_target_value(stock, stock_value)
def adjust_position(stock, target_value):
cur_price = get_security_info(stock).last_price
cur_value = context.portfolio.positions[stock].value
gap = abs(target_value - cur_value) / cur_price
if target_value > cur_value:
order(stock, int(gap))
elif target_value < cur_value:
order(stock, -int(gap))
# 买卖预测部分函数
def predict_price(security):
predict_price = get_extras('price_dividend_ratio', security)
return predict_price
# 策略实现部分
def handle_data(context, data):
current_cash = context.portfolio.cash
stock_select(context) # 选股
trade(g.stocks_selected, current_cash) # 调仓
g.stocks_selected = [] # 清空当日股票池
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


