本文由uuer原创发布,可在自己的机器本地运行,也可在joinquant提供的jupyter研究环境里运行。
如果在本地运行,请设置两个变量:JQ_USER、JQ_PASS,你的jq账号以及密码JQ_USER=username JQ_PASS=passwd python run.py
获取今年以来涨幅排名,代码如下:
# coding: utf8
import os
import datetime
import time
import pandas as pd
import argparse
parser = argparse.ArgumentParser(description='Process args.')
parser.add_argument('--start', type=str, default=None, help='起始日期,格式20190315')
parser.add_argument('--end', type=str, default=None, help='截止日期,格式20190415')
parser.add_argument('--output', type=str, default='stdout', help='输出方式,file或stdout')
if not os.getenv('JUPYTERHUB_USER'):
# local
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
from jqdatasdk import *
auth(os.getenv('JQ_USER'), os.getenv('JQ_PASS'))
args = parser.parse_args()
else:
args = parser.parse_args(['--start=20190103', '--end=20190608', '--output=stdout'])
args.start = time.strftime('%Y-%m-%d', time.strptime(args.start, '%Y%m%d'))
args.end = time.strftime('%Y-%m-%d', time.strptime(args.end, '%Y%m%d'))
code_list = [
'000001.XSHG', #上证指数
'399001.XSHE', #深证成指
'399006.XSHE', #创业板指
]
infos = get_all_securities(['etf', 'lof', 'index', 'stock'])
df = get_price(code_list, start_date=args.start, end_date=args.end, frequency='daily', fields='close')
df = df['close']
results = []
for code in code_list:
display_name = infos.loc[code].display_name
price_list = df[code]
price_start = price_list[args.start]
price_end = price_list[args.end]
percent = (100.0 * (price_end - price_start)) / price_start
percent = float('{:.2f}'.format(percent))
results.append([display_name, price_start, price_end, percent])
columns = ['名称', '起始价格', '截止价格', '涨幅(%)']
df_result = pd.DataFrame(data=results, index=code_list, columns=columns)
df_result.index = df_result['名称']
del df_result['名称']
df_result.index.name = None
df_result = df_result.sort_values(['涨幅(%)'], ascending=False)
date = time.strftime('%Y%m%d', time.strptime(args.end, '%Y-%m-%d'))
content = df_result.to_html()
if args.output == 'file':
open('zhang.%s.html' % date, 'w').write(content)
else:
#print content
df_result
将你需要查看的股票或指数代码,添加至code_list即可。