问财量化选股策略逻辑
本选股策略选择振幅大于1、非ST(上午10点之前选股票)、五部涨停战法、昨日非涨停板的股票进行选股。
选股逻辑分析
本选股策略在前一个策略的基础上加入了一个新的条件,即昨日非涨停板,这个条件的引入可以帮助筛选出在昨日未有大量买盘涌入的股票,从而帮助我们在今天进行抄底。
有何风险?
本选股策略存在以下风险:1)选择的指标过于简单,没有充分考虑到市场变化的细节问题,只适用于特定时间范围;2)对于新股和低价股的适用性较差,需要针对其它特征进行筛选。
如何优化?
对选股策略可通过如下方式进行优化:1)将对昨日非涨停板的要求进行优化,可以考虑加入其他筛选指标;2)可以考虑引入机器学习等模型进行策略优化。
最终的选股逻辑
本选股策略的最终逻辑为:振幅大于1、非ST、五部涨停战法、昨日非涨停板的股票进行选股。
同花顺指标公式代码参考
选股条件:昨日非涨停板
LCLOSE<>LAST4COUNT(LCLOSE>=1.098*LCLOSE,1)+LAST4COUNT(LCLOSE>=1.098*LCLOSE,2)+LAST4COUNT(LCLOSE>=1.098*LCLOSE,3)+LAST4COUNT(LCLOSE>=1.098*LCLOSE,4)
python代码参考
import pandas as pd
import tushare as ts
# 读取股票数据
df = pd.read_csv('stock_data.csv')
# 筛选条件1:振幅大于1
df['AMPLITUTE'] = df.apply(lambda row: max(row['HIGH'] - row['LOW'], abs(row['HIGH'] - row['PREV_CLOSE']), abs(row['LOW'] - row['PREV_CLOSE'])), axis=1)
df = df[df['AMPLITUTE'] > 1]
# 筛选条件2:非ST
df = df[df['NAME'].str.upper().str.find('ST') == -1]
# 筛选条件3:五部涨停战法
df['CLOSE_MAX'] = df['CLOSE'].rolling(5).max()
df = df[df['CLOSE'] == df['CLOSE_MAX']]
# 筛选条件4:昨日非涨停板
tmp = ts.get_stock_basics()
yesterday = pd.to_datetime('yesterday').strftime('%Y-%m-%d')
not_limit_up = []
for code in df['CODE']:
if tmp.loc[code]['timeToMarket'] > int(yesterday.replace('-', '')):
not_limit_up.append(False)
else:
kline = ts.get_k_data(code, start=yesterday, end=yesterday)
if len(kline) == 1:
pre_close = tmp.loc[code]['pb']
close = kline['close'].iloc[0]
if close < pre_close*1.098:
not_limit_up.append(True)
else:
not_limit_up.append(False)
df = df[not_limit_up]
# 输出选股数据
print(df)
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
