问财量化选股策略逻辑
该选股策略包括三个条件:
- 振幅大于1
- 至少5根均线重合的股票
- 竞价主力净买大于0
选股逻辑分析
该选股策略同样侧重了技术面指标,挖掘技术面的关键点。选股条件中振幅大于1和至少5根均线重合的限制,有助于筛选出股票价格较为稳定的品种。竞价主力净买大于0表明主力资金正在增加仓位,有望在未来一段时间内表现良好。
有何风险?
选股方式依然比较单一,没有考虑公司基本面和未来发展趋势等因素,存在挑选不理想的股票的风险。同时,市场风险仍然存在。在进行回测时,应该考虑不同市场环境下该策略的表现,以避免过度拟合。
如何优化?
可以综合考虑公司的基本面和未来发展趋势等因素,采用更严格的选股条件,并结合机器学习等方法,构建更加精准的选股模型。在进行回测时,应该采用交叉验证等方法,以避免过度拟合。同时,可以加入其他技术指标如MACD、KDJ等来补充选股条件,提高模型的准确度。
最终的选股逻辑
综合考虑以上因素,修改后的选股逻辑为:
- 振幅大于1;
- 5日均线、10日均线、20日均线、30日均线、60日均线重合;
- 竞价主力净买大于0;
- 综合考虑公司的基本面和未来发展趋势等因素。
同花顺指标公式代码参考
- 竞价主力净买指标公式:LJCJJE - LJCJL > 0,其中LJCJJE表示当日竞价成交总金额,LJCJL表示当日竞价成交总量。
python代码参考
import pandas as pd
import tushare as ts
import talib
df = ts.get_stock_basics()
codes = df.index.tolist()
result = pd.DataFrame()
for code in codes:
is_amplitude_large = False
is_ma_converge = False
is_lj_buy = False
bars = ts.get_k_data(code, '2022-01-01', '2022-12-31') # 获取2022年的日线K线图
if bars is not None and len(bars) > 1:
# 振幅大于1
is_amplitude_large = (bars['high'].max() - bars['low'].min()) / bars['close'].iloc[-2] > 0.01
# 至少5根均线重合的股票
close = bars['close'].values
ma_5 = talib.MA(close, timeperiod=5)
ma_10 = talib.MA(close, timeperiod=10)
ma_20 = talib.MA(close, timeperiod=20)
ma_30 = talib.MA(close, timeperiod=30)
ma_60 = talib.MA(close, timeperiod=60)
ma_count = len(set([ma[-1] for ma in [ma_5, ma_10, ma_20, ma_30, ma_60]]))
is_ma_converge = ma_count >= 5
# 竞价主力净买大于0
lj_cjje = bars['volume'] * bars['close'] # 竞价成交总金额
lj_jyje = lj_cjje - bars['money'] # 竞价净成交总金额
lj_buy_volume = lj_jyje[lj_jyje > 0].sum() / bars['close'].iloc[-1]
is_lj_buy = lj_buy_volume > 0
if is_amplitude_large and is_ma_converge and is_lj_buy:
result = result.append({'code': code, 'name': df.loc[code]['name'], 'price': bars['close'].iloc[-1], 'industry': df.loc[code]['industry']}, ignore_index=True)
result = result.sort_values(by=['industry'], ascending=False)
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
