获取历史K线数据的几个方法

时间:2024-03-08 17:34:42

1、通过已有的股票交易软件下载数据,如果他们是开源结构的,就可以解析他们的K线数据。

2、在互联网上抓取数据

int iStockCode;
CString strUrl;

通过OpenUrl、Read读取网页数据

1)从163下载K线数据

//fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP

if (iStockCode >= 600000)
{
strUrl.Format(L"http://quotes.money.163.com/service/chddata.html?code=0%06d&start=%d&end=%d&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;VOTURNOVER;VATURNOVER", iStockCode, iCurStart, iCurEnd);
}
else
{
strUrl.Format(L"http://quotes.money.163.com/service/chddata.html?code=1%06d&start=%d&end=%d&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;VOTURNOVER;VATURNOVER", iStockCode, iCurStart, iCurEnd);
}

数据内容:获取的是一个csv文件,直接读取到buffer里面即可

日期,股票代码,名称,收盘价,最高价,最低价,开盘价,前收盘,成交量,成交金额
2014-03-28,\'600000,浦发银行,9.67,9.92,9.6,9.64,9.69,235609623,2299182855.0
2014-03-27,\'600000,浦发银行,9.69,9.94,9.48,9.53,9.58,310183453,3020967368.0

用boost库进行字符串分割,分割string为\n,分割后对每个Item进行逗号分割,然后依次处理即可。

163下载的数据,包含非交易日的Item(Amount = 0),过滤掉。

2)从和讯网下载数据

if (iStockCode >= 600000)
{
strUrl.Format(L"http://flashquote.stock.hexun.com/Quotejs/DA/1_%06d_DA.html",iStockCode);
}
else
{
strUrl.Format(L"http://flashquote.stock.hexun.com/Quotejs/DA/2_%06d_DA.html",iStockCode);
}

数据内容:

refreshDataStr(\'600000\',\'1\',\'DA\',\'[[19991110,10.00,29.50,29.80,27.00,27.75,174085055,4859102435],[19991111,27.75,27.58,28.38,27.53,27.71,29403491,821582199],[19991112,27.71,27.86,28.30,27.77,28.05,15007963,421591623],

...

[20140326,9.75,9.78,9.83,9.51,9.58,188654730,1813592755],[20140327,9.58,9.53,9.94,9.48,9.69,310183453,3020967368],[20140328,9.69,9.64,9.92,9.60,9.67,235609623,2299182855]]\');

取 \'[[ 和 ]]\' 之间的string,进行],[的字符串分割,形成VecString,对每个Item String进行逗号分割,获取【交易日期、昨收盘、开盘、最高、最低、最新价、成交量、成交额】等数据,自己去存储吧。