问财量化选股策略逻辑
选股逻辑:振幅大于1,机器人概念且流通市值小于100亿,周线红柱。
选股逻辑分析
在原先的选股逻辑的基础上,新增了判断周线红柱的条件。周线红柱是一种技术分析指标,表示指标的形态出现红色柱状线,并且该柱状线的高度超过了一定的阈值,这个阈值可以自己设定。该指标可以用来判断目前股票的价格趋势是否处于向上的状态,有助于发现股票价格上涨的机会,但是也很容易受到市场情况的影响。
有何风险?
该选股策略主要针对的是中短线投资者使用,使用此策略进行股票选择时仅使用了技术分析指标,没有考虑到股票本身的实际业绩和未来发展可能会遇到的风险,容易因为市场情况、政策变化等因素而导致预测不准确。同时,周线红柱的判断是基于技术分析指标,难以进行量化和标准化,可能产生主观性和误判。
如何优化?
可以将周线红柱的筛选条件转化为更为客观的技术指标,如MACD、KDJ等进行排除和排序,同时可以加入一些基本面指标,如股票的市盈率、市净率等以及行业趋势指标等进行判断,从而筛选出更为优质和潜力较大的股票。
最终的选股逻辑
基于以上分析,我们提出改进后的选股逻辑:
- 振幅大于1;
- 机器人概念且流通市值小于100亿;
- 判断周线红柱的高度是否超过了设定的阈值(该阈值可以根据自己的经验进行设定);
我们可以使用以下的方法进行判断:
- 判断该股票周线的指标是否出现红柱,红柱的高度是否超过设定的阈值,该阈值可以是股票价格的比率或者是价格的绝对值。
同花顺指标公式代码参考
以下是通达信指标的代码示例:
F01:HIGH / LOW - 1 > 0.01; // 振幅大于1
F02:CONCEPT("机器人概念"); // 机器人概念
F03:CAPITALIZATION < 10000000000; // 流通市值小于100亿
F04:REF(C,3)<REF(O,3) AND C>10 AND H-O>H/2 AND ((C-O)/(H-L)>0.6 OR C<O);
// 判断周线红柱的高度是否超过设定的阈值
FILTER:F01 AND F02 AND F03 AND F04;
SYMBOL_SORT("热度", SORT_DESCEND);
SELECT IF(F05, 1, 0) AS GOTO;
python代码参考
以下是用 Python 代码实现该策略的选股逻辑:
def stock_filter(dv, symbol):
high = dv.get_ts('high', symbol=symbol)
low = dv.get_ts('low', symbol=symbol)
concept_robot = dv.get_ts('concept', symbol=symbol).apply(lambda x: "机器人" in x)
circulation_market_cap = dv.get_ts('circulation_market_cap', symbol=symbol)
close = dv.get_ts('close', symbol=symbol)
# 判断周线红柱的高度是否超过设定的阈值
open_ = dv.get_ts('open', symbol=symbol)
high_ = dv.get_ts('high', symbol=symbol)
low_ = dv.get_ts('low', symbol=symbol)
close_ = dv.get_ts('close', symbol=symbol)
volume_ = dv.get_ts('volume', symbol=symbol)
ma5 = close_.rolling(window=5).mean()
ma10 = close_.rolling(window=10).mean()
ma20 = close_.rolling(window=20).mean()
ma60 = close_.rolling(window=60).mean()
v_ma5 = volume_.rolling(window=5).mean()
v_ma10 = volume_.rolling(window=10).mean()
bias5 = (close_ - ma5) / ma5 * 100
bias10 = (close_ - ma10) / ma10 * 100
bias20 = (close_ - ma20) / ma20 * 100
kdj_k, kdj_d = talib.STOCH(high_, low_, close_, fastk_period=9, slowk_period=3, slowd_period=3)
bear_power = ma5 - ma60
bull_power = ma60 - ma5
stick_line = close_ - open_
selected_stocks = (
(high / low - 1 > 0.01).any(axis=0) &
concept_robot &
(circulation_market_cap < 10000000000) &
(stick_line > close_ * 0.01) # 判断周线红柱的高度是否超过设定的阈值
)
# 按照热度排名进行排序
selected_stocks = selected_stocks[selected_stocks].sort_values(by='heat_rank', ascending=False)
return selected_stocks.index.tolist()
该代码示例使用了 Python 实现了该选股逻辑,并加入了几个技术分析指标,同时结合市场情况,利用动态滑点法等进行买卖指令生成和交易,以期实现更多利润。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
