9.3 KiB
9.3 KiB
In [97]:
# 2 clients for historical data StockHistoricalDataClient (needs keys), CryptoHistoricalDataClient # 2 clients for real time data CryptoDataStream, StockDataStream # naimportuju si daneho clienta from alpaca.data.historical import StockHistoricalDataClient, CryptoHistoricalDataClient #pokdu pouzivam historicke data(tzn. REST) tak si naimportuju dany request object from alpaca.data.requests import StockLatestQuoteRequest, StockBarsRequest, StockTradesRequest #objekty se kterymi pak pracuju (jsou soucasi package výše, tady jen informačně) from alpaca.data import Quote, Trade, Snapshot, Bar from alpaca.data.models import BarSet, QuoteSet, TradeSet from config import API_KEY, SECRET_KEY import datetime import pandas as pd # vytvorim si clienta stock_client = StockHistoricalDataClient(API_KEY, SECRET_KEY, raw_data=False) sloupce=["symbol","timestamp","exchange","price","size","id","conditions","tape"] # deklarace globalniho df s timeindexem #gdf = pd.DataFrame(columns=sloupce, index=pd.to_datetime([])) time_from = datetime.datetime(2023, 2, 17, 14, 50, 0, 0) time_to = datetime.datetime(2023, 2, 17, 14, 55, 1, 0) #print(time_from) # vytvorim request objekt #latestQuoteRequest = StockLatestQuoteRequest(symbol_or_symbols=["SPY", "GLD", "TLT"]) stockTradeRequest = StockTradesRequest(symbol_or_symbols=["BAC"], start=time_from,end=time_to) stockBarRequest = StockBarsRequest(symbol_or_symbols=["BAC"], start=time_from,end=time_to, timeframe="15s") #zavolam na clientovi metodu s request objektem, vrací se mi Dict[str, Quote] - obj.Quote pro kazdy symbol #latestQuoteObject = stock_client.get_stock_latest_quote(latestQuoteRequest) #tradesResponse = stock_client.get_stock_trades(stockTradeRequest).df stocksResponse = stock_client.get_stock_bars(stockBarRequest).df #data = [{'t': '2023-02-17T14:50:00.582845696Z', 'x': 'D', 'p': 34.83, 's': 1, 'c': [' ', 'I'], 'i': 71675642337847, 'z': 'A'}, {'t': '2023-02-17T14:50:00.948229632Z', 'x': 'D', 'p': 34.8383, 's': 10, 'c': [' ', 'I'], 'i': 79371872323411, 'z': 'A'}] # data = [{ 'conditions': [' ', 'I'], # 'exchange': 'D', # 'id': 71675642337847, # 'price': 34.83, # 'size': 1.0, # 'symbol': 'BAC', # 'tape': 'A', # 'timestamp': datetime.datetime(2023, 2, 17, 14, 50, 0, 582845, tzinfo=datetime.timezone.utc)}, { 'conditions': [' ', 'I'], # 'exchange': 'D', # 'id': 79371872323411, # 'price': 34.8383, # 'size': 10.0, # 'symbol': 'BAC', # 'tape': 'A', # 'timestamp': datetime.datetime(2023, 2, 17, 14, 50, 0, 948229, tzinfo=datetime.timezone.utc)}, { 'conditions': [' ', 'I'], # 'exchange': 'D', # 'id': 71675642400306, # 'price': 34.835, # 'size': 1.0, # 'symbol': 'BAC', # 'tape': 'A', # 'timestamp': datetime.datetime(2023, 2, 17, 14, 50, 1, 870989, tzinfo=datetime.timezone.utc)}, { 'conditions': [' ', 'I'], # 'exchange': 'D', # 'id': 71675642400308, # 'price': 34.84, # 'size': 100.0, # 'symbol': 'BAC', # 'tape': 'A', # 'timestamp': datetime.datetime(2023, 2, 17, 14, 55, 0, 88460, tzinfo=datetime.timezone.utc)}] # datetime.datetime(2023, 2, 17, 14, 50, 0, 948229, tzinfo=datetime.timezone.utc) #data = tradesResponse #gdf = pd.DataFrame.from_dict(data=data, orient='index') #gdf = pd.DataFrame(data) #gdf = pd.DataFrame(tradesResponse.data["BAC"]) # works with raw data #gdf = pd.DataFrame([t for t in tradesResponse["BAC"]], columns=sloupce) #gdf = tradesResponse.df print(stocksResponse) # print(tradesResponse) #print(tradesResponse["BAC"]) # print(tradesResponse.data["BAC"]) # positions_df = pd.concat((pd.DataFrame(position).set_index(0) for position in positions),axis=1) # positions_df = positions_df.T.apply(pd.to_numeric, errors='ignore').T # convert strings to numeric # For orders: # orders_df = pd.concat((pd.DataFrame(order).set_index(0) for order in orders),axis=1).T
--------------------------------------------------------------------------- ValidationError Traceback (most recent call last) Cell In[97], line 35 30 #print(time_from) 31 32 # vytvorim request objekt 33 #latestQuoteRequest = StockLatestQuoteRequest(symbol_or_symbols=["SPY", "GLD", "TLT"]) 34 stockTradeRequest = StockTradesRequest(symbol_or_symbols=["BAC"], start=time_from,end=time_to) ---> 35 stockBarRequest = StockBarsRequest(symbol_or_symbols=["BAC"], start=time_from,end=time_to, timeframe="15s") 37 #zavolam na clientovi metodu s request objektem, vrací se mi Dict[str, Quote] - obj.Quote pro kazdy symbol 38 #latestQuoteObject = stock_client.get_stock_latest_quote(latestQuoteRequest) 39 #tradesResponse = stock_client.get_stock_trades(stockTradeRequest).df 40 stocksResponse = stock_client.get_stock_bars(stockBarRequest).df File ~/Documents/Development/python/trading/.venv/lib/python3.11/site-packages/alpaca/data/requests.py:45, in BaseTimeseriesDataRequest.__init__(self, **data) 37 if ( 38 "end" in data 39 and data["end"] is not None 40 and isinstance(data["end"], datetime) 41 and data["end"].tzinfo is not None 42 ): 43 data["end"] = data["end"].astimezone(pytz.utc).replace(tzinfo=None) ---> 45 super().__init__(**data) File ~/Documents/Development/python/trading/.venv/lib/python3.11/site-packages/pydantic/main.py:342, in pydantic.main.BaseModel.__init__() ValidationError: 1 validation error for StockBarsRequest timeframe instance of TimeFrame expected (type=type_error.arbitrary_type; expected_arbitrary_type=TimeFrame)