有了前几天的数据准备,那让我们看一下7月份的股市是牛市还是熊市呢?

牛市和熊市主要就看股票的涨跌分布情况,虽然我们看大盘数据,但是不过中石油占的A股市值太大了,并且中石油95%的股票都是大股东控制的相当于非流通的股票。

我们这里看一下每天的股票涨跌数量占总的可交易股票数量的百分比。我们按照每涨跌1%为一个区间进行划分。

首先我们写一个存储过程,计算每天的股票涨跌情况。

CREATE PROCEDURE [dbo].[GetDistribution]
-- Add the parameters for the stored procedure here
@date smalldatetime
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON; declare @days int
set @days=(select COUNT(*) from DayData Where 日期=@date) INSERT INTO dbo.Distribution
select @date AS 日期,* from
(select COUNT(*)*1.0/@days 幅度_9 from dbo.DayData
where 日期=@date AND 涨跌幅<-9) a,
(select COUNT(*)*1.0/@days 幅度_9_8 from dbo.DayData
where 日期=@date AND 涨跌幅>-9 AND 涨跌幅<-8) b,
(select COUNT(*)*1.0/@days 幅度_8_7 from dbo.DayData
where 日期=@date AND 涨跌幅>-8 AND 涨跌幅<-7) c,
(select COUNT(*)*1.0/@days 幅度_7_6 from dbo.DayData
where 日期=@date AND 涨跌幅>-7 AND 涨跌幅<-6) d,
(select COUNT(*)*1.0/@days 幅度_6_5 from dbo.DayData
where 日期=@date AND 涨跌幅>-6 AND 涨跌幅<-5) e,
(select COUNT(*)*1.0/@days 幅度_5_4 from dbo.DayData
where 日期=@date AND 涨跌幅>-5 AND 涨跌幅<-4) f,
(select COUNT(*)*1.0/@days 幅度_4_3 from dbo.DayData
where 日期=@date AND 涨跌幅>-4 AND 涨跌幅<-3)g,
(select COUNT(*)*1.0/@days 幅度_3_2 from dbo.DayData
where 日期=@date AND 涨跌幅>-3 AND 涨跌幅<-2)h,
(select COUNT(*)*1.0/@days 幅度_2_1 from dbo.DayData
where 日期=@date AND 涨跌幅>-2 AND 涨跌幅<-1)i,
(select COUNT(*)*1.0/@days 幅度_10 from dbo.DayData
where 日期=@date AND 涨跌幅>-1 AND 涨跌幅<0)j,
(select COUNT(*)*1.0/@days 幅度01 from dbo.DayData
where 日期=@date AND 涨跌幅>0 AND 涨跌幅<1)k,
(select COUNT(*)*1.0/@days 幅度12 from dbo.DayData
where 日期=@date AND 涨跌幅>1 AND 涨跌幅<2)l,
(select COUNT(*)*1.0/@days 幅度23 from dbo.DayData
where 日期=@date AND 涨跌幅>2 AND 涨跌幅<3)m,
(select COUNT(*)*1.0/@days 幅度34 from dbo.DayData
where 日期=@date AND 涨跌幅>3 AND 涨跌幅<4)n,
(select COUNT(*)*1.0/@days 幅度45 from dbo.DayData
where 日期=@date AND 涨跌幅>4 AND 涨跌幅<5)o,
(select COUNT(*)*1.0/@days 幅度56 from dbo.DayData
where 日期=@date AND 涨跌幅>5 AND 涨跌幅<6)p,
(select COUNT(*)*1.0/@days 幅度67 from dbo.DayData
where 日期=@date AND 涨跌幅>6 AND 涨跌幅<7)q,
(select COUNT(*)*1.0/@days 幅度78 from dbo.DayData
where 日期=@date AND 涨跌幅>7 AND 涨跌幅<8)r,
(select COUNT(*)*1.0/@days 幅度89 from dbo.DayData
where 日期=@date AND 涨跌幅>8 AND 涨跌幅<9)s,
(select COUNT(*)*1.0/@days 幅度9 from dbo.DayData
where 日期=@date AND 涨跌幅>9)t
END

