中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

class類在python中如何獲取金融數據

發布時間:2020-12-11 11:12:06 來源:億速云 閱讀:193 作者:小新 欄目:開發技術

這篇文章主要介紹了class類在python中如何獲取金融數據,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

使用tushare獲取所有A股每日交易數據,保存到本地數據庫,同時每日更新數據庫;根據行情數據進行可視化和簡單的策略分析與回測。由于篇幅有限,本文著重介紹股票數據管理(下載、數據更新)的面向對象編程應用實例。

#導入需要用到的模塊
import numpy as np
import pandas as pd
from dateutil.parser import parse
from datetime import datetime,timedelta
#操作數據庫的第三方包,使用前先安裝pip install sqlalchemy
from sqlalchemy import create_engine
#tushare包設置
import tushare as ts
token='輸入你在tushare上獲得的token'
pro=ts.pro_api(token)
#使用python3自帶的sqlite數據庫
#本人創建的數據庫地址為c:\zjy\db_stock\
file='sqlite:///c:\\zjy\\db_stock\\'
#數據庫名稱
db_name='stock_data.db'
engine = create_engine(file+db_name)
class Data(object):
  def __init__(self,
         start='20050101',
         end='20191115',
         table_name='daily_data'):
    self.start=start
    self.end=end
    self.table_name=table_name
    self.codes=self.get_code()
    self.cals=self.get_cals()    
  #獲取股票代碼列表  
  def get_code(self):
    codes = pro.stock_basic(list_status='L').ts_code.values
    return codes
  #獲取股票交易日歷
  def get_cals(self):
    #獲取交易日歷
    cals=pro.trade_cal(exchange='')
    cals=cals[cals.is_open==1].cal_date.values
    return cals
  #每日行情數據
  def daily_data(self,code):
    try:
      df0=pro.daily(ts_code=code,start_date=self.start,
        end_date=self.end)      
      df1=pro.adj_factor(ts_code=code,trade_date='') 
      #復權因子
      df=pd.merge(df0,df1) #合并數據
    except Exception as e:
      print(code)
      print(e)
    return df
  #保存數據到數據庫
  def save_sql(self):
    for code in self.codes:
      data=self.daily_data(code)
      data.to_sql(self.table_name,engine,
         index=False,if_exists='append')
  #獲取最新交易日期
  def get_trade_date(self):
    #獲取當天日期時間
    pass
  #更新數據庫數據
  def update_sql(self):
    pass #代碼省略
  #查詢數據庫信息      
  def info_sql(self):

代碼運行

#假設你將上述代碼封裝成class Data
#保存在'C:\zjy\db_stock'目錄下的down_data.py中
import sys
#添加到當前工作路徑
sys.path.append(r'C:\zjy\db_stock')
#導入py文件中的Data類
from download_data import Data
#實例類
data=Data()
#data.save_sql() #只需運行一次即可
data.update_sql()   
data.info_sql()

實例擴展:

Python下,pandas_datareader模塊可以用于獲取研究數據。例子如下:

>>> from pandas_datareader.data import DataReader
>>>
>>> datas = DataReader(name='AAPL', data_source='yahoo', start='2018-01-01')
>>>
>>> type(datas)
<class 'pandas.core.frame.DataFrame'>
>>> datas
         Open    High     Low    Close  Adj Close \
Date
2018-01-02 170.160004 172.300003 169.259995 172.259995 172.259995
2018-01-03 172.529999 174.550003 171.960007 172.229996 172.229996
2018-01-04 172.539993 173.470001 172.080002 173.029999 173.029999
2018-01-05 173.440002 175.369995 173.050003 175.000000 175.000000
2018-01-08 174.350006 175.610001 173.929993 174.350006 174.350006
2018-01-09 174.550003 175.059998 173.410004 174.330002 174.330002
2018-01-10 173.160004 174.300003 173.000000 174.289993 174.289993
2018-01-11 174.589996 175.490005 174.490005 175.279999 175.279999
2018-01-12 176.179993 177.360001 175.649994 177.089996 177.089996

       Volume
Date
2018-01-02 25555900
2018-01-03 29517900
2018-01-04 22434600
2018-01-05 23660000
2018-01-08 20567800
2018-01-09 21584000
2018-01-10 23959900
2018-01-11 18667700
2018-01-12 25226000
>>>
>>> print(datas.to_csv())
Date,Open,High,Low,Close,Adj Close,Volume
2018-01-02,170.160004,172.300003,169.259995,172.259995,172.259995,25555900
2018-01-03,172.529999,174.550003,171.960007,172.229996,172.229996,29517900
2018-01-04,172.539993,173.470001,172.080002,173.029999,173.029999,22434600
2018-01-05,173.440002,175.369995,173.050003,175.0,175.0,23660000
2018-01-08,174.350006,175.610001,173.929993,174.350006,174.350006,20567800
2018-01-09,174.550003,175.059998,173.410004,174.330002,174.330002,21584000
2018-01-10,173.160004,174.300003,173.0,174.289993,174.289993,23959900
2018-01-11,174.589996,175.490005,174.490005,175.279999,175.279999,18667700
2018-01-12,176.179993,177.360001,175.649994,177.089996,177.089996,25226000

>>>

感謝你能夠認真閱讀完這篇文章,希望小編分享class類在python中如何獲取金融數據內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

开封市| 黔西| 霍山县| 博湖县| 榆中县| 黑龙江省| 阳谷县| 庆城县| 得荣县| 南汇区| 盐池县| 香河县| 濮阳县| 镇远县| 哈巴河县| 朔州市| 临海市| 郴州市| 永胜县| 六枝特区| 贵阳市| 江达县| 定陶县| 云霄县| 新乐市| 江城| 桑植县| 和龙市| 龙泉市| 本溪| 那坡县| 方山县| 霍城县| 定安县| 政和县| 米易县| 行唐县| 胶州市| 县级市| 疏附县| 阿鲁科尔沁旗|