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. apache-shiro入门<一>

    Apache Shiro是一个强大而灵活的开源安全框架(本来想传到网盘供大家下载,但是鉴于国内网盘动不动就要关闭清楚用户数据:所以我提供了另一个shiro的中文文档下载链接:http://downlo ...

  2. A new comer playing with Raspberry Pi 3B

    there are some things to do for raspberry pi 3b for the first time: 1, connect pi with monitor/KB/mo ...

  3. ALM损坏后的恢复步骤

    ALM是HP出品的软件开发生命周期软件,其全称是Application Lifecycle Management,其采用B/S结构,从需求,业务模型到测试用例和缺陷管理亦应具有,满足了一般软件企业对开 ...

  4. Netty:数据处理流程

    Netty作为异步的.事件驱动一个网络通信框架,使用它可以帮助我们快速开发高性能高可靠性的网络服务. 为了更好的使用Netty来解决开发中的问题,学习Netty是很有必要的. Netty现在主流有三个 ...

  5. mongo 查询总结

    db.users.find() select * from users db.users.find({"age" : 27}) select * from users where ...

  6. overflow:hidden与margin:0 auto之间的冲突

    相对于父容器水平居中的代码margin:0 auto与overflow:hidden之间存在冲突.当这两个属性同时应用在一个DIV上时,在chrome浏览器中将无法居中.至于为啥我也不明白.

  7. Key words

    Key words ACL - Access Control List IDS - Intrusion Dection Systems ASLR - Address-Space Layout Rand ...

  8. OpenStack 企业私有云的若干需求(4):混合云支持 (Hybrid Cloud Support)

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

  9. [LeetCode] Unique Word Abbreviation 独特的单词缩写

    An abbreviation of a word follows the form <first letter><number><last letter>. Be ...

  10. tkinter事件机制

    一.tkinter.Event tkinter的事件机制跟js是一样的,也是只有一个Event类,这个类包罗万象,集成了键盘事件,鼠标事件,包含各种参数. 不像java swing那种强类型事件,sw ...