import datetime today = datetime.date.today() ## 获取今天的日期 day1=datetime.date.today()-datetime.timedelta(300) ### 获取300天之前的日期 day2=datetime.datetime.strftime(today,"%Y-%m-%d" ) all_stock = get_all_securities(types=['stock'], date=day2) ### 获取所有股票代码 code=list(all_stock.index) ## 判断是否ST 并且删除st的股票代码 df_st=get_extras('is_st',code,start_date=day1,end_date=day2) for i in code: if any(df_st[i].values): code.remove(i) stock_list=[] for i in code: start_date=get_security_info(i).start_date days=(today-start_date).days if days>300: #### 选出上市满天300的股票 stock_list.append(i) data=dict() for i in stock_list: df=get_price(i,start_date=day1,end_date=day2,frequency='daily', fields=['open','close','high','low']) data[i]=df ### 将数据分成选股数据和回测数据。假设用中间的120根k线,后60根k线回测 code=[] n=45 ## n为回测k线的个数 s设为45 (可以随意调整) for i in stock_list: df=data[i] max_=max(df.high[-190:-n-1]) ### 选140=(190-45)根k线(可以随意调整) min_=min(df.low[-190:-n-1]) max_close=max(df.close[-190:-n-1]) ### 选出平台震荡期间振幅小于50%的,且,最后三天连涨,最后一天突破平台最大收盘价超过5%的所有股票 if all([max_/min_<1.5,df.close[-n-1]>df.close[-n-2]>df.close[-n-3],df.close[-n-1]/max_close>1.05]): code.append(i) ### 买入过程 ## 假设根据上面平台突破选出来的股票作为买入标的 ## 买入原则是 当天选出来的股票第二天以开盘价买入。且把选出来的每只股票以,同等资金额买入 capital=100000 ## 初始资金为 10万元 position=dict() ## 初始持仓手数为一个空字典 def handle(stock_list,capital,posttion,data,n): capital_=0 for i in code: capital_per=capital/len(code) position[i]=int(capital_per/(data[i].open[-n]*100)) capital_+=capital_per-position[i]*data[i].open[-n]*100 return ([position,capital_]) position_result=handle(get_code(),capital,position,data,n)修改上述代码,使能在jupyter里面运行
时间: 2024-03-07 09:49:16 浏览: 212
可以将代码放在一个 cell 中,并添加必要的库的导入语句。以下是修改后的代码示例:
```python
import datetime
from jqdatasdk import *
auth('用户名', '密码') # 用你自己的聚宽账号密码进行登录
def get_code():
today = datetime.date.today()
day1 = datetime.date.today() - datetime.timedelta(300)
day2 = datetime.datetime.strftime(today, "%Y-%m-%d")
all_stock = get_all_securities(types=['stock'], date=day2)
code = list(all_stock.index)
df_st = get_extras('is_st', code, start_date=day1, end_date=day2)
for i in code:
if any(df_st[i].values):
code.remove(i)
stock_list = []
for i in code:
start_date = get_security_info(i).start_date
days = (today - start_date).days
if days > 300:
stock_list.append(i)
data = dict()
for i in stock_list:
df = get_price(i, start_date=day1, end_date=day2, frequency='daily',
fields=['open', 'close', 'high', 'low'])
data[i] = df
code = []
n = 45
for i in stock_list:
df = data[i]
max_ = max(df.high[-190:-n-1])
min_ = min(df.low[-190:-n-1])
max_close = max(df.close[-190:-n-1])
if all([max_/min_ < 1.5, df.close[-n-1] > df.close[-n-2] > df.close[-n-3], df.close[-n-1]/max_close > 1.05]):
code.append(i)
return code
capital = 100000
position = dict()
def handle(stock_list, capital, position, data, n):
capital_ = 0
for i in stock_list:
capital_per = capital / len(stock_list)
position[i] = int(capital_per / (data[i].open[-n] * 100))
capital_ += capital_per - position[i] * data[i].open[-n] * 100
return position, capital_
code = get_code()
position_result = handle(code, capital, position, data, n)
```
注意:需要将上述代码中的 `用户名` 和 `密码` 替换为自己的聚宽账号密码。另外,聚宽需要联网才能登录。如果你的 jupyter notebook 是在本地运行的,需要确保你的电脑连接到了互联网。如果你是在云端运行的,确保云主机已经联网。
阅读全文
相关推荐
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)