动态下载 Yahoo 网络数据存入 Microsoft SQL Server 再 Matlab 调用的一个完整例子
% 编程环境: Matlab 2014a, win7 32bit, Microsoft SQL Server 2008r2
%%
% 清屏
clc;
clear all;
close all;
%%
% 链接 yahoo 网站下载日线数据(将以下注释内容另存为 GetYahoocnStockDayData.m)
StockData=GetYahoocnStockDayData(1, 1, 2016, 3, 1, 2016,'002237');
%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%%
%{
%%
% 雅虎数据接口(日线):
% urlread(['http://table.finance.yahoo.com/table.csv?a=0&b=1&c=2012&d=3&e=19&f=2012&s=600000.ss'])
% 函数调用格式(沪深):
% GetYahoocnStockDayData(1, 1, 2016, 3, 1, 2016,'600000')
%%
function StockData=GetYahoocnStockDayData(StartDateM,StartDateD,StartDateY,EndDateM,EndDateD,EndDateY,StockName)
%%
StartDateM=num2str(StartDateM);
StartDateD=num2str(StartDateD);
StartDateY=num2str(StartDateY);
EndDateM=num2str(EndDateM);
EndDateD=num2str(EndDateD);
EndDateY=num2str(EndDateY);
if StockName(1)=='6'
StockName=[StockName,'.ss'];
URL=['http://table.finance.yahoo.com/table.csv?a=',StartDateM,'&b=',StartDateD,'&c=',StartDateY,'&d=',EndDateM,'&e=',EndDateD,'&f=',EndDateY,'&s=',StockName];
StockData=urlread(URL);
elseif StockName(1)=='0'
StockName=[StockName,'.sz'];
URL=['http://table.finance.yahoo.com/table.csv?a=',StartDateM,'&b=',StartDateD,'&c=',StartDateY,'&d=',EndDateM,'&e=',EndDateD,'&f=',EndDateY,'&s=',StockName];
StockData=urlread(URL);
else
disp('调用函数格式错误!');
disp(['调用格式为:',...
'GetYahoocnStockDayData(StartDateM(int),StartDateD(int),StartDateY(int),EndDateM(int),EndDateD(int),EndDateY(int),StockName(string))']);
end
[Date,Open,High,Low,Close,Volume,AdjustedClose]=strread(StockData,'%s%s%s%s%s%s%s','delimiter',',');%由于接受的是一串字符串,需处理
counter=length(Date(:,1));
Date=Date(2:counter);
Open=Open(2:counter);
High=High(2:counter);
Low=Low(2:counter);
Close=Close(2:counter);
Volume=Volume(2:counter);
AdjustedClose=AdjustedClose(2:counter);
StockData=[Date,Open,High,Low,Close,Volume,AdjustedClose];
end
%}
%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%%
% 查询 SQL Server 下指定表
conn=database('ShuJuYuan','PERELMAN','');% 链接源【ODBC - ShuJuYuan】指定库表【SQL Server - ShuJuKu - StockData】
p=ping(conn);% 测试是否成功链接
if p.AutoCommitTransactions% 如果链接成功
curs=exec(conn,'select * from [ShuJuKu].[dbo].[StockData]');% 用于调用成员函数 Message 查询是否存在指定表
if curs.Message%如果数据库ShuJuKu下没有表 StockData ,则返回值非空,则新建表 StockData
sqlquery1='use ShuJuKu';% SQL 语句,选择数据库 ShuJuKu
sqlquery2=['create table StockData('...% SQL 语句,在数据库 ShuJuKu 下新建表 IBM
'D date NOT NULL PRIMARY KEY,'...% 日期不能为空且设置为主键避免数据重复
'O real NULL,'...
'H real NULL,'...
'L real NULL,'...
'C real NULL,'...
'V int NULL,'...
'AdjustedClose real NULL)'];
exec(conn,sqlquery1);
exec(conn,sqlquery2);
else
close(curs);
end
else
disp('数据库链接错误');
end
%%
% 数据写入 SQL Server
counter=length(StockData(:,1));
for i=1:counter
s=['''',cell2mat(StockData(i,1)),'''',',',...% 引用单引号方法(输入 '' 输出 ')
cell2mat(StockData(i,2)),',',...
cell2mat(StockData(i,3)),',',...
cell2mat(StockData(i,4)),',',...
cell2mat(StockData(i,5)),',',...
cell2mat(StockData(i,6)),',',...
cell2mat(StockData(i,7))];
sqlquery6='use ShuJuKu';
sqlquery7=['INSERT INTO StockData(D,O,H,L,C,V,AdjustedClose) VALUES (',s,')'];% 插入数据语句
exec(conn,sqlquery6);
exec(conn,sqlquery7);
end
%%
% 关闭数据库,用完要关闭,良好习惯
close(conn);
%%
% 调用 SQL Server 数据
conn=database('ShuJuYuan','PERELMAN','');
curs=exec(conn,'select * from [ShuJuKu].[dbo].[StockData]');
curs=fetch(curs);
Data=curs.data;
%%
% 展示
Data

