列表 用法 List set tuple Dict

#集合 不含重复对象
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 内置函数可以查看对象类型

  1. int整数型 float浮点型
  2. str字符串
  3. 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("1\n1")

#1
#1

print(r'1\n1')#r字符串对象符号不在进行转意

#>>1\n1

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

  1. 函数名Total_area 函数名一定要符合Python书写规范
  2. Extent,Width 形参
  3. Accumulate = Extent*Width函数体运行函数就会执行这个
  4. 运行完函数 如果不进行return我们想要的值或内容执行这个函数就没有什么意义了
  5. 执行函数 : 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

Python 量化交易 数据分析学习之旅相关推荐

  1. 【python量化交易学习】pandas获取mysql数据,使用pyecharts画K线图,ma移动均线。

    将pyecharts官方提供的数据源,替换成已经存在mysql中的数据.画出专业的k线图(k线+ma移动均线+交易额柱状图(单位是千)) 参考: [python量化交易学习]pandas获取tusha ...

  2. 【python量化交易学习】从tushare获取股票交易数据,存入后再从mysql或excel读取数据,筛选股票,用pyecharts画出K线图。

    选定日期,筛选涨幅达到10%的股票,并画出K线图.观察涨停后股票走势. 由于创业板涨停板为20%,科创板20%,北交所30%.因此筛选出的涨停股票不完全准确.考虑到目前市场打板主要集中在10%的主板股 ...

  3. 福利 | 零基础学习Python量化交易 !(深圳)

    文末有数据派独家福利  投资界的人才需求 量化投资在中国已经进入到一个高速发展期.量化人才需求也成为众多金融企业的关注.金融科技企业发现中国目前正面临严重的金融科技专业人才短缺.而量化分析从业者,俗称 ...

  4. python量化交易策略实例_Python进阶量化交易场外篇3——最大回撤评价策略风险...

    新年伊始,很荣幸笔者的<教你用 Python 进阶量化交易>专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习 ...

  5. python统计套利_清华编程高手尹成带你基于算法实践python量化交易

    清华编程高手尹成带你基于算法实践python量化交易 量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种"大概率"事件以制定策 ...

  6. 4、Python量化交易-双均线策略

    目录 一.数据准备 二.5日均线和30日均线 1 - 均线的概念 2 - 计算5日均线与30日均线 3 - 画出MA5和MA30 三.金叉和死叉 1 - 金叉和死叉概念 2 - 分析所有金叉日期和死叉 ...

  7. python 量化交易:MACD指标双金叉形态识别

    python 量化交易:MACD指标双金叉形态识别: df 是pandas的Dataframe,基础数据原来是 tushare 中的股票交易数据,MACD指标是用 talib 库计算得来: df = ...

  8. Python量化交易06——Fama-French三因子模型(Rmt,SMB,HML)

    参考书目:深入浅出Python量化交易实战 本次带来的是著名的获得了诺贝尔奖的三因子模型. 因子模型介绍 Fama和French从可以解释股票收益率的众多因素中提取出了三个重要的影响因子,即市场风险溢 ...

  9. python一元线性回归算法_6一元线性回归_清华编程高手尹成带你基于算法实践python量化交易_其他视频-51CTO学院...

    清华编程高手尹成带你基于算法实践python量化交易 量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种"大概率"事件以制定策 ...

最新文章

  1. mysql中的索引对查询的影响
  2. LiveVideoStackCon深圳 - 洞察多媒体技术生态趋势与机会
  3. 小程序 iphone和安卓_如何阻止iPhone和iPad应用程序要求评级
  4. Project Reactor展开方法
  5. 用excel打开文本内容
  6. vscode如何使用命令面板
  7. websocket php MySQL_PHP写了一个websocket服务,mysql连接实例丢失问题怎么解决?
  8. PHP 获取访问来源
  9. 如何在MySQL中重置AUTO_INCREMENT?
  10. JQuery快速学一(强悍的选择器)
  11. 通过SessionID和用户名来保证同一个用户不能同时登录
  12. matlab 逆矩阵计算器,高等数学计算器
  13. python程序自动运行_定时后台运行Python程序
  14. php wordpressCMS 网站局域网搭建--笔记
  15. JavaScript实现动态写入表格
  16. 如何使用aria2及webui-aria2下载百度云资源
  17. 微信小程序订单生成支付二维码接口 code
  18. 如何用matlab在Excel中画画 附源代码
  19. 【Vue2】自定义指令 directives 过滤器 filter
  20. 03_泰坦尼克号幸存者分析(下)

热门文章

  1. 【教程】每天30分钟免费的视频自动生成字幕的方法
  2. linux忘了用户名和密码_linux用户名和密码忘记怎么办
  3. java okhttp下载图片_Android基于OkHttp实现下载和上传图片
  4. 软件测试——软件质量模型
  5. 成功解决:AssertionError: Torch not compiled with CUDA enabled
  6. 专访腾讯方亮:WeTest品牌全面升级,“好的产品一定深谙人性”
  7. 中国精细化工产业深度调研及投资前景预测报告2022-2028年
  8. 高频的25个OSPF问答题,能全部答出来,我把路由器吃了~
  9. 云豹短视频app源码中,用户定位与位置筛选功能如何实现
  10. Mybatis-plus apply函数使用