然后我们统计一下今年的股票的分布情况,写入一个表中,代码如下:

declare cur Cursor scroll for
SELECT distinct 日期 FROM [dbo].[DayData]
open cur;
declare @date smalldatetime;
while @@FETCH_STATUS=0
begin
fetch next from cur into @date
exec dbo.GetDistribution @date
end
close cur
deallocate cur

接下来我们就要编写一个绘制柱状图的小工具啦,这里我们直接用.Net 的Chart控件,在VisualStudio 数据控件组中就有。

        var xName = new String[] { "-9", "-8", "-7", "-6", "-5", "-4", "-3", "-2", "-1", "", "", "", "", "", "", "", "", "", "", "" };
var yValue=new Double[];
string connString = "Data Source=.;Initial Catalog=Stock;Integrated Security=True";
var list = new List<String>();
using (SqlConnection connection = new SqlConnection(connString))
{
connection.Open();
String SQL = "select distinct CONVERT(varchar(10),日期,23) from dbo.DayData";
SqlCommand CMD = new SqlCommand(SQL, connection);
SqlDataReader reader = CMD.ExecuteReader();
while (reader.Read())
{
list.Add(reader[].ToString().Trim());
}
} foreach (var date in list)
{
using (SqlConnection connection = new SqlConnection(connString))
{
connection.Open();
String SQL = "select * from dbo.Distribution where 日期='"+date+"'";
SqlCommand CMD = new SqlCommand(SQL, connection);
SqlDataReader reader = CMD.ExecuteReader();
while (reader.Read())
{
for (int i = ; i < ;i++ )
{
yValue[i] = Convert.ToDouble(reader[i+]);
}
}
}
Chart1.Series["Series1"].Points.DataBindXY(xName, yValue);
Chart1.SaveImage(@"C:\Users\20060737\Documents\Visual Studio 2013\WebSites\Distribution\"+date+".png");
}

这样我们就得到了每天的股票分布图,大家来看一下7月份的股票涨跌分布吧。

最左边代表的是下跌超9%的股票数占A股可交易股票数的比例,接下来是-8%,-7%直至上涨超9%的股票数量。

大家看了这张图,肯定和我一样不由得感叹,A股真是太刺激了!

程序员学炒股(6) 让我们来看一下7月份A股的表现的更多相关文章

  1. .Net程序员学用Oracle系列(11):系统函数(下)

    1.聚合函数 1.1.COUNT 函数 1.2.SUM 函数 1.3.MAX 函数 1.4.MIN 函数 1.5.AVG 函数 2.ROWNUM 函数 2.1.ROWNUM 函数简介 2.2.利用 R ...

  2. .Net程序员学用Oracle系列(15):DUAL、ROWID、NULL

    1.DUAL 表 2.ROWID 类型 2.1.利用 ROWID 查询数据 2.2.利用 ROWID 更新数据 3.NULL 值 3.1.NULL 与空字符串 3.2.NULL 与函数 3.3.NUL ...

  3. .Net程序员学用Oracle系列(8):触发器、作业、序列、连接

    1.触发器 2.作业 2.1.作业调度功能和应用 2.2.通过 DBMS_JOB 来调度作业 3.序列 3.1.创建序列 3.2.使用序列 & 删除序列 4.连接 4.1.创建连接 4.2.使 ...

  4. 程序员学点xx 之 Redis

    程序员学点xx 之 Redis 概述 其实程序员也要和操作系统打交道, 比如最常见的,部署自己电脑上的开发环境. 当然有时某些牛人, 觉得运维或基础部门的同事不够给力, 亲自上手部署服务器或线上环境, ...

  5. .Net程序员学用Oracle系列(1):导航目录

    本人从事基于 Oracle 的 .Net 企业级开发近三年,在此之前学习和使用的都是 (MS)SQL Server.未曾系统的了解过 Oracle,所以长时间感到各种不习惯.不方便.怪异和不解,常会遇 ...

  6. .Net程序员学用Oracle系列(2):准备测试环境

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.创建说明 1.1.为什么要创建的测试环境? 1.2.了解 Oracle 实例的默认用户 2.创建环境 2.1.创建基本环境 ...

  7. .Net程序员学用Oracle系列(6):表、字段、注释、约束、索引

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.表 1.1.创建表 1.2.修改表 & 删除表 2.字段 2.1.添加字段 2.2.修改字段 & 删除字段 ...

  8. .Net程序员学用Oracle系列(7):视图、函数、过程、包

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.视图 1.1.创建视图 2.函数 2.1.创建函数 2.2.调用函数 3.过程 3.1.创建过程 3.2.调用过程 4.包 ...

  9. .Net程序员学用Oracle系列(8):触发器、任务、序列、连接

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.触发器 1.1.创建触发器 1.2.禁用触发器 & 启用触发器 & 删除触发器 2.任务 2.1.DBMS_ ...

随机推荐

  1. linux开始之旅-01 linux需要知道的这几位

    首先介绍几个人,没有这几个人就没有linux. 第一个:肯·汤普逊(左)和丹尼斯·里奇(右)  ------ C语言之父   ------学计算机的人都应该认识吧,计算机学院楼道里面都会有这两位. 美 ...

  2. java多线程那点事

    屌丝程序员们对自己的技术能力总是毫不掩饰的高调,更有甚者每当完成一个简单的功能或算法实现,恨不得从工位上跳起来,生怕谁不知道一样,心情能理解,但个人完全鄙视这种行为.说到底,大家日常的coding,大 ...

  3. 傻瓜式学Python3——列表

    前言: 好久不见,突然发觉好久没写博客了,最近迷上了 Python 无法自拔,了解了一下,Python 简单易学,尤其是接触过java的人,入门 Python 更是门槛极低,本着学习记录的原则,边学习 ...

  4. SAP生产订单各种日期的计算说明

    生产订单各种日期的计算说明 基本日期.已计划的.确认的日期,介绍一下这些日期的作用和计算方法: 首先我们来介绍一下基本日期: 基本开始日期:表示订单的开始日期 基本完成日期:表示订单的完成日期 我们在 ...

  5. Go语言fmt包详解

    格式化输出函数 fmt包含有格式化I/O函数,类似于C语言的printf和scanf.格式字符串的规则来源于C,但更简单一些 1.print和println方法 print输出给定的字符串,如果是数值 ...

  6. 2019.4.2 HTML相关

    HTML页面的基本结构 html标签 页面的设置和文件的导入(页面标题) 要显示在页面上的标签 标签 h1---h6:一到六级标题 hr:分割线 br:换行 p:段落 em:斜体 strong:加粗 ...

  7. Storm个人学习总结

    https://www.jianshu.com/p/c7fba7d6a24d https://www.cnblogs.com/peak-c/p/6297794.html https://blog.cs ...

  8. vue-cli 启动过项目步骤

    一. 安装 node.js 安装完成后,可以命令行工具中输入 node -v 和 npm -v,如果能显示出版本号,就说明安装成功. 二.安装webpack npm install webpack - ...

  9. PHP输出毫秒时间戳

    代码: <?php list($msec, $sec) = explode(' ', microtime()); $msectime = (float)sprintf('%.0f', (floa ...

  10. SD341X-SD343H蜗轮传动伸缩蝶阀厂家,SD341X-SD343H蜗轮传动伸缩蝶阀价格 - 专题栏目 - 无极资讯网

    无极资讯网 首页 最新资讯 最新图集 最新标签   搜索 SD341X-SD343H蜗轮传动伸缩蝶阀 无极资讯网精心为您挑选了(SD341X-SD343H蜗轮传动伸缩蝶阀)信息,其中包含了(SD341 ...