问财量化选股策略逻辑
选股逻辑为:振幅大于1,换手率>2%且<9%,资金强度由大到小。该选股策略主要考虑市场波动和活跃度因素,同时关注资金流向情况,以寻找资金活跃度较高的股票。
选股逻辑分析
该选股逻辑主要考虑市场波动和活跃度因素,以振幅、换手率为主要考量因素,再结合资金强度,以寻找资金活跃度较高的股票。振幅大于1和换手率>2%且<9%是考虑市场波动和活跃度的因素,资金强度由大到小可以反映资金流向情况,表明资金对该股票的关注度较高,有一定价值可挖掘。该选股策略比较简单,但能够筛选出一定程度上活跃度较高和有一定价值的股票。
有何风险?
由于该选股逻辑过于依赖资金流向情况,可能会忽略一些重要的风险因素,如公司财务状况、治理结构、行业竞争等。同时,由于该策略出于短期交易机会而选股,存在过度交易、过度集中投资等风险,需要加强风险控制和仓位管理等策略。
如何优化?
为了提高选股的精度和稳定性,可以加入公司基本面指标和其他技术指标,如市盈率、市净率、相对强弱指标、均线系统等,以寻找符合价值投资和长期持有的优质股票。同时,也可以关注公司的治理结构、行业竞争力、行业增长趋势等因素,以寻找更符合长期价值和成长性的股票。应强化风险控制和仓位管理等策略,避免频繁交易和过度集中投资。核心思路可以保留,但需要加入更多的因素来筛选优质股票,以提高精度和稳定性。
最终的选股逻辑
选股条件为:振幅大于1,换手率>2%且<9%,资金强度由大到小。结合公司基本面和其他技术指标,如市盈率、市净率、相对强弱指标、均线系统等,以寻找符合价值投资和长期持有的优质股票。同时,关注公司的治理结构、行业竞争力、行业增长趋势等因素,以寻找更符合长期价值和成长性的股票。强化风险控制和仓位管理等策略,避免频繁交易和过度集中投资。
同花顺指标公式代码参考
选股条件为:振幅大于1,换手率>2%且<9%,资金强度由大到小。
/** 资金强度 **/
GROSSSPPRC: (CLOSE-OPEN)/OPEN*100; // 实时价格涨跌幅度
AVGPRICE: SUM(CLOSE*VOL,1)/SUM(VOL,1); // 平均价格
TICKUP1 := REF(CLOSE,1) > AVGPRICE AND CLOSE > AVGPRICE; //判断涨股
TICKDOWN1 := REF(CLOSE, 1) < AVGPRICE AND CLOSE < AVGPRICE; //判断跌股
TICKNO := !TICKUP1 AND !TICKDOWN1;
SZ:=SELECTDB(SECCODE,2) = 'SSE' OR SELECTDB(SECCODE,2) = 'SZSE';
SUM1:=SUM(VOL*TICKUP1*CLOSE,SZ);
SUM2:=SUM(VOL*TICKDOWN1*CLOSE,SZ);
C1:SUM2>0;
C2:SUM2=0 AND SUM1>0;
C3:SUM1<0;
GFQ:=SELECTDB(SECCODE,7);
IF(GFQ="1",TDAY=$TDAY,YEAR=$YEAR AND MONTH=$MONTH AND DAY<$DAY);//返回合法的日期
JSZJLL: IF(TODAY=TDAY, (SUM1-SUM2)/(SUM1+SUM2), (SUM(VOL*GROSSSPPRC*GFQ,TICKUP1 AND SZ) - SUM(VOL*GROSSSPPRC*GFQ,TICKDOWN1 AND SZ))/SUM(VOL*ABS(GROSSSPPRC),SZ)*100);
COND1:JSZJLL>REF(JSZJLL,1);
SORT(JZC_ZSY,ASY);
/** 选股 **/
C: GROSSSPPRC > 1 AND (TICKNO OR TICKUP1) AND JSZJLL > 0;
CONDITION = C;
Python代码参考
import pandas as pd
import tushare as ts
def select_stocks(length):
ts.set_token('your token')
pro = ts.pro_api()
# 获取股票数据
stock_data = pro.stock_basic(list_status='L', exchange='SSE', fields='ts_code,symbol,name,industry,list_date')
current_date = '20220308'
# 筛选符合条件的股票
selected_stocks = []
for index, row in stock_data.iterrows():
code = row['ts_code']
info = {}
info['code'] = code
info['name'] = row['name']
# 排除科创板股票
industry = row['industry']
if industry.startswith('688'):
continue
# 获取技术指标数据
tech_data = pro.query('daily', ts_code=code, start_date='20220208', end_date=current_date, fields='high,low,close,vol')
finance_data = pro.fina_indicator(ts_code=code, start_date='20200101', end_date='20211231', fields='yield_rate')
turnover_rate = tech_data.iloc[-1]['vol'] / pro.stock_basic(ts_code=code).iloc[0]['total_share']
if len(tech_data) > 1:
# 计算技术指标
high = tech_data.iloc[-1]['high']
low = tech_data.iloc[-1]['low']
volatility = high - low
# 计算资金强度
turnover_rate = tech_data.iloc[-1]['vol'] / pro.stock_basic(ts_code=code).iloc[0]['total_share']
price_change = (tech_data.iloc[-1]['close'] - tech_data.iloc[-2]['close']) / tech_data.iloc[-2]['close'] * 100
avg_price = (tech_data['close'] * tech_data['vol']).sum() / tech_data['vol'].sum()
up = tech_data.iloc[-1]['close'] > avg_price and tech_data.iloc[-2]['close'] < avg_price
down = tech_data.iloc[-1]['close'] < avg_price and tech_data.iloc[-2]['close'] > avg_price
no_change = not up and not down
if no_change or up:
zj = tech_data[tech_data['close'] > avg_price]['vol'].sum() * price_change
else:
zj = tech_data[tech_data['close'] < avg_price]['vol'].sum() * price_change
zjll = zj / tech_data['vol'].abs().sum() * 100
cond1 = turnover_rate > 2 and turnover_rate < 9
cond2 = volatility > 1
cond3 = finance_data.iloc[-1]['yield_rate'] > 5
cond4 = zjll > 0
# 判断是否符合条件
if cond1 and cond2 and cond3 and cond4:
selected_stocks.append(info)
if len(selected_stocks) >= length:
break
return selected_stocks
致辞
本次问答为问财量化选股策略逻辑的第五十一篇,该选股策略主要考虑市场波动和活跃度因素,同时关注资金流向情况,以寻找资金活跃度较高的股票。需要加入公司基本面指标和其他技术指标来提高选股的精度和稳定性,同时关注公司的治理结构、行业竞争力、行业增长趋势等因素,以寻找更符合长期价值和成长性的股票。应强化风险控制和仓位管理等策略,避免频繁交易和过度集中投资。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
