乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      使用Python獲取歷史股價(jià)信息的幾種方式

       追夢(mèng)文庫(kù) 2022-09-30 發(fā)布于天津

      通過(guò)編程獲取歷史股價(jià)的方式很多,但是免費(fèi)的方式可以簡(jiǎn)單地分為四類:

      1. 使用某種網(wǎng)友開(kāi)發(fā)的插件: 比如Python就有TuShare, akshare, 這種只需要寫(xiě)幾行代碼就能獲取,但是不同的庫(kù)有不同的利弊。比如TuShare中有很多數(shù)據(jù)需要一定的積分才能獲取。
      2. 通過(guò)API接口,比如新浪,騰訊等等。
      3. 從專門的行情軟件上面提取數(shù)據(jù)。
      4. 從財(cái)經(jīng)網(wǎng)站上面爬取行情數(shù)據(jù)。

      使用TuShare獲取股價(jià)

      TuShare是非常方便使用的, 比如在官網(wǎng)拿到Token后, 一行調(diào)用就可以獲取股價(jià)信息:

      import tushare as ts
      
      ts.set_token('***')
      pro = ts.pro_api()
      
      price = ts.pro_bar(ts_code='000020.SZ', start_date='2022-09-01',     end_date='2022-09-09')
      price
      

      結(jié)果如圖:

      通過(guò)API獲取價(jià)格信息

      新浪API

      接口

      描述

      http://hq./list= + 股票代碼

      當(dāng)日行情

      http://hq./list=s_+ 股票代碼

      實(shí)時(shí)行情

      請(qǐng)求例子:

      import requests
      
      stock_code = 'sh600031,sz300866'
      
      header = { 'referer': 'http://finance.sina.com.cn' }
      
      # 當(dāng)日行情接口
      response = requests.get(f'http://hq./list={stock_code}', headers=header)
      print(response.text)
      

      結(jié)果

      var hq_str_sh600031="三一重工,15.750,15.750,16.260,16.310,15.660,16.260,16.270,
      
      105649444,1702155639.000,6161,16.260,870579,16.250,132500,16.240,87700,16.230,
      103100,
      16.220,400510,16.270,328600,16.280,198700,16.290,795400,16.300,548100,16.310,2022-09-09,15:00:00,00,";var hq_str_sz300866="安克創(chuàng)新,59.250,58.620,59.150,59.420,57.850,59.150,59.160,
      
      1703977,100420830.250,700,59.150,300,59.140,300,59.130,2000,59.120,7400,59.110,
      300,
      59.160,2000,59.170,2700,59.190,700,59.200,400,59.250,2022-09-09,15:35:00,00,D|0|0.000";
      

      以上數(shù)據(jù)用,分割字符串中的內(nèi)容,下標(biāo)從0開(kāi)始,依次為:

      標(biāo)號(hào)

      內(nèi)容

      標(biāo)號(hào)

      內(nèi)容

      0

      股票名字

      1

      當(dāng)天開(kāi)盤價(jià)

      2

      昨日收盤價(jià)

      3

      當(dāng)天收盤價(jià)

      4

      當(dāng)天最高價(jià)

      5

      當(dāng)天最低價(jià)

      ...

      指數(shù)也可以用這種方式獲取。但是無(wú)法獲取歷史的股價(jià)信息。如果某天沒(méi)有及時(shí)同步到本地?cái)?shù)據(jù)庫(kù),就無(wú)法使用該接口獲取那天的數(shù)據(jù)。接口可以一定性請(qǐng)求多個(gè)股票代碼,用,隔開(kāi),不能有空格。

      另外,這個(gè)接口現(xiàn)在一定要添加請(qǐng)求頭:

      header = { 'referer': 'http://finance.sina.com.cn' }

      不然就會(huì)報(bào)錯(cuò),提示:

      Kinsoku jikou desu!

      也就是日本語(yǔ)“禁止訪問(wèn)”的意思。很藝文!

      騰訊API

      接口

      描述

      http://qt./q= + 股票代碼

      最新行情

      http://qt./q=ff_ + 股票代碼

      獲取實(shí)時(shí)資金流向

      http://qt./q=s_pk + 股票代碼

      盤口分析

      http://qt./q=s_sh + 股票代碼

      簡(jiǎn)要信息

      請(qǐng)求例子:

      import requests
      
      stock_code = 'sh600031,sz300866'
      
      # 當(dāng)日行情接口
      response = requests.get(f'http://qt./q={stock_code}', timeout=6)
      print(response.text)
      

      結(jié)果

      v_sh600031="1~三一重工~600031~16.26~15.75~15.75~1056494~612059~444435~16.26~
      62~16.25~8706~16.24~1325~16.23~877~16.22~1031~16.27~4005~16.28~3286~16.29~1987~
      16.30~7954~16.31~5481~~20220909160001~0.51~3.24~16.31~15.66~
      16.26/1056494/1702155639~1056494~170216~1.24~30.06~~16.31~15.66~4.13~1381.01~
      1381.01~2.20~17.33~14.18~2.47~-10712~16.11~26.21~11.48~~~1.51~170215.5639~0.0000~
      0~ ~GP-A~-27.26~4.16~2.75~7.32~3.17~28.30~14.13~4.77~-3.21~-9.62~8493286021~
      8493286021~-30.86~-29.80~8493286021~~~-41.60~0.06~";
      v_sz300866="51~安克創(chuàng)新~300866~59.15~58.62~59.25~17040~9711~7329~59.15~7~59.14~3~
      59.13~3~59.12~20~59.11~74~59.16~3~59.17~20~59.19~27~59.20~7~59.25~4~~20220909161451~
      0.53~0.90~59.42~57.85~59.15/17040/100420830~17040~10042~1.13~20.92~~59.42~57.85~
      2.68~89.46~240.40~3.82~70.34~46.90~0.70~46~58.93~20.88~24.49~~~1.45~10042.0830~
      0.0000~0~ AR~GP-A-CYB~-41.84~-3.30~1.35~18.25~13.07~128.07~48.89~-6.41~-13.66~
      -5.83~151240045~406427207~27.38~-46.32~151240045~~~-45.35~-0.03~";

      以上數(shù)據(jù)用~分割字符串中的內(nèi)容,下標(biāo)從0開(kāi)始,依次為:

      標(biāo)號(hào)

      內(nèi)容

      標(biāo)號(hào)

      內(nèi)容

      0

      未知

      1

      股票名字

      2

      股票代碼

      3

      當(dāng)前價(jià)格

      4

      昨收

      5

      今開(kāi)

      6

      成交量(手)

      7

      外盤

      8

      內(nèi)盤

      9

      買一

      10

      買一量(手)

      11-18

      買二

      19

      賣一

      20

      賣一量

      21-28

      賣二

      29

      最近逐筆成交

      30

      時(shí)間

      31

      漲跌

      32

      漲跌%

      33

      最高

      34

      最低

      35

      價(jià)格/成交量(手)/成交額

      36

      成交量(手)

      37

      成交額(萬(wàn))

      38

      換手率

      39

      市盈率

      40

      41

      最高

      42

      最低

      43

      振幅

      44

      流通市值

      45

      總市值

      46

      市凈率

      47

      漲停價(jià)

      48

      市凈率

      弊端就是哪天接口被禁用了,這種方式就用不了了。

      從專門的行情軟件上面提取數(shù)據(jù)

      通達(dá)信

      通達(dá)信是使用非常廣泛的行情軟件,其公司財(cái)富趨勢(shì)已經(jīng)在港交所上市。在通達(dá)信軟件上下載行情后,數(shù)據(jù)會(huì)下載到本地(至少此時(shí)2022-09-10是這樣)。數(shù)據(jù)在通達(dá)信的安裝目錄下:

      可以使用程序讀出來(lái)。附完整解析代碼:

      import struct
      import datetime
      
      class stock_price:
      
          def __init__(self, stock_date, stock_open, stock_high, stock_low, stock_close, stock_amount, stock_vol):
              self.stock_date = stock_date
              self.stock_open = stock_open
              self.stock_high = stock_high
              self.stock_low = stock_low
              self.stock_close = stock_close
              self.stock_amount = stock_amount
              self.stock_vol = stock_vol
              
      
      def get_stock_price(filepath):
          data = []
          with open(filepath, 'rb') as f:
              while True:
                  stock_date = f.read(4)
                  stock_open = f.read(4)
                  stock_high = f.read(4)
                  stock_low= f.read(4)
                  stock_close = f.read(4)
                  stock_amount = f.read(4)
                  stock_vol = f.read(4)
                  stock_reservation = f.read(4)
      
                  if not stock_date:
                      break
                  stock_date = struct.unpack("l", stock_date)      # 4字節(jié) 如20220909
                  stock_open1 = struct.unpack("l", stock_open)     #開(kāi)盤價(jià)*100
                  stock_high1 = struct.unpack("l", stock_high)     #最高價(jià)*100
                  stock_low= struct.unpack("l", stock_low)         #最低價(jià)*100
                  stock_close = struct.unpack("l", stock_close)    #收盤價(jià)*100
                  stock_amount = struct.unpack("f", stock_amount)  #成交額
                  stock_vol = struct.unpack("f", stock_vol)       # 成交量
                  stock_reservation = struct.unpack("f", stock_reservation) #保留值
      
      
                  date_format = datetime.datetime.strptime(str(stock_date[0]),                '%Y%M%d') #格式化日期
                  
      
                  data.append(stock_price(date_format.strftime('%Y-%M-%d'),
                      stock_open1[0]/100.0,
      stock_high1[0]/100.0,\                stock_low[0]/100.0, stock_close[0]/100.0, stock_amount[0]/100.0,                 stock_vol[0]/100.0))
                  
      
          return data
      

      找一個(gè)文件試試:

      data_list = get_stock_price('./sz000002.day')
      print(f'交易日期: {data_list[-1:][0].stock_date}')
      print(f'開(kāi)盤價(jià): {data_list[-1:][0].stock_open}')
      print(f'最高價(jià): { data_list[-1:][0].stock_high}')
      print(f'最低價(jià): { data_list[-1:][0].stock_low}')
      print(f'收盤價(jià): { data_list[-1:][0].stock_close}')
      輸出:
      交易日期: 2022-09-09
      開(kāi)盤價(jià): 17.49
      最高價(jià): 18.39
      最低價(jià): 17.41
      收盤價(jià): 18.15

      在同花順里面驗(yàn)證了下價(jià)格信息,是正確的。不過(guò)這種方式的弊端在于,需要手工在通達(dá)信里面執(zhí)行更新數(shù)據(jù)的操作,并且通達(dá)信在未來(lái)某天變更了讀寫(xiě)文件的方式,這種方式就不能用了。其它的軟件也是類似的。這里要注意的是,如果需要讀取指數(shù)的信息,

      struct.unpack("l", stock_open)

      這行代碼里面的格式需要變動(dòng)一下,目前變成

      struct.unpack("f", stock_open)

      即可。

      從財(cái)經(jīng)網(wǎng)站上面爬取行情數(shù)據(jù)

      這種是最靠譜的方式的,但是實(shí)現(xiàn)也是比較繁瑣的,某種程度上,也有法律上面的風(fēng)險(xiǎn),參考:中國(guó)爬蟲(chóng)違法違規(guī)案例匯總 (
      https://github.com/HiddenStrawberry/Crawler_Illegal_Cases_In_China)。股票價(jià)格數(shù)據(jù)都是公開(kāi)的,不是什么隱私,但是程序?qū)懙牟缓?,把目?biāo)網(wǎng)站爬宕機(jī)了,就有法律風(fēng)險(xiǎn)了。上面例子中的新浪API接口還是很穩(wěn)定,支持高并發(fā)的。貌似可能是某個(gè)性能高手開(kāi)發(fā)的, 參考: 楊建:網(wǎng)站加速--服務(wù)器編寫(xiě)篇(上)(
      https://blog.csdn.net/lishenglong666/article/details/39028093), 原文不見(jiàn)了,放個(gè)轉(zhuǎn)載。

      提供股價(jià)信息的部分網(wǎng)站

      1. 雪球, https://xueqiu.com
      2. 集思錄, https://www./
      3. 巨潮資訊網(wǎng), http://www.
      4. 百度股市通, https://gushitong.baidu.com
      5. 東方財(cái)富網(wǎng), https://www.eastmoney.com/
      6. 同花順, https://www.10jqka.com.cn/

      ......

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多