从新浪财经上下载交易明细数据并统计每天的买卖笔数(shell 命令行)
从新浪财经上下载交易明细数据并统计每天的买卖笔数
1、下载
如果需要下载多只股票多个交易日的明细数据,可以建立一个地址链接文件。下例给出了下载600001股票2008年1至9月各个交易日的数据需要的链接:
http://market.finance.sina.com.cn/downxls.php?date=2008-0[1-9]-[01-31]&symbol=sh600001存储地址的文本文件可以命名为downsite
在debian/ubuntu中安装命令行下载工具aria2
sudo apt-get install aria2cd到下载目标文件夹,shell中输入:
aria2c -Z -P -idownsite开始下载。
2、文件转换
当一个交易日有数据时,会下载到一个以.xls格式的数据文件;没有数据时,会下载到一个提示性质的文本文件。提示文件中含有关键字“php”,先删除这种文件:
rm *php*下载到的.xls文件的名称格式是: sh600001_交易明细_2008-01-03.xls
由于文件名为gbk编码,如果debian/ubuntu环境为utf8,文件名中的汉字会显示乱码,转换文件名的编码方式:
convmv -f gbk -t utf8 -r --notest sh*文件内容也为gbk编码,转换编码,将.xls数据另存为同名文本文件,同时将文件名中的"-"变为"_"并删除.xls文件:
for file in `ls *明细*`; donewfile=`echo $file | sed 's/\-/\_/g'` | awk -F. '{print $1}'`; # 或者更快: newfile=`echo $file | sed 's/\-/\_/g; s/\.xls//'`iconv -f gbk -t utf8 $file > $newfile;rm $file;done3、提取各只股票买卖交易数据对,并存储到bsdata文件中
经过第2步转换的文本文件格式如下:
成交时间 成交价 价格变动 成交量(手) 成交额(元) 性质
15:00:03 8.38 -- 138 115644 买盘
14:59:45 8.38 0.01 20 16760 买盘
14:59:43 8.37 -0.01 256 214271 卖盘
14:59:37 8.38 0.01 7 5866 买盘
14:59:33 8.37 -- 311 260306 卖盘
文件名称格式为: sh600001_成交明细_2008_01_02
股票代码信息只在文件名中反映。
将买卖笔数以及股票代码和交易日信息输出到文件中:
for file in `ls *明细*`; do
#统计每个交易日的买笔数:
b=`grep "买" $file | wc -l`
#统计每天的卖笔数:
s=`grep "卖" $file | wc -l`
echo $file\_$b\_$s | awk -F_ '{print substr($1,3,6),$3,$4,$5,$6,$7}' >> bsdata
end
对第3步的补充(既统计买卖单笔数,也统计买卖单的交易量和交易额)——2011.7.7
#!/bin/bash
for f in `ls sh*`;do
b=`awk 'BEGIN{x=0;y=0;z=0} $6~/买/{x+=1;y+=$4;z+=$5} END{print x"_"y"_"z}' $f`
s=`awk 'BEGIN{x=0;y=0;z=0} $6~/卖/{x+=1;y+=$4;z+=$5} END{print x"_"y"_"z}' $f`
echo $f"_"$b"_"$s|awk -F_ '{print substr($1,3,6),$3,$4,$5,$6,$9,$7,$10,$8,$11}'>>bs0809
done