Блог им. Login1

Нужна помощь с загрузкой котировок

    • 23 августа 2022, 09:07
    • |
    • Login1
  • Еще
Добрый день,

Мне необходимо загрузить исторические котировки (дневки) по большому списку акций. Например, все по площадке NASDAQ. Вид результата:

 
TICKER DATE TIME HIGH OPEN LOW CLOSE VOLUME
AAPL 21.07.2022            
AAPL 22.07.2022            
GOOG 21.07.2022            
GOOG 22.07.2022            
NFLX 21.07.2022            
NFLX 22.07.2022            
             

Зачем так — хочу сделать нечто вроде скринера.

Нужна помощь, не знаю, как это осуществить. Втч за разумное вознаграждение

Благодарю заранее
★2
17 комментариев
Ну на питоне код строчек 5-10 будет). Если какой-нибудь yahoo finance как источник данных подойдет.
avatar
Replikant_mih, Шикарно, подойдет! Можно будет еще таким же образом грузить валюты, фьючерсы, крипту? И настроить автоматическую выгрузку в txt?
И цена вопроса?
avatar
Login1, Автоматическую выгрузку можно. Про остальные типы активов не знаю — надо смотреть дает ли этот источник такие данные, если не дает, искать другой.
avatar
Replikant_mih, Ок, пойдет. Возьметесь написать?
avatar
Login1, Лучше не стоит)
avatar
Replikant_mih, Почему?
avatar
Login1, В простом варианте можно было бы в охоточку написать, а тут вы фичей добавили, а это уже надо будет подольше посидеть, позамороченней. А для не своих задач это делать влом).
avatar
Replikant_mih, Давайте без фичей тогда, простой вариант по акциям. С фичами сам посижу позаморачиваюсь, если покажете, как там что работает)

avatar

Login1, 

 

!conda install yfinance
!conda install pandas

from time import sleep
import yfinance as yf
import pandas as pd

 

tickers = ['MSFT', 'AAPL']
pauseSeconds = 0.5

for ticker in tickers:
   ticker_ = yf.Ticker(ticker)
   df = ticker_.history(period=«max»)
   df.drop(columns=['Dividends', 'Stock Splits'], inplace=True)
   df.to_csv(f'{ticker}.csv')
   print(f'{ticker} — DONE')
   sleep(pauseSeconds)

avatar

Replikant_mih, Первые две строчки — если через Jupyter запускать чтобы пакеты установить. Запускать через Jupyter или как обычный python код. 

 

Если тебе эти слова ни о чем не говорят)), то надо поставить Miniconda или Anaconda.

avatar
Replikant_mih, Спасибо! Но тут заморочка есть со списком тикеров. Нужно запихнуть сюда tickers = ['MSFT', 'AAPL'] список всех тикеров по торговой площадке / стране. Т.к. выгрузка нужна под скринер, а руками туда я все тикеры не набью, при том, что еще и меняются
avatar

Login1, Ожидаемо)).

 

import requests
import io

from time import sleep
import yfinance as yf
import pandas as pd

url=«pkgstore.datahub.io/core/nasdaq-listings/nasdaq-listed_csv/data/7665719fb51081ba0bd834fde71ce822/nasdaq-listed_csv.csv»
s = requests.get(url).content
tickers = pd.read_csv(io.StringIO(s.decode('utf-8')))['Symbol'].unique()

pauseSeconds = 0.5

for ticker in tickers:
   try:
      ticker_ = yf.Ticker(ticker)
      df = ticker_.history(period=«max»)
      df.drop(columns=['Dividends', 'Stock Splits'], inplace=True)
      df.to_csv(f'{ticker}.csv')
      print(f'{ticker} — DONE')
      sleep(pauseSeconds)
   except:
      print(f'{ticker} — ERROR')

avatar
Replikant_mih, Спасибо!
avatar

Replikant_mih, а в чем проблема Yahoo finance? Задержка?

В скором времени планирую решать схожую задачу. Нужны данные по фьючам и без задержек, запросы раз в минуту, например, не подскажите откуда легче вязть?

avatar
Kot_Begemot, Не знаю, открытый бесплатный источник, такие часто грешат косяками в данных или чем-то таким. Только на этом основывал сомнения в источнике. А так хз, может и норм. По ограничениям и где лучше брать не подскажу — я на MOEX специализируюсь щас).
avatar

теги блога Login1

....все тэги



UPDONW
Новый дизайн