码迷,mamicode.com
首页 > 其他好文 > 详细

上证指数

时间:2016-05-24 16:30:17      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

1.数据处理模块

  • 保存为 sh.py,保存位置 …\Lib\site-packages,这样以后调用直接 import sh.py 即可
# -*- coding: utf-8 -*-
# sh.py
class sh:
    # 本地数据库连接信息初始化,用 pyodbc 连接只需三个信息
    def __init__(self, user=sa, password=123456, dsn=XiTongDSN):
        self.user = user
        self.password = password
        self.dsn = dsn
        import sqlalchemy
        # 建立数据库连接引擎,存取数据库需用到
        self.engine = sqlalchemy.create_engine(mssql+pyodbc://+self.user+:+self.password+@+self.dsn)
    # 从 tushare.org 下载上证指数 sh 数据
    def get_url(self):
        import tushare
        import pandas
        dataframe = tushare.get_hist_data(sh)
        # 由于 dataframe 存入 SQL Server 时 index 会报错,那就灵活处理下
        # 把 index 复制成列 date 插到最后一列
        index = list(dataframe[open].index)
        dataframe[date] = pandas.Series(index, index)
        pandas.DataFrame(dataframe, index)
        # 我只需列(开盘,最高,收盘,最低,成交量,日期),其他列统统删掉好了
        dataframe.drop([price_change, p_change, ma5, ma10, ma20, v_ma5, v_ma10, v_ma20], axis=1, inplace=True)
        # 将处理完的 dataframe 存入到本地数据库
        dataframe.to_sql(sh, self.engine, if_exists=replace, index=False)
    # 调用本地数据库上证指数数据 sh
    def get_sql(self):
        import pandas
        connection = self.engine.connect()
        data = pandas.read_sql_table(sh, connection)
        # 做处理时,由于 date 不连续且无什么意义,直接用计数当 date 用好了
        index = list(data[open].index)
        o = data[open]
        h = data[high]
        c = data[close]
        l = data[low]
        volume = data[volume]
        return index, o, h, c, l, volume
  • 调用 sh.py
# -*- coding: utf-8 -*-
# 清屏
import os
clearscreen = os.system(cls)
# 调用 sh.py 模块
import sh
# 获取 sh 数据,先模块实例化
SH = sh.sh()
‘‘‘
# 下载数据到本地数据库
SH.get_url()
‘‘‘
# 调取数据库表 sh 数据
index, o, h, c, l, volume = SH.get_sql()

技术分享

2.图形绘制模块

# -*- coding: utf-8 -*-
# 清屏
import os
clearscreen = os.system(cls)
# 调用模块
import sh
# 获取 sh 数据,先模块实例化
SH = sh.sh()
‘‘‘
# 下载数据到本地数据库
SH.get_url()
‘‘‘
# 调取数据库表 sh 数据
index, o, h, c, l, volume = SH.get_sql()
# 这是暴力的分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 载入绘图模块
import matplotlib.pyplot as plot
from matplotlib.finance import candlestick_ochl
# 根据需要按列合并成一个
quotes = []
for i in range(0, len(index)):
    quotes.append((index[i],
                   o[i],
                   c[i],
                   h[i],
                   l[i],
                   volume[i]))
# 获取图表实例
figure = plot.figure(Made by DengChaohai)
# 上图
subplot1 = figure.add_subplot(211,
                           title=Index of Shanghai,
                           xlabel=index of date,
                           ylabel=index of Shanghai,
                           xlim=[min(index), max(index)])
plot.grid(True,
          axis=both)
# K 线图
candlestick_ochl(subplot1,
                 quotes,
                 colorup=r,
                 colordown=g)
# 成交量 bar 图,为了好看点,进行了缩放处理
b11 = subplot1.bar(left=index,
                height=[i*100/min(volume) for i in volume],
                bottom=0,
                width=1,
                color=c,
                edgecolor=c)

# 下图
subplot2 = figure.add_subplot(212,
                           title=Singal of Buy or Sell,
                           xlabel=index of date,
                           ylabel=index of Shanghai,
                           xlim=[min(index), max(index)])
plot.grid(True,
          axis=both)
# open 线图
subplot2.plot(o,
              g)
# 自定义加权价 weighting price
wp = []
for i in range(0, len(index)):
    wp.append(o[i]*2/7+c[i]*3/7+h[i]/7+l[i]/7)
# weighting price 线图
subplot2.plot(wp,
              r)
# 差价 bar 图,为好看同意进行了缩放
subplot2.bar(left=index,
             height=[(o[i]-wp[i])*10 for i in range(0, len(index))],
             bottom=0,
             width=1,
             color=c,
             edgecolor=c)

技术分享

上证指数

标签:

原文地址:http://www.cnblogs.com/blog-3123958139/p/5523585.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!