问财量化选股策略逻辑
选股逻辑:MACD零轴以上、买一量大于卖一量、换手率在3%-12%之间的股票。选股逻辑作为第一个段落放入标题为##问财量化选股策略逻辑的段落中。分析以上的选股逻辑(每个逻辑以 , 进行分隔),分析选股的逻辑(放入标题为 ## 选股逻辑分析 的段落),有什么风险?(放入标题为 ## 有何风险? 的段落),如何优化?(放入标题为 ## 如何优化? 的段落)并最终给出完善选股逻辑(放入标题为 ## 最终的选股逻辑 的段落),请用markdown格式。
选股逻辑分析
该选股策略以MACD指标、买一量和卖一量比较以及股票的换手率为选股依据,选出MACD零轴以上、买一量大于卖一量,且换手率在3%-12%之间的股票。其中,MACD指标反映了当前市场走势情况,买一量和卖一量提供了市场交易情况信息,而换手率则反映了市场对该股票的交易情况,有助于选出市场交易活跃的优质股票。
有何风险?
以下是该选股策略可能存在的一些风险:
- 只考虑了少量的指标和概念,可能会忽略某些重要的因素;
- MACD指标容易受到市场波动的影响,存在较大的噪音以及较大的滞后性;
- 买一量和卖一量无法全面反映市场交易情况,可能存在市场行情异常的情况;
- 换手率过低的股票很难在短期内获得较高的投资回报;
- 过高的换手率可能导致选出的股票被市场炒作,存在很大的波动风险。
如何优化?
以下是该选股策略的一些优化建议:
- 可以结合其他市场走势指标一起判断股票的走势,例如KDJ、DMI等指标;
- 除了买一量和卖一量判定,可以考虑加入其他市场交易数据的判断,例如成交量等市场数据以全面衡量股票的市场交易情况;
- 对于MACD指标可以选择其他参数,例如DIF、DEA等;
- 可以综合考虑股票的市盈率、市净率等估值指标;
- 在选股之后将选出的股票与当前市场情况进行比对,做出相应的交易决策。
最终的选股逻辑
该选股策略以MACD指标、买一量和卖一量比较以及股票的换手率为主要选股依据,选出MACD零轴以上、买一量大于卖一量,且换手率在3%-12%之间的股票。
同花顺指标公式代码参考
选股公式:MACD() >= 0 AND B1_V > S1_V AND turnover_rate > 0.03 AND turnover_rate < 0.12
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['diff'] > current_macd['dea'] and current_macd['macd'] > 0:
# 买卖量比判断
b1_volume = get_current_tick(security).b1_v
s1_volume = get_current_tick(security).s1_v
if b1_volume > s1_volume:
# 换手率判断
turnover_rate = get_turnover_rate(security)
if turnover_rate > 0.03 and turnover_rate < 0.12:
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亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


