请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  数理科学 帖子:3353513 新帖:35

获取今年以来涨幅

2020来了发表于:8 月 22 日 10:36回复(1)

本文由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即可。

全部回复

0/140

量化课程

    移动端课程