f1.py

# -*- coding: utf-8 -*-
import sqlalchemy
import tushare
import pandas
import socket
import struct
import matplotlib.pyplot as Plot
from matplotlib.finance import candlestick_ohlc as Drawk
from matplotlib.pylab import mpl
########################################################################
class Myclass:
""""""
#----------------------------------------------------------------------
def __init__(self, User = 'sa', Password = '', Dsn = 'XiTongDSN', Host = '192.168.1.3', Port = 12345):
""" sql server """
self.User = User
self.Password = Password
self.Dsn = Dsn
self.Engine = sqlalchemy.create_engine('mssql+pyodbc://'+self.User+':'+self.Password+'@'+self.Dsn)
""" socket """
self.Host = Host
self.Port = Port
#----------------------------------------------------------------------
def Get_url_data(self):
""" codelist """
Codelist = pandas.DataFrame((tushare.get_today_all())['code'])
Codelist = Codelist.sort(columns = 'code', ascending = True)
Codelist.to_sql('codelist', self.Engine, if_exists = 'replace', index = False)
""" stockdata """
for i in range(0, len(Codelist)):
Stockdata = tushare.get_h_data(Codelist['code'][i])
Index = list(Stockdata['open'].index)
Stockdata['date'] = pandas.Series(Index, Index)
Stockdata = Stockdata.sort_values(by = 'date', ascending = True)
Stockdata.to_sql(Codelist['code'][i], self.Engine, if_exists = 'replace', index = False)
#----------------------------------------------------------------------
def Get_sql_data(self, Code = ''):
""" sql server """
Connection = self.Engine.connect()
Stockdata = pandas.read_sql_table(Code, Connection)
Connection.close()
return Code, Stockdata
#----------------------------------------------------------------------
def Run_socket_server(self):
""" socket server """
Socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Socket.bind((self.Host, self.Port))
Socket.listen(5)
Code, Stockdata = self.Get_sql_data()
I = list(Stockdata['date'].index)
O = Stockdata['open']
H = Stockdata['high']
L = Stockdata['low']
C = Stockdata['close']
V = Stockdata['volume']
i = 0
while True:
Connection, Address = Socket.accept()
if Connection.recv(1024) == b'connect' and i < len(I):
Connection.send(struct.pack('6si5f', Code.encode('utf-8'), I[i], O[i], H[i], L[i], C[i], V[i]))
i += 1
else:
Connection.close()
Socket.close()
#----------------------------------------------------------------------
def Run_socket_client(self, Message = b'connect'):
""" socket client """
Socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Socket.connect((self.Host, self.Port))
Socket.send(Message)
Code, I, O, H, L, C, V = struct.unpack('6si5f', Socket.recv(1024)[:32])
Socket.close()
return Code.decode('utf-8'), I, O, H, L, C, V
#----------------------------------------------------------------------
def Plot_figure(self):
""" plot figure """
mpl.rcParams['font.sans-serif'] = ['SimHei']
Figure = Plot.figure(u'由 DengChaohai 制作')
f1 = Figure.add_subplot(3, 4, (1, 7), xlim = [0, 100], xlabel = u'天数', ylabel = u'成交价')
Plot.grid(True)
f2 = Figure.add_subplot(3, 4, (9, 11), xlim = [0, 100], xlabel = u'天数', ylabel = u'成交量')
Plot.grid(True)
f3 = Figure.add_subplot(30, 4, 8, ylim = [0, 0], xticklabels = [], yticklabels = [])
Plot.grid(True)
f4 = Figure.add_subplot(30, 4, 16, ylim = [0, 0], xticklabels = [], yticklabels = [])
Plot.grid(True)
f5 = Figure.add_subplot(30, 4, 24, ylim = [0, 0], xticklabels = [], yticklabels = [])
Plot.grid(True)
f6 = Figure.add_subplot(30, 4, 32, ylim = [0, 0], xticklabels = [], yticklabels = [])
Plot.grid(True)
f7 = Figure.add_subplot(30, 4, (40, 120))
Plot.grid(True)
Quotes = []
Index = []
Price = []
TRUE = True
while TRUE:
Code, I, O, H, L, C, V = self.Run_socket_client()
Index.append(I)
Price.append((C + H + L + C) / 4)
Quotes.append((I, O, H, L, C, V))
Drawk(f1, Quotes, width = 0.5, colorup = 'g', colordown = 'r')
f1.plot(Index, Price, 'c')
f1.set_title(u'股票代码 @ ' + Code, loc = 'left', color = 'b')
f2.bar(I, V, width = 0.5, color = 'c', edgecolor = 'c')
f2.set_title(u'当前成交量 @ ' + str(V), loc = 'left', color = 'b')
f3.set_title(u'当前开盘价 @ ' + str(O), loc = 'left', color = 'b')
f4.set_title(u'当前最高价 @ ' + str(H), loc = 'left', color = 'b')
f5.set_title(u'当前最低价 @ ' + str(L), loc = 'left', color = 'b')
f6.set_title(u'当前收盘价 @ ' + str(C), loc = 'left', color = 'b')
f7.plot(Index, Price, 'r')
f7.set_title(u'自动化交易 @ ' + str(Price[I]), loc = 'left', color = 'r')
Plot.pause(0.01)
if I > 100:
TRUE = False
self.Run_socket_client(b'disconnect')

