股票

來自 Bloomberg API(或其他任何免費的地方)的逐秒股票數據到 Pandas Dataframe

  • February 26, 2021

我需要將 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

Jupyter 輸出

這段程式碼非常適合我需要的格式化和數據幀的儲存,而且 Bloomberg API 非常易於使用。我的學校有一個彭博終端,我以前從未使用過。我可以使用終端許可證獲得更快的時間間隔,還是需要找到不同的數據源?如果是這樣,我可以使用哪些數據源可以非常便宜地獲得,我怎樣才能將數據放入 pandas df?

提前感謝,如果我可以在評論中提供任何澄清資訊,請告訴我;這是我的第一個問題,所以我希望我遵循了正確的格式化程序(我無法在 Jupyter 輸出中複製沒有列被弄亂的情況)

您好,您可以使用 Alphavantage 並查詢學生報價,這可以為您提供每分鐘更多的電話和每月更多的電話。您只需要擁有一個學生郵件帳戶並確認您的努力目的。

引用自:https://quant.stackexchange.com/questions/61350