#集合 不含重复对象
StockExchange1 ={'1','2','3'}
StockExchange1.update (['4'])StockExchange = set() #'set'空集
StockExchange.update (['SHANGHAI STOCK EXCHONGE','SHENZHENG STOCK EXCHANGE'])
StockExchange.update ([' SHANGHAI ENERGY EXCHANGE ','1'])#'update'添加元素
StockExchange.discard ('1')#' discard '删除元素#列表
Numberlist = [1,2,3]
del Numberlist [1]#'del'删除元素
Numberlist.append (20)#'append'添加元素List_new = [Numberlist for i in range(10) ]#循环Numberlist这个列表对象 得到List = Numberlist*10
#元组
tuple = ('Name','She','He','Me')#'tuple'无法修改里面的元素#小括号()创建元组 []是创建列表
#字典
ExchangeDict = dict()#创建字典
ExchangeDict ['Gold'] = '325.4'
ExchangeDict ['Silver'] = '6723'#删除元素用'del'
字符串,数据类型转换
type :Python 内置函数可以查看对象类型
- int整数型 float浮点型
- str字符串
- bool布尔值Flast True
'' :引号里面的内容为字符串
'1'就是字符串 1就是int 1.0就是float
list(),tuple(),str()
列表元组字符串可以互相转换
a = [1,2,3,4]
tuple(a)#列表则转换为元组
type :Python 内置函数可以查看对象类型
- int整数型 float浮点型
- str字符串
- bool布尔值Flast True
'' :引号里面的内容为字符串
'1'就是字符串 1就是int 1.0就是float
list(),tuple(),str()
列表元组字符串可以互相转换
a = [1,2,3,4]
tuple(a)#列表则转换为元组
print
print("任意内容",end="")#end默认换行,换行符n
print("1n1")
#1
#1
print(r'1n1')#r字符串对象符号不在进行转意
#>>1n1
i = 1
b = 10
print('this is number %s this is number %s'%(i,b))
使用print +for循环做个简单的进度条
def Progress_bar():
print("程序启动中,请稍等:")
for i in range(26):#
a = "■" * i
b = "□" * (25 - i)
c = (i / 25) * 25 * 4
print("r{}{}{:.2f}%".format(a, b, c), end="")
time.sleep(0.1)
这里用到了time库Python内置的format,range以及函数。
Format
Format 与print 这种方法类似
print('this is number %s this is number %s'%(i,b))
print('this is number {} this is number {}'.format(对象1⃣️,对象2⃣️))#
def 创建函数对象
def Name(形参): #Name为函数名,以后可以输入Name()调用此函数
pass #空的函数一定要用pass 不然会报错
def Total_area(Extent,Width):
Accumulate = Extent*Width
return Accumulate
- 函数名Total_area 函数名一定要符合Python书写规范
- Extent,Width 形参
- Accumulate = Extent*Width函数体运行函数就会执行这个
- 运行完函数 如果不进行return我们想要的值或内容执行这个函数就没有什么意义了
- 执行函数 : Total_area(5,10)返回50
后面还会持续更新希望大家提出建议以及不对的地方
这是目前编写出来的程序
数据分析
import matplotlib as mtl
import matplotlib.pyplot as plt
import numpy as np
import re
import math
import time
#打开历史数据
with open('0600031','r',encoding='UTF-8') as File:
Files = File.read().splitlines()
#查找字符串中的汉子
Name = re.findall("[\u4e00-\u9fa5]+",Files[1])
#放置数据的列表
Closing_Price = []#'收盘价'
High = []#'最高价'
Low = []#'最低价'
Open = []#'开盘价'
Front_Closing_Price = []#'前收盘价'
Ups_and_Downs = []#'涨跌额'
Rise_and_Fall = []#'涨跌幅'
Handover_rate = []#'换手率'
Turnover = []#'成交量'
Transaction_Amount = []#'成交金额'
Total_Market_Value = []#'总市值'
Circulating_Market_Value = []#'流通市值'
#放置数组的列表
Closing_Price_ = []#'收盘价'
High_ = []#'最高价'
Low_ = []#'最低价'
Open_ = []#'开盘价'
Front_Closing_Price_ = []#'前收盘价'
Ups_and_Downs_ = []#'涨跌额'
Rise_and_Fall_ = []#'涨跌幅'
Handover_rate_ = []#'换手率'
Turnover_ = []#'成交量'
Transaction_Amount_ = []#'成交金额'
Total_Market_Value_ = []#'总市值'
Circulating_Market_Value_ = []#'流通市值'
#提取字符串中的数据
for i in Files:
A = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,(d{0,4}.d{0,2}),d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
B = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},(d{0,4}.d{0,2}),d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
C = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},(d{0,4}.d{0,2}),d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
D = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},(d{0,4}.d{0,2}),d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
E = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},([-|0-9]d{0,3}.d{0,3}),[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
F = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},([-|0-9]d{0,4}.d{0,4}),d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
G = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},(d{0,2}.d{0,4}),d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
H = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},(d{0,13}),d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
I = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},d{0,13},(d{6,15}.d{0,2}),d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,12}.{0,2}d{0,2}',i)
J = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},d{0,13},d{6,15}.d{0,2},(d{0,3}.d{0,12}.{2}d{2}),.{1}d{0,3}.d{0,12}.{0,2}d{0,2}',i)
K = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}(d{0,3}.d{0,12}.{0,2}d{0,2})',i)
#将数据添加到列表
Closing_Price.append(A)#收盘价
High.append(B)#最高价
Low.append(C)#最低价
Open.append(D)#开盘价
Ups_and_Downs.append(E)#涨跌额
Rise_and_Fall.append(F)#涨跌幅
Handover_rate.append(G) #换手率
Turnover.append(H)#成交量
Transaction_Amount.append(I)#成交额
Total_Market_Value.append(J)#总市值
Circulating_Market_Value.append(K)#流通市值
del Closing_Price[len(Closing_Price)-1]
del Closing_Price[0]
del High[len(High)-1]
del High[0]
del Low[len(Low)-1]
del Low[0]
del Open[len(Open)-1]
del Open[0]
del Ups_and_Downs[len(Ups_and_Downs)-1]
del Ups_and_Downs[0]
del Rise_and_Fall[len(Rise_and_Fall)-1]
del Rise_and_Fall[0]
del Handover_rate[len(Handover_rate)-1]
del Handover_rate[0]
del Turnover[len(Turnover)-1]
del Turnover[0]
del Transaction_Amount[len(Transaction_Amount)-1]
del Transaction_Amount[0]
del Total_Market_Value[len(Total_Market_Value)-1]
del Total_Market_Value[0]
del Circulating_Market_Value[len(Circulating_Market_Value)-1]
del Circulating_Market_Value[0]
i = 0
for x in range(0,len(Closing_Price)-1):
i = i+1
Closing_Price_.append(float(Closing_Price[i][0]))
High_.append(float(High[i][0]))
Low_.append(float(Low[i][0]))
Open_.append(float(Open[i][0]))
Ups_and_Downs_.append(float(Ups_and_Downs[i][0]))
Rise_and_Fall_.append(float(Rise_and_Fall[i][0]))
Handover_rate_.append(float(Handover_rate[i][0]))
Turnover_.append(float(Turnover[i][0]))
Transaction_Amount_.append(float(Transaction_Amount[i][0]))
Total_Market_Value_.append(float(Total_Market_Value[i][0]))
Circulating_Market_Value_.append(float(Circulating_Market_Value[i][0]))
#数组倒序
np.flipud(Closing_Price_)
np.flipud(High_)
np.flipud(Low_)
np.flipud(Open_)
np.flipud(Ups_and_Downs)
np.flipud(Rise_and_Fall_)
np.flipud(Handover_rate_)
np.flipud(Turnover_)
np.flipud(Transaction_Amount)
np.flipud(Total_Market_Value)
np.flipud(Circulating_Market_Value)
def one():
x = np.arange(0,len(Turnover_))
b = np.array(Turnover_)
plt.bar(x,b)
plt.legend(loc='loc')
plt.title('Stock'+Name[0])
plt.xlabel('Time')
plt.ylabel('Turnover')
ax2 = plt.twinx()
ax2.set_ylabel('Price');
ax2.set_ylim([0, max(Open_)])
d = np.array(Open_)
plt.plot(x,d)
plt.show()
量化交易
import datetime
import time
import random
import re
import csv
import numpy as np
import requests
from time import gmtime, strftime, strptime, time, gmtime, sleep
from datetime import timedelta, time, date, datetime
URL_Data_Infomation = 'http://api.money.126.net/data/feed/0600905,money.api?'
URL_Historical_Data_Information = 'http://quotes.money.163.com/service/chddata.html?code=0600905&start=20210630&end=20220304&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP'
User_Agent = ['User-Agent']
User_Agent_Headers = [
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1;Trident4.0;CIBA; .NETCLR2.0.50727; .NETCLR3.0.4506.2152; .NETCLR3.5.30729; .NET4.0C;InfoPath.2; .NET4.0E',
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; 360SE)',
'Mozilla/5.0 (Windows NT 6.1; WOW64)AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1']
def Random():
'''
中文:
随机的Headers
英文:
Random Headers
'''
random.shuffle(User_Agent_Headers)
Random = dict(zip(User_Agent,User_Agent_Headers))
return Random
Stock_Type = set()
def History_Tick():
Files = open('Code.csv','r',encoding='UTF-8',newline=None).read().splitlines()
for File in Files:
Stock_Type.add(str(re.findall(',D{1,3},(D{1,4}),d{8}$',File)))
if re.findall('SH',File) == ['SH']:
A_SH = re.findall('^d{6}',File)
a_SH = str(A)
b_SH = a[2:8]
c_SH = re.sub('code=0(d{6})','code=0'+b,URL_Historical_Data_Information)
requests.get('',Random()).text
time.sleep(0.1)
Name = str(b)
with open(Name, 'w', newline='',encoding='UTF-8') as csvfile:
Historical_data = csv.writer(csvfile)
Historical_data.writerow(s)
if re.findall('SZ',File) == ['SZ']:
A_SZ = re.findall('^d{6}',File)
a_SZ = str(A)
b_SZ = a[2:8]
c_SZ = re.sub('code=0(d{6})','code=1'+b,URL_Historical_Data_Information))
requests.get('',Random()).text
time.sleep(0.1)
Name_SZ =
with open(Name, 'w', newline='',encoding='UTF-8') as csvfile:
Historical_data = csv.writer(csvfile)
Historical_data.writerow(s)
Tick_Code = []
class Tick():
'''
中文:
把数据放入类中
English:
Put the data into the class
'''
Price = 'Price'
Open = 'Open'
High = 'High'
Low = 'Low'
Percent = 'Percent'
Datetime = 'Datetime'
def __init__(self,Price,Open,High,Low,Percent,Datetime):
'''
交易数据实例化
'''
self.Price = Price
self.Open = Open
self.High = High
self.Low = Low
self.Percent = Percent
self.Datetime = Datetime
def Data_Information():
'''
中文:
爬取网易财经API以及数据整理
English:
Crawl NetEase Finance API and data collation
'''
from time import gmtime, strftime, strptime, time, gmtime, sleep
from datetime import timedelta, time, date, datetime
Stock = requests.get(URL_Data_Infomation,headers=Random()).text
Stock_Info = Stock.split(',')
price = Stock_Info[7].split(sep=':')
open_ = Stock_Info[8].split(sep=':')
high = Stock_Info[2].split(sep=':')
low = Stock_Info[14].split(sep=':')
percent = Stock_Info[1].split(sep=':')
time_ = Stock_Info[23].split(sep=':',maxsplit=1)
Price = float(price[1])
Open = float(open_[1])
High = float(high[1])
Low = float(low[1])
Percent = float(percent[1])
Time = time_[1]
Datetime = datetime.strptime(Time, ' "%Y/%m/%d %H:%M:%S"')
Data = [Price,Open,High,Low,Percent,Datetime]
return Data
print("任意内容",end="")#end默认换行,换行符n
print("1n1")
#1
#1
print(r'1n1')#r字符串对象符号不在进行转意
#>>1n1
i = 1
b = 10
print('this is number %s this is number %s'%(i,b))
使用print +for循环做个简单的进度条
def Progress_bar():
print("程序启动中,请稍等:")
for i in range(26):#
a = "■" * i
b = "□" * (25 - i)
c = (i / 25) * 25 * 4
print("r{}{}{:.2f}%".format(a, b, c), end="")
time.sleep(0.1)
这里用到了time库Python内置的format,range以及函数。
Format 与print 这种方法类似
print('this is number %s this is number %s'%(i,b))
print('this is number {} this is number {}'.format(对象1⃣️,对象2⃣️))#
def 创建函数对象
def Name(形参): #Name为函数名,以后可以输入Name()调用此函数
pass #空的函数一定要用pass 不然会报错
def Total_area(Extent,Width):
Accumulate = Extent*Width
return Accumulate
- 函数名Total_area 函数名一定要符合Python书写规范
- Extent,Width 形参
- Accumulate = Extent*Width函数体运行函数就会执行这个
- 运行完函数 如果不进行return我们想要的值或内容执行这个函数就没有什么意义了
- 执行函数 : Total_area(5,10)返回50
后面还会持续更新希望大家提出建议以及不对的地方
这是目前编写出来的程序
数据分析
import matplotlib as mtl
import matplotlib.pyplot as plt
import numpy as np
import re
import math
import time
#打开历史数据
with open('0600031','r',encoding='UTF-8') as File:
Files = File.read().splitlines()
#查找字符串中的汉子
Name = re.findall("[\u4e00-\u9fa5]+",Files[1])
#放置数据的列表
Closing_Price = []#'收盘价'
High = []#'最高价'
Low = []#'最低价'
Open = []#'开盘价'
Front_Closing_Price = []#'前收盘价'
Ups_and_Downs = []#'涨跌额'
Rise_and_Fall = []#'涨跌幅'
Handover_rate = []#'换手率'
Turnover = []#'成交量'
Transaction_Amount = []#'成交金额'
Total_Market_Value = []#'总市值'
Circulating_Market_Value = []#'流通市值'
#放置数组的列表
Closing_Price_ = []#'收盘价'
High_ = []#'最高价'
Low_ = []#'最低价'
Open_ = []#'开盘价'
Front_Closing_Price_ = []#'前收盘价'
Ups_and_Downs_ = []#'涨跌额'
Rise_and_Fall_ = []#'涨跌幅'
Handover_rate_ = []#'换手率'
Turnover_ = []#'成交量'
Transaction_Amount_ = []#'成交金额'
Total_Market_Value_ = []#'总市值'
Circulating_Market_Value_ = []#'流通市值'
#提取字符串中的数据
for i in Files:
A = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,(d{0,4}.d{0,2}),d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
B = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},(d{0,4}.d{0,2}),d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
C = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},(d{0,4}.d{0,2}),d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
D = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},(d{0,4}.d{0,2}),d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
E = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},([-|0-9]d{0,3}.d{0,3}),[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
F = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},([-|0-9]d{0,4}.d{0,4}),d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
G = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},(d{0,2}.d{0,4}),d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
H = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},(d{0,13}),d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
I = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},d{0,13},(d{6,15}.d{0,2}),d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,12}.{0,2}d{0,2}',i)
J = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},d{0,13},d{6,15}.d{0,2},(d{0,3}.d{0,12}.{2}d{2}),.{1}d{0,3}.d{0,12}.{0,2}d{0,2}',i)
K = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}(d{0,3}.d{0,12}.{0,2}d{0,2})',i)
#将数据添加到列表
Closing_Price.append(A)#收盘价
High.append(B)#最高价
Low.append(C)#最低价
Open.append(D)#开盘价
Ups_and_Downs.append(E)#涨跌额
Rise_and_Fall.append(F)#涨跌幅
Handover_rate.append(G) #换手率
Turnover.append(H)#成交量
Transaction_Amount.append(I)#成交额
Total_Market_Value.append(J)#总市值
Circulating_Market_Value.append(K)#流通市值
del Closing_Price[len(Closing_Price)-1]
del Closing_Price[0]
del High[len(High)-1]
del High[0]
del Low[len(Low)-1]
del Low[0]
del Open[len(Open)-1]
del Open[0]
del Ups_and_Downs[len(Ups_and_Downs)-1]
del Ups_and_Downs[0]
del Rise_and_Fall[len(Rise_and_Fall)-1]
del Rise_and_Fall[0]
del Handover_rate[len(Handover_rate)-1]
del Handover_rate[0]
del Turnover[len(Turnover)-1]
del Turnover[0]
del Transaction_Amount[len(Transaction_Amount)-1]
del Transaction_Amount[0]
del Total_Market_Value[len(Total_Market_Value)-1]
del Total_Market_Value[0]
del Circulating_Market_Value[len(Circulating_Market_Value)-1]
del Circulating_Market_Value[0]
i = 0
for x in range(0,len(Closing_Price)-1):
i = i+1
Closing_Price_.append(float(Closing_Price[i][0]))
High_.append(float(High[i][0]))
Low_.append(float(Low[i][0]))
Open_.append(float(Open[i][0]))
Ups_and_Downs_.append(float(Ups_and_Downs[i][0]))
Rise_and_Fall_.append(float(Rise_and_Fall[i][0]))
Handover_rate_.append(float(Handover_rate[i][0]))
Turnover_.append(float(Turnover[i][0]))
Transaction_Amount_.append(float(Transaction_Amount[i][0]))
Total_Market_Value_.append(float(Total_Market_Value[i][0]))
Circulating_Market_Value_.append(float(Circulating_Market_Value[i][0]))
#数组倒序
np.flipud(Closing_Price_)
np.flipud(High_)
np.flipud(Low_)
np.flipud(Open_)
np.flipud(Ups_and_Downs)
np.flipud(Rise_and_Fall_)
np.flipud(Handover_rate_)
np.flipud(Turnover_)
np.flipud(Transaction_Amount)
np.flipud(Total_Market_Value)
np.flipud(Circulating_Market_Value)
def one():
x = np.arange(0,len(Turnover_))
b = np.array(Turnover_)
plt.bar(x,b)
plt.legend(loc='loc')
plt.title('Stock'+Name[0])
plt.xlabel('Time')
plt.ylabel('Turnover')
ax2 = plt.twinx()
ax2.set_ylabel('Price');
ax2.set_ylim([0, max(Open_)])
d = np.array(Open_)
plt.plot(x,d)
plt.show()
量化交易
import datetime
import time
import random
import re
import csv
import numpy as np
import requests
from time import gmtime, strftime, strptime, time, gmtime, sleep
from datetime import timedelta, time, date, datetime
URL_Data_Infomation = 'http://api.money.126.net/data/feed/0600905,money.api?'
URL_Historical_Data_Information = 'http://quotes.money.163.com/service/chddata.html?code=0600905&start=20210630&end=20220304&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP'
User_Agent = ['User-Agent']
User_Agent_Headers = [
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1;Trident4.0;CIBA; .NETCLR2.0.50727; .NETCLR3.0.4506.2152; .NETCLR3.5.30729; .NET4.0C;InfoPath.2; .NET4.0E',
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; 360SE)',
'Mozilla/5.0 (Windows NT 6.1; WOW64)AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1']
def Random():
'''
中文:
随机的Headers
英文:
Random Headers
'''
random.shuffle(User_Agent_Headers)
Random = dict(zip(User_Agent,User_Agent_Headers))
return Random
Stock_Type = set()
def History_Tick():
Files = open('Code.csv','r',encoding='UTF-8',newline=None).read().splitlines()
for File in Files:
Stock_Type.add(str(re.findall(',D{1,3},(D{1,4}),d{8}$',File)))
if re.findall('SH',File) == ['SH']:
A_SH = re.findall('^d{6}',File)
a_SH = str(A)
b_SH = a[2:8]
c_SH = re.sub('code=0(d{6})','code=0'+b,URL_Historical_Data_Information)
requests.get('',Random()).text
time.sleep(0.1)
Name = str(b)
with open(Name, 'w', newline='',encoding='UTF-8') as csvfile:
Historical_data = csv.writer(csvfile)
Historical_data.writerow(s)
if re.findall('SZ',File) == ['SZ']:
A_SZ = re.findall('^d{6}',File)
a_SZ = str(A)
b_SZ = a[2:8]
c_SZ = re.sub('code=0(d{6})','code=1'+b,URL_Historical_Data_Information))
requests.get('',Random()).text
time.sleep(0.1)
Name_SZ =
with open(Name, 'w', newline='',encoding='UTF-8') as csvfile:
Historical_data = csv.writer(csvfile)
Historical_data.writerow(s)
Tick_Code = []
class Tick():
'''
中文:
把数据放入类中
English:
Put the data into the class
'''
Price = 'Price'
Open = 'Open'
High = 'High'
Low = 'Low'
Percent = 'Percent'
Datetime = 'Datetime'
def __init__(self,Price,Open,High,Low,Percent,Datetime):
'''
交易数据实例化
'''
self.Price = Price
self.Open = Open
self.High = High
self.Low = Low
self.Percent = Percent
self.Datetime = Datetime
def Data_Information():
'''
中文:
爬取网易财经API以及数据整理
English:
Crawl NetEase Finance API and data collation
'''
from time import gmtime, strftime, strptime, time, gmtime, sleep
from datetime import timedelta, time, date, datetime
Stock = requests.get(URL_Data_Infomation,headers=Random()).text
Stock_Info = Stock.split(',')
price = Stock_Info[7].split(sep=':')
open_ = Stock_Info[8].split(sep=':')
high = Stock_Info[2].split(sep=':')
low = Stock_Info[14].split(sep=':')
percent = Stock_Info[1].split(sep=':')
time_ = Stock_Info[23].split(sep=':',maxsplit=1)
Price = float(price[1])
Open = float(open_[1])
High = float(high[1])
Low = float(low[1])
Percent = float(percent[1])
Time = time_[1]
Datetime = datetime.strptime(Time, ' "%Y/%m/%d %H:%M:%S"')
Data = [Price,Open,High,Low,Percent,Datetime]
return Data
def Name(形参): #Name为函数名,以后可以输入Name()调用此函数
pass #空的函数一定要用pass 不然会报错
def Total_area(Extent,Width):
Accumulate = Extent*Width
return Accumulate
- 函数名Total_area 函数名一定要符合Python书写规范
- Extent,Width 形参
- Accumulate = Extent*Width函数体运行函数就会执行这个
- 运行完函数 如果不进行return我们想要的值或内容执行这个函数就没有什么意义了
- 执行函数 : Total_area(5,10)返回50
数据分析
import matplotlib as mtl
import matplotlib.pyplot as plt
import numpy as np
import re
import math
import time
#打开历史数据
with open('0600031','r',encoding='UTF-8') as File:
Files = File.read().splitlines()
#查找字符串中的汉子
Name = re.findall("[\u4e00-\u9fa5]+",Files[1])
#放置数据的列表
Closing_Price = []#'收盘价'
High = []#'最高价'
Low = []#'最低价'
Open = []#'开盘价'
Front_Closing_Price = []#'前收盘价'
Ups_and_Downs = []#'涨跌额'
Rise_and_Fall = []#'涨跌幅'
Handover_rate = []#'换手率'
Turnover = []#'成交量'
Transaction_Amount = []#'成交金额'
Total_Market_Value = []#'总市值'
Circulating_Market_Value = []#'流通市值'
#放置数组的列表
Closing_Price_ = []#'收盘价'
High_ = []#'最高价'
Low_ = []#'最低价'
Open_ = []#'开盘价'
Front_Closing_Price_ = []#'前收盘价'
Ups_and_Downs_ = []#'涨跌额'
Rise_and_Fall_ = []#'涨跌幅'
Handover_rate_ = []#'换手率'
Turnover_ = []#'成交量'
Transaction_Amount_ = []#'成交金额'
Total_Market_Value_ = []#'总市值'
Circulating_Market_Value_ = []#'流通市值'
#提取字符串中的数据
for i in Files:
A = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,(d{0,4}.d{0,2}),d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
B = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},(d{0,4}.d{0,2}),d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
C = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},(d{0,4}.d{0,2}),d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
D = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},(d{0,4}.d{0,2}),d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
E = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},([-|0-9]d{0,3}.d{0,3}),[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
F = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},([-|0-9]d{0,4}.d{0,4}),d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
G = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},(d{0,2}.d{0,4}),d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
H = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},(d{0,13}),d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
I = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},d{0,13},(d{6,15}.d{0,2}),d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,12}.{0,2}d{0,2}',i)
J = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},d{0,13},d{6,15}.d{0,2},(d{0,3}.d{0,12}.{2}d{2}),.{1}d{0,3}.d{0,12}.{0,2}d{0,2}',i)
K = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}(d{0,3}.d{0,12}.{0,2}d{0,2})',i)
#将数据添加到列表
Closing_Price.append(A)#收盘价
High.append(B)#最高价
Low.append(C)#最低价
Open.append(D)#开盘价
Ups_and_Downs.append(E)#涨跌额
Rise_and_Fall.append(F)#涨跌幅
Handover_rate.append(G) #换手率
Turnover.append(H)#成交量
Transaction_Amount.append(I)#成交额
Total_Market_Value.append(J)#总市值
Circulating_Market_Value.append(K)#流通市值
del Closing_Price[len(Closing_Price)-1]
del Closing_Price[0]
del High[len(High)-1]
del High[0]
del Low[len(Low)-1]
del Low[0]
del Open[len(Open)-1]
del Open[0]
del Ups_and_Downs[len(Ups_and_Downs)-1]
del Ups_and_Downs[0]
del Rise_and_Fall[len(Rise_and_Fall)-1]
del Rise_and_Fall[0]
del Handover_rate[len(Handover_rate)-1]
del Handover_rate[0]
del Turnover[len(Turnover)-1]
del Turnover[0]
del Transaction_Amount[len(Transaction_Amount)-1]
del Transaction_Amount[0]
del Total_Market_Value[len(Total_Market_Value)-1]
del Total_Market_Value[0]
del Circulating_Market_Value[len(Circulating_Market_Value)-1]
del Circulating_Market_Value[0]
i = 0
for x in range(0,len(Closing_Price)-1):
i = i+1
Closing_Price_.append(float(Closing_Price[i][0]))
High_.append(float(High[i][0]))
Low_.append(float(Low[i][0]))
Open_.append(float(Open[i][0]))
Ups_and_Downs_.append(float(Ups_and_Downs[i][0]))
Rise_and_Fall_.append(float(Rise_and_Fall[i][0]))
Handover_rate_.append(float(Handover_rate[i][0]))
Turnover_.append(float(Turnover[i][0]))
Transaction_Amount_.append(float(Transaction_Amount[i][0]))
Total_Market_Value_.append(float(Total_Market_Value[i][0]))
Circulating_Market_Value_.append(float(Circulating_Market_Value[i][0]))
#数组倒序
np.flipud(Closing_Price_)
np.flipud(High_)
np.flipud(Low_)
np.flipud(Open_)
np.flipud(Ups_and_Downs)
np.flipud(Rise_and_Fall_)
np.flipud(Handover_rate_)
np.flipud(Turnover_)
np.flipud(Transaction_Amount)
np.flipud(Total_Market_Value)
np.flipud(Circulating_Market_Value)
def one():
x = np.arange(0,len(Turnover_))
b = np.array(Turnover_)
plt.bar(x,b)
plt.legend(loc='loc')
plt.title('Stock'+Name[0])
plt.xlabel('Time')
plt.ylabel('Turnover')
ax2 = plt.twinx()
ax2.set_ylabel('Price');
ax2.set_ylim([0, max(Open_)])
d = np.array(Open_)
plt.plot(x,d)
plt.show()
量化交易
import datetime
import time
import random
import re
import csv
import numpy as np
import requests
from time import gmtime, strftime, strptime, time, gmtime, sleep
from datetime import timedelta, time, date, datetime
URL_Data_Infomation = 'http://api.money.126.net/data/feed/0600905,money.api?'
URL_Historical_Data_Information = 'http://quotes.money.163.com/service/chddata.html?code=0600905&start=20210630&end=20220304&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP'
User_Agent = ['User-Agent']
User_Agent_Headers = [
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1;Trident4.0;CIBA; .NETCLR2.0.50727; .NETCLR3.0.4506.2152; .NETCLR3.5.30729; .NET4.0C;InfoPath.2; .NET4.0E',
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; 360SE)',
'Mozilla/5.0 (Windows NT 6.1; WOW64)AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1']
def Random():
'''
中文:
随机的Headers
英文:
Random Headers
'''
random.shuffle(User_Agent_Headers)
Random = dict(zip(User_Agent,User_Agent_Headers))
return Random
Stock_Type = set()
def History_Tick():
Files = open('Code.csv','r',encoding='UTF-8',newline=None).read().splitlines()
for File in Files:
Stock_Type.add(str(re.findall(',D{1,3},(D{1,4}),d{8}$',File)))
if re.findall('SH',File) == ['SH']:
A_SH = re.findall('^d{6}',File)
a_SH = str(A)
b_SH = a[2:8]
c_SH = re.sub('code=0(d{6})','code=0'+b,URL_Historical_Data_Information)
requests.get('',Random()).text
time.sleep(0.1)
Name = str(b)
with open(Name, 'w', newline='',encoding='UTF-8') as csvfile:
Historical_data = csv.writer(csvfile)
Historical_data.writerow(s)
if re.findall('SZ',File) == ['SZ']:
A_SZ = re.findall('^d{6}',File)
a_SZ = str(A)
b_SZ = a[2:8]
c_SZ = re.sub('code=0(d{6})','code=1'+b,URL_Historical_Data_Information))
requests.get('',Random()).text
time.sleep(0.1)
Name_SZ =
with open(Name, 'w', newline='',encoding='UTF-8') as csvfile:
Historical_data = csv.writer(csvfile)
Historical_data.writerow(s)
Tick_Code = []
class Tick():
'''
中文:
把数据放入类中
English:
Put the data into the class
'''
Price = 'Price'
Open = 'Open'
High = 'High'
Low = 'Low'
Percent = 'Percent'
Datetime = 'Datetime'
def __init__(self,Price,Open,High,Low,Percent,Datetime):
'''
交易数据实例化
'''
self.Price = Price
self.Open = Open
self.High = High
self.Low = Low
self.Percent = Percent
self.Datetime = Datetime
def Data_Information():
'''
中文:
爬取网易财经API以及数据整理
English:
Crawl NetEase Finance API and data collation
'''
from time import gmtime, strftime, strptime, time, gmtime, sleep
from datetime import timedelta, time, date, datetime
Stock = requests.get(URL_Data_Infomation,headers=Random()).text
Stock_Info = Stock.split(',')
price = Stock_Info[7].split(sep=':')
open_ = Stock_Info[8].split(sep=':')
high = Stock_Info[2].split(sep=':')
low = Stock_Info[14].split(sep=':')
percent = Stock_Info[1].split(sep=':')
time_ = Stock_Info[23].split(sep=':',maxsplit=1)
Price = float(price[1])
Open = float(open_[1])
High = float(high[1])
Low = float(low[1])
Percent = float(percent[1])
Time = time_[1]
Datetime = datetime.strptime(Time, ' "%Y/%m/%d %H:%M:%S"')
Data = [Price,Open,High,Low,Percent,Datetime]
return Data
import matplotlib as mtl
import matplotlib.pyplot as plt
import numpy as np
import re
import math
import time
#打开历史数据
with open('0600031','r',encoding='UTF-8') as File:
Files = File.read().splitlines()
#查找字符串中的汉子
Name = re.findall("[\u4e00-\u9fa5]+",Files[1])
#放置数据的列表
Closing_Price = []#'收盘价'
High = []#'最高价'
Low = []#'最低价'
Open = []#'开盘价'
Front_Closing_Price = []#'前收盘价'
Ups_and_Downs = []#'涨跌额'
Rise_and_Fall = []#'涨跌幅'
Handover_rate = []#'换手率'
Turnover = []#'成交量'
Transaction_Amount = []#'成交金额'
Total_Market_Value = []#'总市值'
Circulating_Market_Value = []#'流通市值'
#放置数组的列表
Closing_Price_ = []#'收盘价'
High_ = []#'最高价'
Low_ = []#'最低价'
Open_ = []#'开盘价'
Front_Closing_Price_ = []#'前收盘价'
Ups_and_Downs_ = []#'涨跌额'
Rise_and_Fall_ = []#'涨跌幅'
Handover_rate_ = []#'换手率'
Turnover_ = []#'成交量'
Transaction_Amount_ = []#'成交金额'
Total_Market_Value_ = []#'总市值'
Circulating_Market_Value_ = []#'流通市值'
#提取字符串中的数据
for i in Files:
A = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,(d{0,4}.d{0,2}),d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
B = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},(d{0,4}.d{0,2}),d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
C = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},(d{0,4}.d{0,2}),d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
D = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},(d{0,4}.d{0,2}),d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
E = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},([-|0-9]d{0,3}.d{0,3}),[-|0-9]d{0,4}.d{0,4},d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
F = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},([-|0-9]d{0,4}.d{0,4}),d{0,2}.d{0,4},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
G = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},d{0,4}.d{0,2},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,4},(d{0,2}.d{0,4}),d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
H = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},(d{0,13}),d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,15}.{0,2}d{0,2}',i)
I = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},d{0,13},(d{6,15}.d{0,2}),d{0,3}.d{0,12}.{2}d{2},.{1}d{0,3}.d{0,12}.{0,2}d{0,2}',i)
J = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},d{0,13},d{6,15}.d{0,2},(d{0,3}.d{0,12}.{2}d{2}),.{1}d{0,3}.d{0,12}.{0,2}d{0,2}',i)
K = re.findall('[A-Z]{0,2}[\u4e00-\u9fa5]+,d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},d{0,4}.d{0,3},[-|0-9]d{0,3}.d{0,3},[-|0-9]d{0,4}.d{0,5},d{0,2}.d{0,5},d{0,13},d{6,15}.d{0,2},d{0,3}.d{0,12}.{2}d{2},.{1}(d{0,3}.d{0,12}.{0,2}d{0,2})',i)
#将数据添加到列表
Closing_Price.append(A)#收盘价
High.append(B)#最高价
Low.append(C)#最低价
Open.append(D)#开盘价
Ups_and_Downs.append(E)#涨跌额
Rise_and_Fall.append(F)#涨跌幅
Handover_rate.append(G) #换手率
Turnover.append(H)#成交量
Transaction_Amount.append(I)#成交额
Total_Market_Value.append(J)#总市值
Circulating_Market_Value.append(K)#流通市值
del Closing_Price[len(Closing_Price)-1]
del Closing_Price[0]
del High[len(High)-1]
del High[0]
del Low[len(Low)-1]
del Low[0]
del Open[len(Open)-1]
del Open[0]
del Ups_and_Downs[len(Ups_and_Downs)-1]
del Ups_and_Downs[0]
del Rise_and_Fall[len(Rise_and_Fall)-1]
del Rise_and_Fall[0]
del Handover_rate[len(Handover_rate)-1]
del Handover_rate[0]
del Turnover[len(Turnover)-1]
del Turnover[0]
del Transaction_Amount[len(Transaction_Amount)-1]
del Transaction_Amount[0]
del Total_Market_Value[len(Total_Market_Value)-1]
del Total_Market_Value[0]
del Circulating_Market_Value[len(Circulating_Market_Value)-1]
del Circulating_Market_Value[0]
i = 0
for x in range(0,len(Closing_Price)-1):
i = i+1
Closing_Price_.append(float(Closing_Price[i][0]))
High_.append(float(High[i][0]))
Low_.append(float(Low[i][0]))
Open_.append(float(Open[i][0]))
Ups_and_Downs_.append(float(Ups_and_Downs[i][0]))
Rise_and_Fall_.append(float(Rise_and_Fall[i][0]))
Handover_rate_.append(float(Handover_rate[i][0]))
Turnover_.append(float(Turnover[i][0]))
Transaction_Amount_.append(float(Transaction_Amount[i][0]))
Total_Market_Value_.append(float(Total_Market_Value[i][0]))
Circulating_Market_Value_.append(float(Circulating_Market_Value[i][0]))
#数组倒序
np.flipud(Closing_Price_)
np.flipud(High_)
np.flipud(Low_)
np.flipud(Open_)
np.flipud(Ups_and_Downs)
np.flipud(Rise_and_Fall_)
np.flipud(Handover_rate_)
np.flipud(Turnover_)
np.flipud(Transaction_Amount)
np.flipud(Total_Market_Value)
np.flipud(Circulating_Market_Value)
def one():
x = np.arange(0,len(Turnover_))
b = np.array(Turnover_)
plt.bar(x,b)
plt.legend(loc='loc')
plt.title('Stock'+Name[0])
plt.xlabel('Time')
plt.ylabel('Turnover')
ax2 = plt.twinx()
ax2.set_ylabel('Price');
ax2.set_ylim([0, max(Open_)])
d = np.array(Open_)
plt.plot(x,d)
plt.show()
import datetime
import time
import random
import re
import csv
import numpy as np
import requests
from time import gmtime, strftime, strptime, time, gmtime, sleep
from datetime import timedelta, time, date, datetime
URL_Data_Infomation = 'http://api.money.126.net/data/feed/0600905,money.api?'
URL_Historical_Data_Information = 'http://quotes.money.163.com/service/chddata.html?code=0600905&start=20210630&end=20220304&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP'
User_Agent = ['User-Agent']
User_Agent_Headers = [
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1;Trident4.0;CIBA; .NETCLR2.0.50727; .NETCLR3.0.4506.2152; .NETCLR3.5.30729; .NET4.0C;InfoPath.2; .NET4.0E',
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; 360SE)',
'Mozilla/5.0 (Windows NT 6.1; WOW64)AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1']
def Random():
'''
中文:
随机的Headers
英文:
Random Headers
'''
random.shuffle(User_Agent_Headers)
Random = dict(zip(User_Agent,User_Agent_Headers))
return Random
Stock_Type = set()
def History_Tick():
Files = open('Code.csv','r',encoding='UTF-8',newline=None).read().splitlines()
for File in Files:
Stock_Type.add(str(re.findall(',D{1,3},(D{1,4}),d{8}$',File)))
if re.findall('SH',File) == ['SH']:
A_SH = re.findall('^d{6}',File)
a_SH = str(A)
b_SH = a[2:8]
c_SH = re.sub('code=0(d{6})','code=0'+b,URL_Historical_Data_Information)
requests.get('',Random()).text
time.sleep(0.1)
Name = str(b)
with open(Name, 'w', newline='',encoding='UTF-8') as csvfile:
Historical_data = csv.writer(csvfile)
Historical_data.writerow(s)
if re.findall('SZ',File) == ['SZ']:
A_SZ = re.findall('^d{6}',File)
a_SZ = str(A)
b_SZ = a[2:8]
c_SZ = re.sub('code=0(d{6})','code=1'+b,URL_Historical_Data_Information))
requests.get('',Random()).text
time.sleep(0.1)
Name_SZ =
with open(Name, 'w', newline='',encoding='UTF-8') as csvfile:
Historical_data = csv.writer(csvfile)
Historical_data.writerow(s)
Tick_Code = []
class Tick():
'''
中文:
把数据放入类中
English:
Put the data into the class
'''
Price = 'Price'
Open = 'Open'
High = 'High'
Low = 'Low'
Percent = 'Percent'
Datetime = 'Datetime'
def __init__(self,Price,Open,High,Low,Percent,Datetime):
'''
交易数据实例化
'''
self.Price = Price
self.Open = Open
self.High = High
self.Low = Low
self.Percent = Percent
self.Datetime = Datetime
def Data_Information():
'''
中文:
爬取网易财经API以及数据整理
English:
Crawl NetEase Finance API and data collation
'''
from time import gmtime, strftime, strptime, time, gmtime, sleep
from datetime import timedelta, time, date, datetime
Stock = requests.get(URL_Data_Infomation,headers=Random()).text
Stock_Info = Stock.split(',')
price = Stock_Info[7].split(sep=':')
open_ = Stock_Info[8].split(sep=':')
high = Stock_Info[2].split(sep=':')
low = Stock_Info[14].split(sep=':')
percent = Stock_Info[1].split(sep=':')
time_ = Stock_Info[23].split(sep=':',maxsplit=1)
Price = float(price[1])
Open = float(open_[1])
High = float(high[1])
Low = float(low[1])
Percent = float(percent[1])
Time = time_[1]
Datetime = datetime.strptime(Time, ' "%Y/%m/%d %H:%M:%S"')
Data = [Price,Open,High,Low,Percent,Datetime]
return Data



