python:生成基金净值周K线数据

本文介绍了一种从基金每日净值数据生成周K线数据的方法,通过计算每周的开盘价、收盘价、最高价、最低价及平均价,为投资者提供更宏观的基金表现视图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由基金每日净值数据,生成基金净值周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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值