怎么调用API接口(怎么调用api接口服务器)
如果想自己编写量化接口,那我们肯定是需要数据源的,而新浪财经可以说是其中一个大家使用比较多的财经数据来源,那我们要怎么实现新浪财经量化接口api的抓取呢?
首先,我们需要知道新浪财经不同数据的api接口,下面小编也直接给到大家:
获取实时行情数据接口,http://hq.sinajs.cn/list=SZ002241,SH601933;
对于股票的k线,我们可以通过下面的url进行获取:http://image.sinajs.cn/…./…/.gif,下面举几个例子:
查看日K线图: http://image.sinajs.cn/newchart/daily/n/SZ002241.gif
分时线的查询: http://image.sinajs.cn/newchart/min/n/SZ002241.gif
日K线查询: http://image.sinajs.cn/newchart/daily/n/SZ002241.gif
周K线查询: http://image.sinajs.cn/newchart/weekly/n/SZ002241.gif
月K线查询: http://image.sinajs.cn/newchart/monthly/n/SZ002241.gif
对于股票的macd等技术指标图,可以通过一下url获取:http://image.sinajs.cn/…./…/.gif,详见如下:
macd: http://image.sinajs.cn/newchart/macd/SZ002241.gif
kdj: http://image.sinajs.cn/newchart/kdj/SZ002241.gif
展开全文
rsi: http://image.sinajs.cn/newchart/rsi/SZ002241.gif
bias: http://image.sinajs.cn/newchart/bias/SZ002241.gif
具体调用api源码如下:
1 <!DOCTYPE html>
2 <head>
3 <title>CGM003</title>
4 <script src="js/libs/jquery-1.11.0.js"></script>
5 <style>
6 body{
7 font-size:13px;
8 }
9 td{
10 padding:1px 2px;
11 border-bottom:1px solid gray;
12 text-align:right;
13 vertical-align:bottom;
14 white-space:nowrap;
15 }
16 .red{
17 color:red;
18 }
19 .green{
20 color:green;
21 }
22 #infoTbl{
23 font-size:15px;
24 }
25 </style>
26 </head>
27 <body>
28 <section>
29 <header>
30 间隔:<input type="number" id="refreshTime" min="100" max="5000" value="1000" />毫秒
31 <span id="refresh" style="cursor:pointer; text-decoration:underline; color:blue;"></span>
32 <span id="lastTime"></span>
33 (字体: <span style="cursor:pointer; text-decoration:underline; color:blue;" onclick="$('#infoTbl').css('font-size','15px');">小</span> <span style="cursor:pointer; text-decoration:underline; color:blue;" onclick="$('#infoTbl').css('font-size','20px');">中</span> <span style="cursor:pointer; text-decoration:underline; color:blue;" onclick="$('#infoTbl').css('font-size','25px');">大</span> <span style="cursor:pointer; text-decoration:underline; color:blue;" onclick="$('#infoTbl').css('font-size','55px');">超</span>)
34 <br />
35 <select id="market">
36 <option value="sh" selected >上海</option>
37 <option value="sz" >深圳</option>
38 </select>
39 代码:
40 <input type="text" size="7" id="code" value='' />
41 <span style="cursor:pointer; text-decoration:underline; color:blue;" onclick="addStock();">添加</span>
42 </header>
43 <article>
44 <table id="infoTbl">
45 </table>
46 </article>
47 </section>
48
49 <script>
50 // prototype of Date to add [format] meathod
51 Date.prototype.format = function(format){
52 var o = {
53 "M+" : this.getMonth()+1, //month
54 "d+" : this.getDate(), //day
55 "h+" : this.getHours(), //hour
56 "m+" : this.getMinutes(), //minute
57 "s+" : this.getSeconds(), //second
58 "q+" : Math.floor((this.getMonth()+3)/3), //quarter
59 "S" : this.getMilliseconds() //millisecond
60 }
61
62 if(/(y+)/.test(format)) {
63 format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
64 }
65
66 for(var k in o) {
67 if(new RegExp("("+ k +")").test(format)) {
68 format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
69 }
70 }
71 return format;
72 };
73 // array remove all
74 Array.prototype.removeAll = function()
75 {
76 while(this.length > 0)
77 this.pop();
78 }
79 // var init
80 var stockList = ["sh000001","sh600461","sh601186","sh601628","sz399001"],
81 rowHtml = "<tr style='color:{%C%};'><td>{%Nm%}</td><td><b>{%Now%}</b></td><td>{%DiffPrice%}</td><td>{%DiffPer%}</td><td>{%Vol%}</td><td style='color:{%HighC%};'>{%High%}</td><td style='color:{%lowC%};'>{%Low%}</td><td>{%delete%}</td><td>{%More%}</td></tr>",
82 nowT,
83 IntervalObj = null,
84 refreshSpan;
85
86 // 不在申请的js Url后加时间
87 $.ajaxSetup({
88 cache: true
89 });
90
91 // init fun
92 $(function(){
93 refreshSpan = $("#refreshTime").val();
94 $("#refresh").html("开始刷新").click(function(e){
95 if(null != IntervalObj){
96 clearInterval(IntervalObj);
97 IntervalObj = null;
98 $(this).html("开始刷新");
99 }else{
100 doRefresh();
101 IntervalObj = setInterval(doRefresh,refreshSpan);
102 $(this).html("停止刷新");
103 }
104 });
105 $("#refresh").click();
106 });
107 function doRefresh(){
108 refreshSpan = $("#refreshTime").val();
109 nowT = new Date().format("yyyyMMddhhmmssSS");
110 $("#infoTbl").html("");
111 for(var i = 0; i < stockList.length; i++){
112 $.getScript('http://hq.sinajs.cn/a='+nowT+'&list=' + stockList[i],callBack1(stockList[i]));
113 }
114 }
115 function callBack1(nm){
116 var goOn = true;
117 eval("if('undefined' == typeof(hq_str_"+nm+")) goOn = false;");
118 if(goOn){
119 //try{
120 eval("var tmpStr = hq_str_"+nm+";");
121 var tmp = tmpStr.split(",");
122 var rowStr = rowHtml;
123 rowStr = rowStr.replace(new RegExp("{%Nm%}", 'g'), tmp[0]);
124 rowStr = rowStr.replace(new RegExp("{%Now%}", 'g'), tmp[3]);
125 rowStr = rowStr.replace(new RegExp("{%C%}", 'g'), (tmp[3]-tmp[2])>0?"red":((tmp[3]-tmp[2])<0?"green":"gray"));
126 rowStr = rowStr.replace(new RegExp("{%DiffPrice%}", 'g'), Math.round((tmp[3]-tmp[2])*100) / 100);
127 rowStr = rowStr.replace(new RegExp("{%DiffPer%}", 'g'), Math.round((tmp[3]-tmp[2])/tmp[2] * 10000) / 100 +"%");
128 rowStr = rowStr.replace(new RegExp("{%Vol%}", 'g'), tmp[8]/100);
129 rowStr = rowStr.replace(new RegExp("{%High%}", 'g'), tmp[4]);
130 rowStr = rowStr.replace(new RegExp("{%HighC%}", 'g'), (tmp[4]>tmp[3])?"red":((tmp[4]<tmp[3])?"green":"gray"));
131 rowStr = rowStr.replace(new RegExp("{%Low%}", 'g'), tmp[5]);
132 rowStr = rowStr.replace(new RegExp("{%LowC%}", 'g'), (tmp[5]>tmp[3])?"red":((tmp[5]<tmp[3])?"green":"gray"));
133 rowStr = rowStr.replace(new RegExp("{%delete%}", 'g'),"<span title='删除' style='cursor:pointer;' οnclick='$(this).parent().parent().remove();delStock(\""+nm+"\")'>删除</span>");
134 //rowStr = rowStr.replace(new RegExp("{%More%}", 'g'), "<img height='100' src='http://image.sinajs.cn/newchart/min/n/"+nm+".gif' />"); // 图片
135 rowStr = rowStr.replace(new RegExp("{%More%}", 'g'),"");
136
137 $("#infoTbl").append(rowStr);
138 $("#lastTime").html((new Date()).format("hh:mm:ss"));
139 //}catch(e){clearInterval(IntervalObj);}
140 }
141 }
142 function delStock(nm){
143 var delIndex = -1;
144 for(var i = 0; i < stockList.length; i++){
145 if(stockList[i]==nm){
146 delIndex = i;
147 break;
148 }
149 }
150 if(delIndex != -1)
151 stockList.splice(delIndex,1);
152 }
153 function addStock(){
154 var delIndex = -1;
155 var cd = $("#market").val() + "" + $("#code").val();
156 for(var i = 0; i < stockList.length; i++){
157 if(stockList[i]==cd){
158 delIndex = i;
159 break;
160 }
161 }
162 if(delIndex == -1){
163 stockList.push(cd);
164 $("#refresh").click().click();
165 console.log(cd);
166 }else{
167 alert("已存在");
168 }
169 }
170 </script>
171 </body>
172 </html>
对于想自己制作新浪财经量化接口的小伙伴,小编最多就帮到这个程度了,大家也可以多研究研究,其实量化接口的数据源也不一定是新浪,东方财富、wind都是不错的选择,大家可以举一反三,多尝试一下不同的api接口效果有什么不同。