Доступ к данным фондового рынка и API: примеры с кодом

  1. API Alpha Vantage:
    Alpha Vantage предоставляет широкий спектр данных финансового рынка, включая котировки акций, исторические данные, технические индикаторы и многое другое. Вот пример того, как получить котировки акций с помощью API Alpha Vantage в Python:
import requests
def get_stock_quote(symbol):
    api_key = 'YOUR_API_KEY'  # Replace with your Alpha Vantage API key
    url = f'https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol={symbol}&apikey={api_key}'

    response = requests.get(url)
    data = response.json()

    if 'Global Quote' in data:
        quote_data = data['Global Quote']
        symbol = quote_data['01. symbol']
        price = quote_data['05. price']
        change_percent = quote_data['10. change percent']

        print(f'Symbol: {symbol}')
        print(f'Price: {price}')
        print(f'Change Percent: {change_percent}')
    else:
        print('Stock quote not found.')
# Usage
get_stock_quote('AAPL')
  1. API Yahoo Finance:
    Yahoo Finance предлагает богатый набор финансовых данных и API. Несмотря на то, что их официальный API устарел, вы все равно можете получить доступ к данным через неофициальные сторонние библиотеки. Вот пример использования библиотеки yfinance:
import yfinance as yf
def get_stock_info(symbol):
    stock = yf.Ticker(symbol)
    info = stock.info

    if info:
        print(f'Symbol: {info["symbol"]}')
        print(f'Price: {info["regularMarketPrice"]}')
        print(f'Change Percent: {info["regularMarketChangePercent"]}')
    else:
        print('Stock information not found.')
# Usage
get_stock_info('AAPL')
  1. API Interactive Brokers:
    Interactive Brokers — популярная брокерская фирма, предлагающая API, обеспечивающий программный доступ к их торговой платформе. Вот пример использования API Interactive Brokers с библиотекой ibapiна Python:
from ibapi.client import EClient
from ibapi.wrapper import EWrapper
class MyWrapper(EWrapper):
    def __init__(self):
        super().__init__()
    def error(self, reqId, errorCode, errorString):
        print(f'Error: {errorString}')
    def tickPrice(self, reqId, tickType, price, attrib):
        if tickType == 4:  # Last price
            print(f'Price: {price}')
def get_last_price(symbol):
    app = EClient(MyWrapper())
    app.connect('127.0.0.1', 7497, clientId=0)  # Replace with your connection details
    app.reqMktData(1, symbol, '', False, False, [])  # Request market data
    app.run()
    app.disconnect()
# Usage
get_last_price('AAPL')