有了前几天的数据准备,那让我们看一下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. NFS共享服务

    一.网络文件系统共享服务 NFS( Network File System,网络文件系统 )是一种基于TCP/IP传输的网络文件系统协议,最初由SUN公司开发,通过使用NFS协议,客户机可以像访问本地 ...

  2. php-elasticsearch bulk批量插入数据

    1.单条插入 <?php include '../vendor/Elasticsearch/autoload.php'; $a['hosts'] = array( #需要用户名时 http:// ...

  3. 2016级算法第三次上机-D.双十一的抉择

    915 双十一的抉择 思路 中等题.简化题目:一共n个数,分成两组,使得两组的差最接近0,就是说要使两组数都尽可能的接近sum/2. 思路还是很混乱的,不知道如何下手,暴力也挺难的,还不能保证对.想一 ...

  4. list排序问题

    用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: /*** 根据order对User排序*/public class User ...

  5. UGUI Slider的onValueChanged事件

    在本文,你将学到如何将UGUI Slider的onValueChanged事件进行统一管理. using System; using UnityEngine; using UnityEngine.UI ...

  6. lua-redis-parser module

    https://github.com/openresty/lua-redis-parser 此模块主要是处理redis请求和响应的. local parser = require "redi ...

  7. vue中的坑 --- 锚点与查询字符串

    在vue中,由于是单页面SPA,所以需要使用锚点来定位,在vue的官方文档中提到过也可以不使用锚点的情况,就是在vue-router中使用history模式,这样,在url中就不会出现丑陋的#了,但是 ...

  8. centos7 配置php-fpm

    1.复制相应的文件cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.confcp /usr/local/p ...

  9. Git学习系列之经典的Git开发过程

     前言 Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上 ...

  10. Kafka 0.9 新特性

    Kafka发布0.9了,这一重磅消息,让小伙伴们激动不已,来看看这个版本有哪些值得关注的地方吧! 一.安全特性 在0.9之前,Kafka安全方面的考虑几乎为0,在进行外网传输时,只好通过Linux的防 ...