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 ...
随机推荐
- IO流的登录与注册
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileR ...
- 看看C# 6.0中那些语法糖都干了些什么(终结篇)
终于写到终结篇了,整个人像在梦游一样,说完这一篇我得继续写我的js系列啦. 一:带索引的对象初始化器 还是按照江湖老规矩,先扒开看看到底是个什么玩意. 1 static void Main(strin ...
- SSH面试题(struts2+Spring+hibernate)
struts2 + Spring +hibernate Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory ...
- hadoop-2.7.1伪分布环境搭建
1.准备Linux环境 1.0 点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet i ...
- [原创]下拉框控件react-native-modal-dropdown更新历程
前言 不知不觉从今年9月发布第一版控件到现在已经快3个月了 过去不断从开源社区索取,一直一直想着有机会一定要回报
- 【Swift】Alamofile网络请求数据更新TableView的坑
写这篇BLOG前,有些话不得不提一下,就仅当发发恼骚吧... 今天下午为了一个Alamofire取得数据而更新TableView的问题,查了一下午的百度(360也是见鬼的一样),竟然没有一个简单明了的 ...
- 搭建php环境哪家强
http://www.bubuko.com/infodetail-791030.html
- Nuget 命令 NuGet 管理项目库
因为可视化库程序包管理器的局限性,有很多需要的功能在界面中无法完成. 以下技巧均需要在"程序包管理器控制台"中使用命令来完成. 一.改变项目目标框架后,更新程序包 当改变项目的目标 ...
- [LeetCode] Convex Polygon 凸多边形
Given a list of points that form a polygon when joined sequentially, find if this polygon is convex ...
- [LeetCode] Strobogrammatic Number III 对称数之三
A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside ...