通达信选股公式5天内有涨停2天内涨跌幅不超过3%”
时间: 2023-06-19 08:10:13 浏览: 501
这个选股公式可以通过以下代码实现:
```python
# 导入必要的库
import baostock as bs
import pandas as pd
import datetime as dt
# 登录baostock系统
lg = bs.login()
# 获取5天内有涨停的股票
rs = bs.query_history_k_data_plus("sh.600000", "date,code,close,preclose,high,low", start_date=(dt.datetime.now() - dt.timedelta(days=5)).strftime('%Y-%m-%d'), end_date=dt.datetime.now().strftime('%Y-%m-%d'), frequency="d", adjustflag="3")
data_list = []
while (rs.error_code == '0') & rs.next():
data_list.append(rs.get_row_data())
stk_data = pd.DataFrame(data_list, columns=rs.fields)
stk_data['pct_chg'] = (stk_data['close'].astype(float) - stk_data['preclose'].astype(float)) / stk_data['preclose'].astype(float)
stk_data = stk_data[stk_data['pct_chg'] > 0.095]
# 获取2天内涨跌幅不超过3%的股票
stk_list = []
for code in stk_data['code']:
rs = bs.query_history_k_data_plus(code, "date,code,close,preclose,high,low", start_date=(dt.datetime.now() - dt.timedelta(days=2)).strftime('%Y-%m-%d'), end_date=dt.datetime.now().strftime('%Y-%m-%d'), frequency="d", adjustflag="3")
data_list = []
while (rs.error_code == '0') & rs.next():
data_list.append(rs.get_row_data())
stk_sub_data = pd.DataFrame(data_list, columns=rs.fields)
stk_sub_data['pct_chg'] = (stk_sub_data['close'].astype(float) - stk_sub_data['preclose'].astype(float)) / stk_sub_data['preclose'].astype(float)
if (stk_sub_data['pct_chg'] >= -0.03).all() & (stk_sub_data['pct_chg'] <= 0.03).all():
stk_list.append(code)
# 输出结果
print("5天内有涨停的股票:")
print(stk_data)
print("2天内涨跌幅不超过3%的股票:")
print(stk_list)
# 登出系统
bs.logout()
```
需要注意的是,该选股公式只是一个示例,实际使用时需要根据自己的需要进行修改和优化。另外,该公式需要使用baostock库进行数据获取,需要先安装baostock库并进行登录。