f1.py

  1. # -*- coding: utf-8 -*-
  2. import sqlalchemy
  3. import tushare
  4. import pandas
  5. import socket
  6. import struct
  7. import matplotlib.pyplot as Plot
  8. from matplotlib.finance import candlestick_ohlc as Drawk
  9. from matplotlib.pylab import mpl
  10. ########################################################################
  11. class Myclass:
  12. """"""
  13. #----------------------------------------------------------------------
  14. def __init__(self, User = 'sa', Password = '', Dsn = 'XiTongDSN', Host = '192.168.1.3', Port = 12345):
  15. """ sql server """
  16. self.User = User
  17. self.Password = Password
  18. self.Dsn = Dsn
  19. self.Engine = sqlalchemy.create_engine('mssql+pyodbc://'+self.User+':'+self.Password+'@'+self.Dsn)
  20. """ socket """
  21. self.Host = Host
  22. self.Port = Port
  23. #----------------------------------------------------------------------
  24. def Get_url_data(self):
  25. """ codelist """
  26. Codelist = pandas.DataFrame((tushare.get_today_all())['code'])
  27. Codelist = Codelist.sort(columns = 'code', ascending = True)
  28. Codelist.to_sql('codelist', self.Engine, if_exists = 'replace', index = False)
  29. """ stockdata """
  30. for i in range(0, len(Codelist)):
  31. Stockdata = tushare.get_h_data(Codelist['code'][i])
  32. Index = list(Stockdata['open'].index)
  33. Stockdata['date'] = pandas.Series(Index, Index)
  34. Stockdata = Stockdata.sort_values(by = 'date', ascending = True)
  35. Stockdata.to_sql(Codelist['code'][i], self.Engine, if_exists = 'replace', index = False)
  36. #----------------------------------------------------------------------
  37. def Get_sql_data(self, Code = ''):
  38. """ sql server """
  39. Connection = self.Engine.connect()
  40. Stockdata = pandas.read_sql_table(Code, Connection)
  41. Connection.close()
  42. return Code, Stockdata
  43. #----------------------------------------------------------------------
  44. def Run_socket_server(self):
  45. """ socket server """
  46. Socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  47. Socket.bind((self.Host, self.Port))
  48. Socket.listen(5)
  49. Code, Stockdata = self.Get_sql_data()
  50. I = list(Stockdata['date'].index)
  51. O = Stockdata['open']
  52. H = Stockdata['high']
  53. L = Stockdata['low']
  54. C = Stockdata['close']
  55. V = Stockdata['volume']
  56. i = 0
  57. while True:
  58. Connection, Address = Socket.accept()
  59. if Connection.recv(1024) == b'connect' and i < len(I):
  60. Connection.send(struct.pack('6si5f', Code.encode('utf-8'), I[i], O[i], H[i], L[i], C[i], V[i]))
  61. i += 1
  62. else:
  63. Connection.close()
  64. Socket.close()
  65. #----------------------------------------------------------------------
  66. def Run_socket_client(self, Message = b'connect'):
  67. """ socket client """
  68. Socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  69. Socket.connect((self.Host, self.Port))
  70. Socket.send(Message)
  71. Code, I, O, H, L, C, V = struct.unpack('6si5f', Socket.recv(1024)[:32])
  72. Socket.close()
  73. return Code.decode('utf-8'), I, O, H, L, C, V
  74. #----------------------------------------------------------------------
  75. def Plot_figure(self):
  76. """ plot figure """
  77. mpl.rcParams['font.sans-serif'] = ['SimHei']
  78. Figure = Plot.figure(u'由 DengChaohai 制作')
  79. f1 = Figure.add_subplot(3, 4, (1, 7), xlim = [0, 100], xlabel = u'天数', ylabel = u'成交价')
  80. Plot.grid(True)
  81. f2 = Figure.add_subplot(3, 4, (9, 11), xlim = [0, 100], xlabel = u'天数', ylabel = u'成交量')
  82. Plot.grid(True)
  83. f3 = Figure.add_subplot(30, 4, 8, ylim = [0, 0], xticklabels = [], yticklabels = [])
  84. Plot.grid(True)
  85. f4 = Figure.add_subplot(30, 4, 16, ylim = [0, 0], xticklabels = [], yticklabels = [])
  86. Plot.grid(True)
  87. f5 = Figure.add_subplot(30, 4, 24, ylim = [0, 0], xticklabels = [], yticklabels = [])
  88. Plot.grid(True)
  89. f6 = Figure.add_subplot(30, 4, 32, ylim = [0, 0], xticklabels = [], yticklabels = [])
  90. Plot.grid(True)
  91. f7 = Figure.add_subplot(30, 4, (40, 120))
  92. Plot.grid(True)
  93. Quotes = []
  94. Index = []
  95. Price = []
  96. TRUE = True
  97. while TRUE:
  98. Code, I, O, H, L, C, V = self.Run_socket_client()
  99. Index.append(I)
  100. Price.append((C + H + L + C) / 4)
  101. Quotes.append((I, O, H, L, C, V))
  102. Drawk(f1, Quotes, width = 0.5, colorup = 'g', colordown = 'r')
  103. f1.plot(Index, Price, 'c')
  104. f1.set_title(u'股票代码 @ ' + Code, loc = 'left', color = 'b')
  105. f2.bar(I, V, width = 0.5, color = 'c', edgecolor = 'c')
  106. f2.set_title(u'当前成交量 @ ' + str(V), loc = 'left', color = 'b')
  107. f3.set_title(u'当前开盘价 @ ' + str(O), loc = 'left', color = 'b')
  108. f4.set_title(u'当前最高价 @ ' + str(H), loc = 'left', color = 'b')
  109. f5.set_title(u'当前最低价 @ ' + str(L), loc = 'left', color = 'b')
  110. f6.set_title(u'当前收盘价 @ ' + str(C), loc = 'left', color = 'b')
  111. f7.plot(Index, Price, 'r')
  112. f7.set_title(u'自动化交易 @ ' + str(Price[I]), loc = 'left', color = 'r')
  113. Plot.pause(0.01)
  114. if I > 100:
  115. TRUE = False
  116. self.Run_socket_client(b'disconnect')

