Python socket编程之八:阶段性总结
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编程之八:阶段性总结的更多相关文章
- Python Socket 编程——聊天室示例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...
- python/socket编程之粘包
python/socket编程之粘包 粘包 只有TCP有粘包现象,UDP永远不会粘包. 首先需要掌握一个socket收发消息的原理 发送端可以是1k,1k的发送数据而接受端的应用程序可以2k,2k的提 ...
- PYTHON SOCKET编程简介
原文地址: PYTHON SOCKET编程详细介绍 Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 Soc ...
- python socket编程笔记
用python实现一个简单的socket网络聊天通讯 (Linux --py2.7平台与windows--py3.6平台) 人生苦短之我用Python篇(socket编程) python之路 sock ...
- [Python_7] Python Socket 编程
0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*- "&q ...
- Python Socket 编程示例 Echo Server
简评:我们已经从「Python Socket 编程概览」了解了 socket API 的概述以及客户端和服务器的通信方式,接下来让我们创建第一个客户端和服务器,我们将从一个简单的实现开始,服务器将简单 ...
- Python Socket 编程——聊天室演示样例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和client的代码了解主要的 Python Socket 编程模型.本文再通过一个样例来加强一下对 Socket ...
- python socket编程入门(编写server实例)+send 与sendall的区别与使用方法
python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...
- 第九章:Python高级编程-Python socket编程
第九章:Python高级编程-Python socket编程 Python3高级核心技术97讲 笔记 9.1 弄懂HTTP.Socket.TCP这几个概念 Socket为我们封装好了协议 9.2 cl ...
随机推荐
- mariadb数据库忘记密码如何找回
1.systemctl stop mariadb ==>停止mariadb数据库 2.mysqld_safe --skip-grant-tables & ==>进入单机模式 3.m ...
- knockoutjs如何动态加载外部的file作为component中的template数据源
玩过knockoutjs的都知道,有一个强大的功能叫做component,而这个component有个牛逼的地方就是拥有自己的viewmodel和template, 比如下面这样: ko.compon ...
- 用application实现一个网页的浏览计数器
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- java、easyui-combotree树形下拉选择框
最近一直在研究这个树形的下拉选择框,感觉非常的有用,现在整理下来供大家使用: 首先数据库的表架构设计和三级菜单联动的表结构是一样,(父子关系) 1.下面我们用hibernate建一下对应的额实体类: ...
- 数据库实战案例—————记一次TempDB暴增的问题排查
前言 很多时候数据库的TempDB.日志等文件的暴增可能导致磁盘空间被占满,如果日常配置不到位,往往会导致数据库故障,业务被迫中断. 这种文件暴增很难排查,经验不足的一些运维人员可能更是无法排查具体原 ...
- css3
CSS3的换行 如果某个单词太长,不适合在一个区域内,它扩展到外面: 自动换行属性允许您强制文本换行 - 即使这意味着分裂它中间的一个字: 允许长文本换行: p {word-wrap:break-wo ...
- 排序算法----基数排序(RadixSort(L,max))单链表版本
转载http://blog.csdn.net/Shayabean_/article/details/44885917博客 先说说基数排序的思想: 基数排序是非比较型的排序算法,其原理是将整数按位数切割 ...
- 移动WEB像素相关知识
了解移动web像素的知识,主要是为了切图时心中有数.本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关 ...
- Maven学习
http://www.cnblogs.com/sprinng/p/5141233.html 生成项目jar包失败 maven安装出现解决:http://blog.csdn.net/kjfcpua/ar ...
- Life
24小时热水.24小时无线WiFi.24小时空调:有人陪你,不孤单,不寂寞,不瞎想,不停的传播正能量