matlab无疑是科学计算的强大工具,很少的代码就可以完成非常复杂的功能。这些功能如果用c++实现是难以想象的。
如何利用matlab来进行股票数据分析呢?在前面的文章中,我分析了如何通过股票行情软件下载行情数据来读取。但是这个方法不是很方便,需要人工工作太多,我在海洋部落里看到很多人都在通过计算方式来进行买卖决策,让我又有了进一步工作下去的信心。
kline.c 文件是一个mex c文件,编译出来一个接口,通过该接口 得到日行情数据。详情请参见源代码。如何使用这个编译出来的接口文件呢?请查看stock.m文件。
这个接口文件直接从行情服务器下载数据,非常方便了,可以在matlab中使用很少的代码实现根据决策筛选股票。 由于数据格式是逆向得到的,不便公开,所以网络接口代码就不公开源代码了。
stock.m文件如下:
function ay=stock(code , lday , windowSize)
%clc; windowSize均值窗口长度
%close all;
[kp,hp,lp,sp,vol,tm]=kline(code,lday);%调用mex 接口文件获得日K线行情数据。%其中code问股票代码,lday为取得的数据天数。
% [kp,hp,lp,sp,vol,tm] 为行情数据,最高价,最低价,开盘价,收盘价,量,价
xx=1:lday;
hold off;
subplot(2,2,1); candle(hp',lp',sp',kp');
hold on;
a = filter(ones(1,windowSize)/windowSize,1,sp')';
a(1:5) = a(6);
plot(xx , a ,'r');
plot(xx , tm.*10000./vol./10000 ,'c');
ylabel('价格'); xlabel('红色 收盘均价 ; 品色 均价');
grid on;
subplot(2,2,2);
plot(xx , vol);
ylabel('成交量');
grid on;
ay = sp;
subplot(2,2,3);
plot(diff(sp));
ylabel('价格差分');
grid on;
subplot(2,2,4);
plot(diff(vol));
ylabel('成交量差分');
grid on;
===========
在matlab命令命令窗口中敲入 stock(002159,60,5),即可查看到数据。
其中 002159 --- 股票代码;
60 ---- 取多少天的数据,从当前日子开始向前数60天。
5 ---- 均线平滑窗口。
得到数据了,很简单的就可以做一个均值方差的买卖交易系统。有了数据,matlab做科学分析统计工作的威力就发挥出来了。
均值方差的买卖交易系统的源代码稍后发布出来。
下一步准备接受分笔行情数据,实时监测盘中买卖点。源代码也随后发布。
花了我2天时间,真累。