问财量化选股策略逻辑
选股逻辑:MACD零轴以上、历史高点为两日最高、换手率大于2%且小于9%的股票。
选股逻辑分析
该选股策略同样以技术面为主,通过MACD指标和历史高点判断股票的短期趋势,同时加入适当的换手率因素,筛选出具备较高买入信号且具备一定流动性的个股。
有何风险?
以下是该选股逻辑可能存在的一些风险:
-
由于该逻辑较为简单,可能会容易落入过于万能的“底层逻辑”,忽视其它宏观和行业因素对股票的影响。
-
换手率较为粗略,可能会对交易量较小的股票产生影响,推荐使用更加精细的量价指标。
如何优化?
以下是对选股逻辑进行优化的相关建议:
-
尝试加入更多细致的量价指标来改进筛选,如OBV等。
-
在筛选换手率时,应考虑到股票的交易量偏差,可以尝试加入流通市值等因素配合进行筛选。
最终的选股逻辑
MACD零轴以上,历史高点为两日最高,换手率大于2%且小于9%。
同花顺指标公式代码参考
- 选股公式:
(CROSS(MACD(12, 26), 0) AND REF(HHV(HIGH, 2), 1) == HHV(HIGH, 2) AND (TURNOVER / 100) > 2 AND (TURNOVER / 100) < 9)
其中 (TURNOVER / 100) > 2 AND (TURNOVER / 100) < 9 表示换手率大于2%且小于9%。
python代码参考
def initialize(context):
set_benchmark('000001.XSHG')
set_commission(PerTrade(buy_cost=0.0003, sell_cost=0.0003, min_cost=5))
set_slippage(PriceSlippage(0.002))
set_option('avoid_future_data', True)
def select_stock(context):
stock_list = list(get_index_stocks('000001.XSHG'))
selected = []
for stock in stock_list:
h = attribute_history(stock, 2, '1d', ('high', 'open', 'close', 'low', 'volume'), df=True)
turnover_ratio = get_turnover_ratio(stock)
# 选股
if (talib.CROSS(talib.MACD(h['close'], fastperiod=12, slowperiod=26, signalperiod=9), 0)[-1]
and max(h['high']) == h['high'][-2] and (turnover_ratio > 0.02 and turnover_ratio < 0.09)):
selected.append(stock)
selected = sorted(selected, key=get_valuation, reverse=True)
return selected
def get_turnover_ratio(stock):
df = get_fundamentals(query(valuation.turnover_ratio).filter(valuation.code == stock), date=datetime.now().strftime('%Y%m%d'))
return df['turnover_ratio'][0]
def get_valuation(stock):
pass # 计算股票的估值水平和基本面指标
注:由于通达信指标公式中没有换手率参数,因此没有给出与python代码的对应。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


