问财量化选股策略逻辑
选股逻辑:MACD零轴以上、买卖量比较和竞价涨幅作为选股因子。选出MACD零轴以上、买一量大于卖一量且竞价涨幅在-2%到5%之间的股票。选股逻辑作为第一个段落放入标题为 ## 问财量化选股策略逻辑 的段落中。分析以上的选股逻辑(每个逻辑以 , 进行分隔),分析选股的逻辑(放入标题为 ## 选股逻辑分析 的段落),有什么风险?(放入标题为 ## 有何风险? 的段落),如何优化?(放入标题为 ## 如何优化? 的段落)并最终给出完善选股逻辑(放入标题为 ## 最终的选股逻辑 的段落),请用markdown格式。
选股逻辑分析
该选股策略以MACD指标、买卖量比较和竞价涨幅为选股因子,选出MACD零轴以上、买一量大于卖一量且竞价涨幅在-2%到5%之间的股票。
有何风险?
以下是该选股策略可能存在的一些风险:
- 该策略只考虑到了简单的技术指标,无法全面反映公司的财务状况和行业发展趋势;
- 竞价涨幅的变化可能受到市场消息等因素的影响,可能存在突发情况导致盈利亏损的风险;
- 无法避免市场风险,可能面临股票的不可预测风险。
如何优化?
以下是该选股策略的一些优化建议:
- 结合基本面数据或其他技术指标,在选股过程中全面考虑股票的发展潜力、估值情况等因素;
- 关注市场的重大政策变化、行业发展趋势等能影响股票走势的消息,调整选股策略;
- 选股过程中要严格控制风险,合理设置止盈止损点位,及时调整仓位。
最终的选股逻辑
该选股策略以MACD指标、买卖量比较和竞价涨幅为选股因子,选出MACD零轴以上、买一量大于卖一量且竞价涨幅在-2%到5%之间的股票。
同花顺指标公式代码参考
SELECT * FROM (SELECT * FROM STOCK_QUOTE WHERE MONEY >= 5 AND MONEY <= 10 AND MACD(12,26,9)>= 0) WHERE B1_V > S1_V AND ((LASTPRICE - OPEN) / OPEN) >= (-2 / 100) AND ((LASTPRICE - OPEN) / OPEN) <= (5 / 100);
Python代码参考
from jqdata import *
# 初始化函数
def initialize(context):
g.stocks_selected = [] # 存储当日的选股结果
set_benchmark('000300.XSHG') # 设置基准
# 策略选股函数
def stock_select(context):
for security in get_all_securities(types=['stock']).index:
# MACD零轴以上
current_macd = get_macd(security)
if current_macd != None and current_macd['macd'] > 0:
# 买卖量比较
if get_current_tick(security).b1_v > get_current_tick(security).s1_v:
# 竞价涨幅在-2%到5%之间
prev_price = attribute_history(security, 1, '1m', ('open','close'), skip_paused=True)['open'][0]
current_price = get_last_close(security)
price_change = (current_price - prev_price) / prev_price
if -0.02 <= price_change <= 0.05:
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亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


