问财量化选股策略逻辑
该选股策略选取元宇宙行业中,前日实际换手率在3%至28%之间,且资金强度由大到小的个股进行投资。
选股逻辑分析
该选股策略主要围绕以下条件进行选股:
- 选取元宇宙行业中的个股,因为元宇宙领域具有较高的成长性和隐含收益;
- 前日实际换手率在3%至28%之间,可能表示该个股存在着资金流动性和市场认可度;
- 资金强度由大到小,可能表示大量资金正在追捧该个股。
综合以上条件,选择符合条件的个股进行投资。
有何风险?
- 该选股策略可能忽略了一些个股的长期投资价值;
- 资金强度变化很快,可能存在跟涨行为。
如何优化?
- 加入其他技术指标,例如RSI、均线等,以综合判断个股的投资价值;
- 调整选股策略中各因素的权重,达到更好的效果;
- 选取更可靠的技术分析指标,例如日线或周线MACD指标。
最终的选股逻辑
该选股策略选取元宇宙行业中,前日实际换手率在3%至28%之间,且资金强度由大到小的个股进行投资。
同花顺指标公式代码参考
- 元宇宙行情:GNBK("gnxq");
- 前日实际换手率:TURNOVER(2);
- 当日内吸纳资金:SUM(MONEY*{CLOSE-OPEN}/{HIGH-LOW}, 26);
- 当日累计资金:SUM(MONEY, 26);
- 资金强度指标:100 * 当日内吸纳资金 / 当日累计资金
选股公式:GNBK("gnxq") AND TURNOVER(2)>3 AND TURNOVER(2)<28 AND 资金强度指标[-1] > 资金强度指标[-2]
Python代码参考
import pandas as pd
import tushare as ts
from pandas_datareader import data as pdr
import yfinance as yf
yf.pdr_override()
def stock_selector():
ts.set_token('your_token')
pro = ts.pro_api()
data1 = pro.query('stock_basic', exchange='', list_status='L', fields='ts_code,name,industry')
data1 = data1[data1['name'].str.contains('元宇宙')]
start_date = str((pd.Timestamp.now() - pd.Timedelta(days=60)).date())
end_date = str(pd.Timestamp.now().date())
data2 = pdr.get_data_yahoo(list(data1['ts_code']), start=start_date, end=end_date, interval='15m', group_by='ticker')
data2.reset_index(inplace=True)
data2[['MONEY']] = data2[['Volume']] * (2 * data2['Close'] - data2['Open'] - data2['High'] + data2['Low']) / (data2['High'] - data2['Low'])
data2[['MONEY_DIFF', 'MONEY_SUM']] = data2.groupby(by='level_0', as_index=False)[['MONEY']].apply(lambda x:x.rolling(26, min_periods=26).sum())
data2[['MONEY_AVG']] = data2.groupby(by='level_0', as_index=False)[['MONEY_DIFF']].apply(lambda x:x.rolling(26, min_periods=26).mean())
data2 = data2.groupby(by='level_0', as_index=False).apply(lambda x:x.iloc[-1, :])
data2.reset_index(drop=True, inplace=True)
data2[['TURNOVER_1']] = data2[['Volume']] / data2[['Volume']].shift(1) * 100
data2.dropna(inplace=True)
data2 = pd.merge(data1, data2, left_on='ts_code', right_on='level_0', how='inner')
data2.set_index(['ts_code'], inplace=True)
data2 = data2[data2['MONEY_DIFF'] > data2['MONEY_DIFF'].shift()]
data2 = data2[(data2['TURNOVER_1'] > 3) & (data2['TURNOVER_1'] < 28) & ~(data2['ts_code'].str.startswith('300'))]
data2['MONEY_AVG2'] = data2['MONEY_DIFF'].rolling(2, min_periods=2).apply(lambda x:(x[-1] - x[-2]) / x[-2] * 100, raw=True)
data2.sort_values(by=['MONEY_AVG2'], ascending=False, inplace=True)
data2.reset_index(inplace=True)
data3 = data2.loc[:, ['ts_code', 'name', 'industry']]
return data3
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


