从新浪财经上下载交易明细数据并统计每天的买卖笔数(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 aria2

cd到下载目标文件夹,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 *明细*`; do
newfile=`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;
done

3、提取各只股票买卖交易数据对,并存储到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

posted @ 2011-07-06 11:04  秋天掰穗人  阅读(1469)  评论(0编辑  收藏  举报