本帖最后由 gaoyang9992006 于 2017-7-30 20:36 编辑
本版主很好奇,MATLAB这么牛X能用于炒股吗,一查还真可以。
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做科学分析统计工作的威力就发挥出来了。
均值方差的买卖交易系统的源代码稍后发布出来。
|