问财量化选股策略逻辑
选股逻辑:MACD零轴以上、饮料酒行业进出口情况、近25个交易日有单日涨幅大于等于百分之10。选股逻辑作为第一个段落放入标题为##问财量化选股策略逻辑的段落中。分析以上的选股逻辑(每个逻辑以 , 进行分隔) ,分析选股的逻辑(放入标题为 ## 选股逻辑分析 的段落),有什么风险?(放入标题为 ## 有何风险? 的段落)如何优化?(放入标题为 ## 如何优化? 的段落)并最终给出完善选股逻辑(放入标题为 ## 最终的选股逻辑 的段落),请用markdown格式。
选股逻辑分析
该选股策略以MACD指标、饮料酒行业进出口情况、近25个交易日有单日涨幅等因素为选股指标,选出MACD零轴以上、饮料酒行业进出口情况良好、近25个交易日有单日涨幅大于等于10%的股票。其中,MACD指标反映了当前市场走势情况、饮料酒行业进出口情况反映了行业的基本面因素、近25个交易日有单日涨幅大于等于10%反映了股票的市场热度和走势情况。
有何风险?
以下是该选股策略可能存在的一些风险:
- 近25个交易日有单日涨幅大于等于10%的股票可能存在超买现象,买入时存在一定的风险;
- 选股策略过于依赖于MACD指标和行业基本面数据,缺乏全面衡量个股基本面情况的指标;
- 选股结果比较单一,可能存在较大的个股风险。
如何优化?
以下是该选股策略的一些优化建议:
- 近25个交易日有单日涨幅大于等于10%可以结合其他技术指标来综合判断,例如KD指标、RSI指标等指标;
- 可以加入其他基本面因素,例如市盈率、市净率等指标,以全面衡量股票基本面情况;
- 可以将需要掌握的量化指标进行训练,以提高选股策略的准确性。
最终的选股逻辑
该选股策略以MACD指标、饮料酒行业进出口情况、近25个交易日有单日涨幅大于等于10%为主要选股指标,选出MACD零轴以上、饮料酒行业进出口情况良好、近25个交易日有单日涨幅大于等于10%的股票。
同花顺指标公式代码参考
选股公式: MACD() >= 0 AND REF(MACD(), 1) < REF(MACD(), 2) AND stock_industry.in("啤酒制造", "白酒制造", "饮料制造") AND (C/REF(C, 1)-1)>=0.1
Python代码参考
from jqdata import *
# 初始化函数
def initialize(context):
g.stocks_selected = []
set_benchmark('000300.XSHG') # 设置基准
# 策略选股函数
def stock_select(context):
industry_name = ['啤酒制造', '白酒制造', '饮料制造']
q = query(
valuation.code, valuation.circulating_cap
).filter(
valuation.circulating_cap < 100*1000000000,
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:
last_25_day_closes = get_bars(security, 25, '1d', 'close') # 获取最近25个交易日的收盘价数据
if ((last_25_day_closes[-1] / last_25_day_closes[-2] - 1) >= 0.1):
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 handle_data(context, data):
current_cash = context.portfolio.cash
stock_select(context) # 选股
trade(g.stocks_selected, current_cash) # 调仓
g.stocks_selected = [] # 清空当日股票池
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


