今天想查一下ETF历史行情数据,用于分析各值ma之间的关系(获取数据并存到自己的数据库是分析的第一步),找了很久,有如下几条:

都不是想要的。

然后一想,为什么不是官网查呢?于是就来到了中证网http://www.cs.com.cn/

获取etf历史行情数据

300ETF

  • 简单信息(可从天天基金网查看) 2012-05-04 基金经理:柳军 类型:ETF-场内 管理人:华泰柏瑞基金 资产规模:457.48亿元
  • 访问页面 http://stockdata.cs.com.cn/qcenter/new/stock-exponent.html?en_prod_code=510300.SS时打开F12,点Network,然后点“日K”,此时会请求数据,url是 http://zzw.hsmdb.com/iwin_zzbweb-webapp/quote/v1/kline?get_type=range&prod_code=510300.SS&candle_period=6&fields=open_px,high_px,low_px,close_px,business_amount 发现返回的数据是按天给的。

500ETF

同上。http://stockdata.cs.com.cn/qcenter/new/stock-exponent.html?en_prod_code=510500.SS

均线

5日均线(MA5)

定义:最近连续5个交易日收盘价之和÷5。

如上页面看300ETF时可以看到有个js是http://zzw.hsmdb.com/iwin_zzbweb-webapp/1.0.32/js/chart/kline_chart_hs.js,在里面搜索MA5Array,发现有段代码是

if(i>=4){
    var ma5=0.00;
    for( var j=0;j<5;j++){
        ma5+=parseFloat(data[i-j][4]);
    }
    MA5Array.push([
        parseInt(dateUTC), // the date
        parseFloat(ma5/5)
    ]);
}

即是来计算ma5的。

同里可以计算出ma10/ma20/ma60。(顺带说一句,求ma值的这个方法可以提取一下的)

function ma(data, n, dateUTC) {
    if(i>=n){
        var ma=0.00;
        for( var j=0;j<n;j++){
            ma+=parseFloat(data[i-j][4]);
        }
        MA5Array.push([
            parseInt(dateUTC), // the date
            parseFloat(ma/n)
        ]);
    }
}

如上是纯手写,可能有误。