问财量化选股策略逻辑
选股逻辑:rsi小于65,上市大于1年,20日均线大于120日均线的股票。
选股逻辑分析
该选股逻辑结合了技术面和基本面的因素。RSI指标用于判断股票短期内的超买或超卖情况,选出近期相对较弱的股票;选股时限制上市时间,主要是基于新上市的公司一般业绩不稳定、信息披露不及时等因素;通过比较20日和120日均线,可以判断股票的中长期趋势,当20日均线超过120日均线,可以判定股票处于上升趋势中。综合这些因素,可以选出短期相对弱势但趋势向上的股票,具有一定的投资价值。
有何风险?
均线策略不能适用于所有股票,特别是一些高成长性公司、创新性公司,其业绩增长快,股价表现活跃,且多次出现上涨或下跌和回升等情况,均线对短期及次中期趋势作用有限,容易使筛选结果受到一定误导。同时,20日和120日均线的使用也需要结合个股的市场行情、板块热度等因素进行调整。
如何优化?
可以结合其他技术和基本面指标进行筛选,如MACD指标、成交量等指标,综合判断股票的走势和价值。同时,可以根据不同股票的特点,调整均线期数;对于不同的行业和板块,也可以设置不同的均线策略,合理应用均线选股策略。此外,需要结合市场走势、财报季节等市场情况进行动态调整策略。
最终的选股逻辑
选股逻辑:rsi小于65,上市大于1年,20日均线大于120日均线的股票。
同花顺指标公式代码参考
C1: MAINBORADINFO(1) == 1 AND ZuiXinJia >= 10 AND ZuiXinJia <= 100 AND ZuiXinJia/LiShiJiaGe > 0.9 AND HSL >= 0.1
C2: RSI(CLOSE, 14) <= 65
C3: MA(CLOSE, 20) >= MA(CLOSE, 120)
SELECT IF(C1 AND C2 AND C3, 1, 0)
Python代码参考
import pandas as pd
import akshare as ak
import talib
def get_stock_list():
result_df = pd.DataFrame()
stock_pool = ak.stock_zh_a_spot().astype({'证券代码':'str'})['证券代码'].tolist()
for code in stock_pool:
# 获取股票基本信息和财务数据
stock_info = ak.stock_info_a_name(code).reset_index(drop=True)
if len(stock_info) == 0:
continue
stock_info.rename(columns={"0": "name", "4": "industry"}, inplace=True)
stock_info['code'] = code
stock_info = stock_info[['code', 'name', 'industry']]
finance = ak.stock_financial_analysis_indicator(stock=code)
if len(finance) == 0:
continue
finance = finance[finance['报告日期'].str.contains('12-31')].reset_index(drop=True)
if len(finance) == 0:
continue
# 剔除上市时间较短的股票
if (stock_info['上市时间'] > 1):
# 计算RSI和MA指标
df = ak.stock_zh_a_daily(symbol=code, adjust="qfq")
if len(df) == 0:
continue
if (len(df) < 120):
continue
df['rsi'] = talib.RSI(df['收盘价'].values, timeperiod=14)
df['ma20'] = talib.MA(df['收盘价'].values, timeperiod=20)
df['ma120'] = talib.MA(df['收盘价'].values, timeperiod=120)
if (df['rsi'].iloc[-1] <= 65) and (df['ma20'].iloc[-1] > df['ma120'].iloc[-1]):
result_df = result_df.append(stock_info, ignore_index=True)
return result_df
Python依赖库
-
pandas
-
akshare
-
talib
## 如何进行量化策略实盘? 请把您优化好的选股语句放入文章最下面模板的选股语句中即可。 select_sentence = '市值小于100亿' #选股语句。 模板如何使用? 点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。 ## 如果有任何问题请添加 下方的二维码进群提问。 