由基金每日净值数据,生成基金净值周K线数据。
week_data.py
# coding=utf-8
import os, sys
import datetime
if len(sys.argv) ==2:
fcode = sys.argv[1]
else:
print('usage: week_data.py fcode ')
sys.exit(1)
f1 = fcode +'.csv'
if not os.path.exists(f1):
print("Error: %s not found." % f1)
sys.exit(1)
fn,ext = os.path.splitext(f1)
if len(fn) !=6:
print('Error: len(%s) !=6' % fn)
sys.exit(1)
if ext !='.csv':
print('Error: %s is not .csv' % f1)
sys.exit(1)
# 计算平均数
def average(alist):
nsum = 0.0
for i in range(len(alist)):
nsum += alist[i]
return round(nsum / len(alist), 4)
fp = open(f1,'r')
fp.readline()
f2 = 'W' + f1
fp2 = open(f2,'w')
fp2.write("date,open,close,low,high,mavg\n")
i =0
alist =[]
for line in fp:
a = line.strip().split(',')
y,m,d = a[0].split('-')
weeks = datetime.date(int(y),int(m),int(d)).isocalendar()[1]
#print((year,weeks,weekday)
i +=1
if i==1:
ymd = a[0]
wek = weeks
begin = a[1]
end = a[1]
low = a[1]
high = a[1]
if weeks == wek:
ymd = a[0]
end = a[1]
if a[1]< low: low = a[1]
if a[1]> high: high = a[1]
if weeks != wek:
mavg = average(alist)
ss = "%s,%s,%s,%s,%s,%s\n" % (ymd,begin,end,low,high,mavg)
fp2.write(ss)
alist =[]
ymd = a[0]
wek = weeks
begin = a[1]
end = a[1]
low = a[1]
high = a[1]
i =1
alist.append(float(a[1]))
#
mavg = average(alist)
ss = "%s,%s,%s,%s,%s,%s\n" % (ymd,begin,end,low,high,mavg)
fp2.write(ss)
fp.close()
fp2.close()
运行 python week_data.py 660008
生成 W660008.csv
date,open,close,low,high,mavg
2016-01-08,1.1141,1.0800,1.0600,1.1350,1.101
2016-01-15,1.0272,1.0032,1.0032,1.0348,1.0227
2016-01-22,1.0072,1.0013,0.9913,1.0357,1.0113