python:生成基金净值周K线数据
由基金每日净值数据,生成基金周K线数据。week_data.py# coding=utf-8import os, sysimport datetimeif 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.e
·
由基金每日净值数据,生成基金净值周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
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)