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 ...
随机推荐
- NFR
你NFR了吗? NFR,即非功能性需求 (Non -Functional Requirements) ,即系统能够完成所期望的工作的性能与质量.具体包括如下内容: – 效率: 软件实现其功能所需要的计 ...
- 4、项目的培训 - PMO项目管理办公室
培训是一个重要的内容,在公司内部就有相关的培训.对于PMO项目管理办公室来说,就是相关的项目的技术和业务的培训,以期让项目组人员能够快速的学习好项目业务内容和所需要使用到的技术内容,然后尽快的进入项目 ...
- javaWeb项目中Web.xml的基本配置
这个地址写的非常好 ,欢迎大家访问 Å:http://www.cnblogs.com/hxsyl/p/3435412.html 一.理论准备 先说下我记得xml规则,必须有且只有一个根节点,大小写敏感 ...
- mysql半同步(semi-sync)源码实现
mysql复制简单介绍了mysql semi-sync的出现的原因,并说明了semi-sync如何保证不丢数据.这篇文章主要侧重于semi-sync的实现,结合源码将semi-sync的实现过程展现给 ...
- Yii2.0.7 限制user module登录遇到的问题
在Yii2.0.6的时候我是在以下文件通过以下方法实现的. frontend/modules/user/Module.php namespace frontend\modules\user; clas ...
- MySQL优化一例
DELIMITER $$ USE `xxx`$$ DROP FUNCTION IF EXISTS `F_getBuluDates`$$ CREATE DEFINER=`root`@`localhost ...
- __weak与__block区别,深层理解两者区别
准备工作 首先我定义了一个类 MyObject 继承 NSObject,并添加了一个属性 text,重写了description方法,返回 text 的值.这个主要是因为编译器本身对 NSString ...
- 将自己的项目上传到github保管
一.首先需要生成gey-gen,因为github跟本地计算机要通过ssh传输的,详情见官方教程. 二.本地已有项目的情况:现在本地将项目git innit 初始化好,然后去到github上面初始化一个 ...
- Spring事务之详解--三种实现方式
实现购买股票案例: 一.引入JAR文件: 二.开始搭建分层架构---创建账户(Account)和股票(Stock)实体类 Account: /* * 账户 */ public class Accoun ...
- [LeetCode] Course Schedule 课程清单
There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prer ...