股票
來自 Bloomberg API(或其他任何免費的地方)的逐秒股票數據到 Pandas Dataframe
我需要將 ADR 和 ORD 對(以及它們之間的貨幣)的股票價格數據編譯到 Pandas 數據框中。我最初的計劃是使用 Python 的 requests 庫和一個免費的 Rapid API 帳戶從 Bloomberg API 獲取數據,我在下面附上了程式碼。這個問題是時間間隔似乎最快是 5 分鐘,我需要更快。(“MY RAPID API KEY”已被刪除,因為您必須創建一個免費帳戶才能獲得密鑰。我的帳戶本月可以提出的請求已接近上限,因此我無法提供,抱歉不便)
import requests import pandas as pd import numpy as np import datetime def extract_ticks(interval="d1"): url="https://bloomberg-market-and-financial-news.p.rapidapi.com/market/get-chart" querystring = {"interval":interval,"id":"dge:ln"} headers = { 'x-rapidapi-host': "bloomberg-market-and-financial-news.p.rapidapi.com", 'x-rapidapi-key': "MY RAPID API KEY" } response = requests.request("GET", url, headers=headers, params=querystring) json_d = response.json() return json_d #Get year to date data ytd json_d = extract_ticks() print(json_d) # Write the data to json file import json with open("dge_ytd.json","w") as fp: json.dump(json_d,fp) import pandas as pd import datetime with open("dge_ytd.json","r") as fp: json_d = json.load(fp) ticks_d = json_d['result']['DGE:LN']['ticks'] df = pd.DataFrame(ticks_d) df['Close'] = df['close'] df['Date'] = df['time'].apply(lambda x:datetime.datetime.fromtimestamp(x)) df = df.set_index('time') data = df.sort_index(ascending=True, axis=0) data #creating a separate dataset new_data = data[['Date','Close']] index = range(0,len(new_data)) new_data['index']=index new_data=new_data.set_index('index') new_data['Date'] = pd.to_datetime(new_data.Date,format='%Y-%m-%d') new_data
這段程式碼非常適合我需要的格式化和數據幀的儲存,而且 Bloomberg API 非常易於使用。我的學校有一個彭博終端,我以前從未使用過。我可以使用終端許可證獲得更快的時間間隔,還是需要找到不同的數據源?如果是這樣,我可以使用哪些數據源可以非常便宜地獲得,我怎樣才能將數據放入 pandas df?
提前感謝,如果我可以在評論中提供任何澄清資訊,請告訴我;這是我的第一個問題,所以我希望我遵循了正確的格式化程序(我無法在 Jupyter 輸出中複製沒有列被弄亂的情況)
您好,您可以使用 Alphavantage 並查詢學生報價,這可以為您提供每分鐘更多的電話和每月更多的電話。您只需要擁有一個學生郵件帳戶並確認您的努力目的。