WWW.WHOOL.NET
前一个datafeed用的是网络接口数据,不过平时用的多的还是一些其他来源的数据,好一点的会整理到数据库中,要不就是MS access或者MS excel,txt格式的数据了,对这些数据进行的输入输出操作,可以采用这些办法:
1.数据库数据,database工具箱。
MATLAB的数据库工具箱的GUI需要在编译窗口运行querybuilder。启动以后可以得到这样的界面:
为了测试的方便使用MSsql建立一个whool!数据库作为测试数据库
建立一个matlab的ODBC的链接到数据库:
测试数据库
使用GUI对数据进行操作,首选选取要连接的数据库,开始我们进行数据的输入再进行输出测试。
在matlab中建立一个whool0的变量作为测试。

对数据库数值进行查询
这个是对数据进行输入的界面,过程大致是一样的,中间有一些选择的条件可以对数据进行过滤。
以上是一个很简单的应用,熟悉以后就可以脱离GUI界面,直接编写m文件了。
下面是一个利用网络读取数据后插入到指定的数据库的代码,以前做的,现在应该是失效了,有兴趣可以看看。
function WhoolTradeHistoryInsertData(line_buff,symbol)
ptr1 = strfind(line_buff, ‘{‘);
ptr2 = strfind(line_buff,’}');
M=length(ptr1)
for j=5:-1:1
daydata0=(line_buff(ptr1(j):ptr2(j)));
ptr3 = strfind(daydata0, ‘:"’);
ptr4 = strfind(daydata0,’",’);
daydata.open=str2double(daydata0(ptr3(1)+2:ptr4(1)-1));
daydata.low=str2double(daydata0(ptr3(2)+2:ptr4(2)-1));
daydata.volume=str2double(daydata0(ptr3(3)+2:ptr4(3)-1));
daydata.high=str2double(daydata0(ptr3(4)+2:ptr4(4)-1));
daydata.close=str2double(daydata0(ptr3(6)+2:ptr4(6)-1));
daydata.adjclose=str2double(daydata0(ptr3(8)+2:ptr4(8)-1));
datestr=daydata0(ptr3(7)+2:ptr4(7)-1);
ptrdate = strfind(datestr,’-');
subyear=str2double(datestr(1:ptrdate(1)-1));
submonth=str2double(datestr(ptrdate(1)+1:ptrdate(2)-1));
subday=str2double(datestr(ptrdate(2)+1:end));
daydata.date = datenum(subyear, submonth, subday)-693960;
update = strcat(‘SELECT max(DATE) FROM WhoolTradeHistoryData.dbo.’,symbol);
conn = database(‘WhoolTradeHistoryData’,”,’password’);
last = exec(conn,update);
last = fetch(last);
lastvalue=cell2mat(last.Data);
if (lastvalue<daydata.date)||isnan(lastvalue)
exdata = {daydata.open,daydata.low,daydata.volume,…
daydata.high,daydata.close,daydata.date,daydata.adjclose}
clear last;
colnames = {‘OPENPRICE’,'LOWPRICE’,'VOLUME’,'HIGHPRICE’,'CLOSEPRICE’,'DATE’,'ADJCLOSEPRICE’}
table= strcat(‘WhoolTradeHistoryData.dbo.’,symbol);
fastinsert(conn,table, colnames, exdata);
end
end
end