f2.py

# -*- coding: utf-8 -*-
import f1
F1 = f1.Myclass()
F1.Run_socket_server()

f3.py

# -*- coding: utf-8 -*-
import f1
F1 = f1.Myclass()
F1.Plot_figure()

Python socket编程之八:阶段性总结的更多相关文章

  1. Python Socket 编程——聊天室示例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...

  2. python/socket编程之粘包

    python/socket编程之粘包 粘包 只有TCP有粘包现象,UDP永远不会粘包. 首先需要掌握一个socket收发消息的原理 发送端可以是1k,1k的发送数据而接受端的应用程序可以2k,2k的提 ...

  3. PYTHON SOCKET编程简介

    原文地址: PYTHON SOCKET编程详细介绍   Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 Soc ...

  4. python socket编程笔记

    用python实现一个简单的socket网络聊天通讯 (Linux --py2.7平台与windows--py3.6平台) 人生苦短之我用Python篇(socket编程) python之路 sock ...

  5. [Python_7] Python Socket 编程

    0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*- "&q ...

  6. Python Socket 编程示例 Echo Server

    简评:我们已经从「Python Socket 编程概览」了解了 socket API 的概述以及客户端和服务器的通信方式,接下来让我们创建第一个客户端和服务器,我们将从一个简单的实现开始,服务器将简单 ...

  7. Python Socket 编程——聊天室演示样例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和client的代码了解主要的 Python Socket 编程模型.本文再通过一个样例来加强一下对 Socket ...

  8. python socket编程入门(编写server实例)+send 与sendall的区别与使用方法

    python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...

  9. 第九章:Python高级编程-Python socket编程

    第九章:Python高级编程-Python socket编程 Python3高级核心技术97讲 笔记 9.1 弄懂HTTP.Socket.TCP这几个概念 Socket为我们封装好了协议 9.2 cl ...

随机推荐

  1. Android WebView 302斗争之旅

    一.背景 越来越多的业务接入,项目内多多少少会出现几个H5页面,只是单纯的提供WebView容器接入H5页面根本满足不了需求,他们需要登录态,需要制定协议控制Native的导航栏,或者需要JsBrid ...

  2. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    转载:http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...

  3. linux memcached安装

    准备安装包: libevent-2.0.21-stable.tar.gz  //Memcached服务端的依赖包 memcached-1.4.29.tar.gz   //Memcached服务端 li ...

  4. 让你少走弯路的搭建树莓派的Net与NodeJS运行环境

      树莓派是当前最火的嵌入计算平台没有之一,树莓派可以给我们无数的想象,树莓派的高性能.低功耗.低成本.可扩展性(最新的树莓派原生支持WIFI和蓝牙,这功能太赞了)深受大家的喜爱.虽然树莓派到目前为止 ...

  5. vim快捷键

    #vim  filename :scriptname //查看vim加载了哪些脚本 :set nu //设置行号 :set tabstop=4 //设置一个tab为4个空格长度 :set ai //设 ...

  6. I2C子系统之驱动SSD1306 OLED

    理解I2C设备驱动框架,主要围绕四个结构体去分析就容易了. struct i2c_algorithm:提供I2C协议的实现的操作,如:master_xfer实现数据收发的最基本方法. struct i ...

  7. 国内优秀的Android资源

    因为一些大家都知道的原因,Android很多官方出品的优秀开发资源在国内无法访问. 国内的同行们对此也做出了很多努力,有很多朋友通过各种手段把很多优秀的资源搬运到了国内,为国内android开发者提供 ...

  8. Spring Mock

    今天看别人的测试代码,发现有  MockMvc.MockHttpServletRequest.MockHttpServletResponse ,不知道是干啥的,百度下下才知道  Mock这个东东. 下 ...

  9. jdbc java数据库连接 8)防止sql注入

    回顾下之前jdbc的开发步骤: 1:建项目,引入数据库驱动包 2:加载驱动 Class.forName(..); 3:获取连接对象 4:创建执行sql语句的stmt对象;  写sql 5:执行sql ...

  10. Appium+python的一个简单完整的用例

    最近一直在忙,终于有时间来整理一下,传一个简单的用例,运行之后可以看到用例的报告,希望对大家有帮助. HTMLTestRunner这个包网上有很多,大家可以自己下载. 1 import unittes ...