f2.py

  1. # -*- coding: utf-8 -*-
  2. import f1
  3. F1 = f1.Myclass()
  4. F1.Run_socket_server()

f3.py

  1. # -*- coding: utf-8 -*-
  2. import f1
  3. F1 = f1.Myclass()
  4. 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. IO流的登录与注册

    import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileR ...

  2. 看看C# 6.0中那些语法糖都干了些什么(终结篇)

    终于写到终结篇了,整个人像在梦游一样,说完这一篇我得继续写我的js系列啦. 一:带索引的对象初始化器 还是按照江湖老规矩,先扒开看看到底是个什么玩意. 1 static void Main(strin ...

  3. SSH面试题(struts2+Spring+hibernate)

    struts2 + Spring +hibernate Hibernate工作原理及为什么要用?   原理:   1.读取并解析配置文件   2.读取并解析映射信息,创建SessionFactory ...

  4. hadoop-2.7.1伪分布环境搭建

    1.准备Linux环境  1.0 点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet i ...

  5. [原创]下拉框控件react-native-modal-dropdown更新历程

    前言 不知不觉从今年9月发布第一版控件到现在已经快3个月了 过去不断从开源社区索取,一直一直想着有机会一定要回报

  6. 【Swift】Alamofile网络请求数据更新TableView的坑

    写这篇BLOG前,有些话不得不提一下,就仅当发发恼骚吧... 今天下午为了一个Alamofire取得数据而更新TableView的问题,查了一下午的百度(360也是见鬼的一样),竟然没有一个简单明了的 ...

  7. 搭建php环境哪家强

    http://www.bubuko.com/infodetail-791030.html

  8. Nuget 命令 NuGet 管理项目库

    因为可视化库程序包管理器的局限性,有很多需要的功能在界面中无法完成. 以下技巧均需要在"程序包管理器控制台"中使用命令来完成. 一.改变项目目标框架后,更新程序包 当改变项目的目标 ...

  9. [LeetCode] Convex Polygon 凸多边形

    Given a list of points that form a polygon when joined sequentially, find if this polygon is convex ...

  10. [LeetCode] Strobogrammatic Number III 对称数之三

    A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside ...