股票数据源自东方财富网。
代码如下:
using JSON
using XLSX
using HTTP
import Dates
import DataFrames
my_time = Dates.format(Dates.now(),"YYYYmmddHHMMSS")
r = HTTP.request("GET", "http://73.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152")
num = JSON.parse(String(r.body))["data"]["total"]
res = HTTP.request("GET","http://73.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=" * string(num) * "20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152")
data = JSON.parse(String(res.body))["data"]["diff"]
filename = "hushenAstock" * my_time * ".xlsx"
#股票名称
stock_name = []
#股票代码
stock_code = []
#最新价
buy = []
#跌涨幅
changepercent = []
#跌涨额
pricechange = []
#成交量
volume = []
#成交额
amount = []
#振幅
amplitude = []
#换手率
turnoverratio = []
#市盈率
pb = []
#量比
quantity_rr = []
#最高
high = []
#最低
low = []
#今开
open = []
#昨收
settlement = []
#市净率
per = []
for item in data
push!(stock_name,item["f14"])
push!(stock_code,item["f12"])
push!(buy,item["f2"])
temp_changepercent = item["f3"] == "-" ? "" : string(item["f3"],"%")
push!(changepercent,temp_changepercent)
push!(pricechange,item["f4"])
push!(volume,item["f5"])
push!(amount,item["f6"])
temp_amplitude = item["f7"] == "-" ? "" : string(item["f7"],"%")
push!(amplitude,temp_amplitude)
temp_turnoverratio = item["f8"] == "-" ? "" : string(item["f8"],"%")
push!(turnoverratio,temp_turnoverratio)
push!(pb,item["f9"])
push!(quantity_rr,item["f10"])
push!(high,item["f15"])
push!(low,item["f16"])
push!(open,item["f17"])
push!(settlement,item["f18"])
push!(per,item["f23"])
end
df = DataFrames.DataFrame(股票名称 = stock_name, 股票代码 = stock_code, 最新价 = buy, 跌涨幅 = changepercent, 跌涨额 = pricechange, 成交量 = volume, 成交额 =amount, 振幅 = amplitude, 换手率 = turnoverratio, 市盈率 = pb, 量比 = quantity_rr, 最高 = high, 最低 = low, 今开 = open, 昨收 = settlement, 市净率 = per)
XLSX.writetable(filename, collect(DataFrames.eachcol(df)), DataFrames.names(df))
运行结果如下图所示:
juliastock.JPG