程序员学炒股(6) 让我们来看一下7月份A股的表现
有了前几天的数据准备,那让我们看一下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股的表现的更多相关文章
- .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 ...
- .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 ...
- .Net程序员学用Oracle系列(8):触发器、作业、序列、连接
1.触发器 2.作业 2.1.作业调度功能和应用 2.2.通过 DBMS_JOB 来调度作业 3.序列 3.1.创建序列 3.2.使用序列 & 删除序列 4.连接 4.1.创建连接 4.2.使 ...
- 程序员学点xx 之 Redis
程序员学点xx 之 Redis 概述 其实程序员也要和操作系统打交道, 比如最常见的,部署自己电脑上的开发环境. 当然有时某些牛人, 觉得运维或基础部门的同事不够给力, 亲自上手部署服务器或线上环境, ...
- .Net程序员学用Oracle系列(1):导航目录
本人从事基于 Oracle 的 .Net 企业级开发近三年,在此之前学习和使用的都是 (MS)SQL Server.未曾系统的了解过 Oracle,所以长时间感到各种不习惯.不方便.怪异和不解,常会遇 ...
- .Net程序员学用Oracle系列(2):准备测试环境
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.创建说明 1.1.为什么要创建的测试环境? 1.2.了解 Oracle 实例的默认用户 2.创建环境 2.1.创建基本环境 ...
- .Net程序员学用Oracle系列(6):表、字段、注释、约束、索引
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.表 1.1.创建表 1.2.修改表 & 删除表 2.字段 2.1.添加字段 2.2.修改字段 & 删除字段 ...
- .Net程序员学用Oracle系列(7):视图、函数、过程、包
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.视图 1.1.创建视图 2.函数 2.1.创建函数 2.2.调用函数 3.过程 3.1.创建过程 3.2.调用过程 4.包 ...
- .Net程序员学用Oracle系列(8):触发器、任务、序列、连接
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.触发器 1.1.创建触发器 1.2.禁用触发器 & 启用触发器 & 删除触发器 2.任务 2.1.DBMS_ ...
随机推荐
- [ActionScript 3.0] AS3 弹性运动
package com.views { import flash.display.Sprite; import flash.events.Event; import flash.geom.Point; ...
- python 数据分析 文章集锦
文本分析: re&jieba模块 使用 正则表达式 和 中文处理模块jieba 原文地址:https://www.cnblogs.com/minutesheep/p/10357209.htm ...
- Deeplearning学习
Deeplearning 概念 Deep Learning: 观点: 认为AI是最新的电力,大约在一百年前,我们社会的电气化改变了每个主要行业,从交通运输行业到制造业.医疗保健.通讯等方面,我认为 ...
- 提交app时候遇到IDFA警告
1.最近提交app时候遇到如下问题,解决方案: Everything has come to its usual state now. Simply upload your binary as you ...
- MySQL:管理MySQL、事务(三)
干货: 命令行程序mysql实际上是MySQL客户端,真正的MySQL服务器程序是mysqld,在后台运行. 数据库事务具有ACID特性,用来保证多条SQL的全部执行. 五.MySQL 通过mysql ...
- excel批量中英翻译单元格
英 ==> 中 =FILTERXML(WEBSERVICE("http://fanyi.youdao.com/translate?&i="&H1&&q ...
- BASIC CONCEPTS ABOUT 4G
http://en.wikipedia.org/ 原版的维基,远比我认识的强大 http://www.3gpp.org/ http://www.ietf.org/ http://www.wiresha ...
- Java 高并发解决方案(电商的秒杀和抢购)
转载:https://blog.csdn.net/icangfeng/article/details/81201575 电商的秒杀和抢购,对我们来说,都不是一个陌生的东西.然而,从技术的角度来说,这对 ...
- SVM面经
原始问题与对偶问题的关系 1,目标函数对原始问题是极大化,对对偶问题则是极小化 2,原始问题目标函数中的收益系数(优化函数中变量前面的系数)是对偶问题约束不等式中的右端常数,而原始问题约束不等式中的右 ...
- DP Intro - poj 1947 Rebuilding Roads
算法: dp[i][j]表示以i为根的子树要变成有j个节点的状态需要减掉的边数. 考虑状态转移的时候不考虑i的父亲节点,就当不存在.最后统计最少减去边数的 时候+1. 考虑一个节点时,有两种选择,要么 ...