%% 展示K线图
d=cell2mat(Data(:,1));
o=cell2mat(Data(:,2));
h=cell2mat(Data(:,3));
l=cell2mat(Data(:,4));
c=cell2mat(Data(:,5));
v=cell2mat(Data(:,6));
adjustedclose=cell2mat(Data(:,7));
%%
% 日期数据
date=datenum(datestr(d));
%%
% K 线图
candle(h,l,c,o,'k',date,'yyyy/mm/dd');
%%
% 个性设置
title('002237.sz-Made by DengChaohai','FontSize',12,'FontWeight','bold','Color','b');
set(gca,'YTick',min(l):0.1:max(h));
grid on;
axis tight;
xlabel('日期','FontSize',12,'FontWeight','bold','Color','b');
ylabel('价格','FontSize',12,'FontWeight','bold','Color','b');
legend('休市','上涨','下跌');
%%
%clcall;

动态下载 Yahoo 网络数据存入 Microsoft SQL Server 再 Matlab 调用的一个完整例子的更多相关文章
- 【转】Microsoft® SQL Server® 2012 Performance Dashboard Reports
http://www.cnblogs.com/shanyou/archive/2013/02/12/2910232.html SQL Server Performance Dashboard Repo ...
- Microsoft SQL Server 数据量大 导入导出 问题汇总
问题一: 今天拿到一份有近百万条数据的Excel要导到数据库里面,我先在本地(2014)用自带Excel,然后生成脚本文件去服务器(2008)上执行:文件SQL打开不了. 解决方法: 用自带的sqlc ...
- Microsoft SQL Server 2008 R2官方中文版(SQL2008下载).rar
Microsoft SQL Server 2008 R2官方中文版(SQL2008下载).rar
- SQL Server 2008教程和Microsoft® SQL Server® 2008 R2 SP2 - Express Edition下载
教程 SQL Server 2008 Tutorialhttp://www.quackit.com/sql_server/sql_server_2008/tutorial/ 数据库下载 Microso ...
- Jmeter—8 连接microsoft sql server数据库取数据
本文以Jmeter 连接microsoft sql server为例. 1 从微软官网下载Microsoft SQL Server JDBC Driver 地址:http://www.microsof ...
- Python下载Yahoo!Finance数据
Python下载Yahoo!Finance数据的三种工具: (1)yahoo-finance package. (2)ystockquote. (3)pandas.
- Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 1 -使用FOR XML返回XML结果集
XML 介绍 <CustomersOrders> <Customer custid="1" companyname="Customer NRZBB&qu ...
- 下载 Microsoft SQL Server JDBC 驱动程序
JDBC 驱动程序中使用 Maven 中心 JDBC 驱动程序可以通过将其添加为依赖项在 POM.xml 文件中使用以下代码添加到 Maven 项目: XML复制 <dependency> ...
- Jmeter入门8 连接microsoft sql server数据库取数据
本文以Jmeter 连接microsoft sql server为例. 1 从微软官网下载Microsoft SQL Server JDBC Driver 地址:http://www.microsof ...
随机推荐
- Linux Linux程序练习七
题目:实现两个程序mysignal.mycontrl,mycontrl给mysignal发送SIGINT信号,控制mysignal是否在屏幕打印“hello”字符串. //捕捉信号 #include ...
- U3D 扩展方法 & Dotween & tolua
using UnityEngine; using System.Collections; using LuaInterface;//tolua 空间引用 using DG.Tweening;//DOT ...
- 使用ajax跨域withCredentials的作用
默认情况下,跨源请求不提供凭据(cookie.HTTP认证及客户端SSL证明等).通过将withCredentials属性设置为true,可以指定某个请求应该发送凭据.如果服务器接收带凭据的请求,会用 ...
- IOS开发之——Masonry 只支持OC,暂不支持swift
前言 1 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-iphone3gs时 ...
- 使用网易云音乐,丢掉QQ音乐吧
我是一个听音乐的重度用户,基本上每天大约有三分之一的时间里我在使用网易云音乐去听音乐.包括工作写代码的时候,跑步的时候,去上班的途中我都去听.首先需要声明的是,在这里我不是故意的去抹黑其他的音乐产品, ...
- WP & Win10开发:实现ListView下拉加载的两种方法
1.通过ListView控件的ContainerContentChanging方法.该方法在列表项被实例化时触发,在列表项最后一个项目实例化的时候触发刷新数据逻辑就可以实现下拉加载了. 代码如下:// ...
- Asp.Net的两种开发方式
来源:http://www.zhidao91.com/asp-net/ 在经过对.Net平台深入的学习以后,我发现很多语言开发动态网站时,它的后台逻辑都差不多是相同的,今天在这里我给大家来聊聊在.Ne ...
- 『随笔』Socket 链接 必须 上下行 同时使用
结论: > Socket 理论上 支持 只上行,或者 只下行. > 心跳包 必须是 上下行的 —— 心跳包请求(上行) - 心跳包响应(下行). > 如果 长时间 只有单向链接(只发 ...
- windows网络编程的一些理论
参考自<VC++深入详解> 这是我在看书时记录下来的东西. 注:下面的Socket其实都应该是socket 第14章网络编程 Socket是连接应用程序与网络驱动程序的桥梁,Socket在 ...
- JavaScript实例---表格隔行变色以及移入鼠标高亮
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...