funds.pl是一个Perl脚本,用来跟踪中国开放式基金投资收益(暂不包括货币基金),当前版本1.3.4。
该工具从专业网站得到所有基金净值,然后根据用户提供的信息列出所有用户投资的资金信息,并统计出每只基金的收益,以及总收益。结果输出为网页,并用firefox打开。
HTML::TableExtract
, Config::General
, LWP::UserAgent
, Encode
, Pod::Usage
, DateTime
, XML::Atom
以及HTML::Template
。下载funds.pl
和funds.tmpl到本地,第一次运行时会提示用户并没有提供任何基金投资组合信息,建议用户按照例子编写,并存在.funds
目录里。
$ perl funds.pl 没有找到中国开放式基金投资组合数据 请参照文件/path/example.conf里的格式,将投资组合保存在文件/path/config里
example.conf
的内容如下:
# example for config <fund 000001> # 买入净值 net = 1.00 # 持有数量 number = 1000 # 投入资本 investment = 1002 </fund>
其中“000001”是基金代码,而“买入净值”目前没有任何用处,但会显示在结果网页上。config
文件可以含有多种资金投资信息,但同一种基金只能有一项,因此无法记录用户多次投资的信息,但可以将多次投资同一只基金的信息综合到一项里面,计算结果是一样的。后续版本将提供处理同种基金多项信息的功能。
如果用户系统定义了HOME
环境变量,那么.funds
目录会建在用户的home目录下,否则建在当前目录下。修改好config
文件后将funds.tmpl
也放在同一个目录下,缺省情况下,统计结果也会存在该目录下。因为基金信息每天更新一次,为了节省带宽,提高响应速度,该工具会在当天第一次运行时将所有基金信息存在.funds
目录下,以后无需每次从网上提取,当然,无论何时运行,一天之内的结果总是一样的,即前一天投资的收益情况。
填好基金投资信息后,以后只需每日运行:
$ perl funds.pl
即可。
该程序可以作为cron job定期运行,并将结果发布到网站上,同时提供Atom Feed。方法如下:
在您的web服务器上运行
$ crontab -e
然后编辑文件如下:
0 8 * * * perl /path/to/script/funds.pl -c /path/to/config/ -d /path/to/output --domain=www.yourdomain.com 2>&1 >/path/to/log
缺省的urlpath值为fundcalc,所以Atom Feed的网址为 http://www.yourdomain.com/fundcalc/atom.xml, 订阅它就可以及时了解投资状况,无需手工每天运行。man 5 crontab
查看crontab文件的编写帮助。
为防止一些意想不到的问题,可以多添加几项,然而由于基金信息一天公布一次,所以太多了也没用。建议添加两项,注意:后面的cron job最好使用--refresh
选项。
--firsturl=1
可以先查询金融界网站--output
选项时,使用该选项指定的路径无效,而采用指定文件所在的路径--username
选项,提供多用户支持。 funds.info
符号链接至最新的基金数据文件。 XML::Atom
所有对象的输入的utf8 flag必须关掉。--domain
, --urlpath
, --config-directory
, --output-directory
。funds.tmpl
模板上增加Atom Feed。 --output
选项指定输出文件名,否则当HTML文件存在时直接打开,而不去覆盖,以免改变最近更新时间。 DateTime
归来)及本页链接。 Pod::Usage
显示帮助信息 --verbose
,并将所有输出信息翻译为中文。--refresh
或者--firsturl
时,如果网站上的数据并不比本地缓存数据新,将不再显示HTML页面。 --output
,用来指定输出文件位置。--discard-data
,使用该选项时,从网站上取回的基金净值数据将不会保存到本地。DateTime
获取日期,日期信息从网页上提取,并保存到funds.info
文件,以及当天的基金净值数据文件里。--refresh
时覆盖funds.info
文件,以及当天的基金净值数据文件里。 funds.tmpl
放在config
文件所在目录,而不是和funds.pl
放在一起。 HTML::Template
生成报表,而不是直接打印HTML语句。 --refresh
和--firsturl
本工具以GPL协议(第二版本,或以上)发布,对该程序的运行结果作者不做任何担保,任何结果由使用该程序的用户自己承担。