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 ...
随机推荐
- 转载: 黄聪:C#中 Excel列字母与数字的转换
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 【mysql】关于binlog格式
写在前面的话 1.推荐用mixed,默认使用statement,基于上下文 set session/global binlog_format=mixed; 2.二进制日记录了数据库执行更改的操作,如 ...
- Tensorflow 官方版教程中文版
2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源,同日,极客学院组织在线TensorFlow中文文档翻译.一个月后,30章文档全部翻译校对完成,上线并提供电子书下载,该 ...
- 超像素经典算法SLIC的代码的深度优化和分析。
现在这个社会发展的太快,到处都充斥着各种各样的资源,各种开源的平台,如github,codeproject,pudn等等,加上一些大型的官方的开源软件,基本上能找到各个类型的代码.很多初创业的老板可能 ...
- 嵌入式Linux驱动学习之路(二十七)字符设备驱动的另一种写法
之前讲的字符设备驱动程序,只要有一个主设备号,那么次设备号无论是什么都会和同一个 struct file_operations 结构体对应. 而本节课讲的是如何在设备号相同的情况下,让不同的次设备号对 ...
- November 1st 2016 Week 45th Tuesday
Difficult circumstances serve as a textbook of life for people. 艰难坎坷是人们的生活教科书. It would be better if ...
- Ubuntu16.04下安装VS Code
在Ubuntu下面安装Visual Studio Code sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make sudo apt-get up ...
- 【codevs1106】 篝火晚会
http://codevs.cn/problem/1106/ (题目链接) 题意 将1~n顺序排列的环改成另一个环,问n-不动点数. Solution 啊智障啦,不会做×_× 左转hzwer 代码 / ...
- [LeetCode] Find the Difference 寻找不同
Given two strings s and t which consist of only lowercase letters. String t is generated by random s ...
- [LeetCode] Ugly Number II 丑陋数之二
Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors ...