将“Alpaca Markets”历史数据时间戳存储到sqlite数据库中的常规日期时间字段

pgvzfuti  于 2023-01-05  发布在  SQLite
关注(0)|答案(1)|浏览(122)

Alpaca返回four_hourly_bars历史条形数据,格式如下;

data={'AMD': [{   'close': 63.76,
    'high': 63.76,
    'low': 62.7,
    'open': 62.94,
    'symbol': 'AMD',
    'timestamp': datetime.datetime(2022, 10, 3, 8, 0, tzinfo=datetime.timezone.utc),
    'trade_count': 2344.0,
    'volume': 151923.0,
    'vwap': 63.328798}, {   'close': 65.655,
    'high': 66.3501,
    'low': 63.39,
    'open': 63.74,
    'symbol': 'AMD',
    'timestamp': datetime.datetime(2022, 10, 3, 12, 0, tzinfo=datetime.timezone.utc),
    'trade_count': 217416.0,
    'volume': 42176972.0,
    'vwap': 65.356385},...]}

我的主要问题是时间戳字段,我过去使用旧的alpaca_trade_API将其存储为datetime,但现在使用新的alpaca-py库,时间戳有了额外的信息,如上文所示,我使用的代码(在修复新标签后)是:

# Downloading 4H time-frame data (one by one)...
for symbol in tqdm(symbols, desc='Downloading 4H Data'):
    request_parameters = StockBarsRequest(symbol_or_symbols=symbol, timeframe=TimeFrame(4, TimeFrameUnit.Hour),
                                          start=datetime.strptime(One_Year_from_Today, '%Y-%m-%d'),
                                          end=None, adjustment='raw')
    four_hourly_bars = client.get_stock_bars(request_parameters)

    for bar in four_hourly_bars:
        stock_id = symbol_dic[symbol]
        cursor.execute("""INSERT INTO alpaca_stock_prices_4H (stock_id, date, open, high, low, close, volume) VALUES
        (?, ?, ?, ?, ?, ?, ?)""", (stock_id, bar.timestamp.tz_localize(None).isoformat(), bar.open, bar.high,
                                   bar.low, bar.close, bar.volume))

现在我得到这个错误:AttributeError: 'tuple' object has no attribute 'timestamp'
如何从'timestamp': datetime.datetime(2022, 10, 3, 12, 0, tzinfo=datetime.timezone.utc)中读取日期时间字符串值并将其存储在数据库的sqlite日期列中?
我确实在新的库中将旧的“t”、“o”、“h”、“l”、“c”、“v”更改为相应的新名称,但我仍然无法正确读取日期时间。

bsxbgnwa

bsxbgnwa1#

现在我知道了问题的解决方案,因为我在for循环中缺少了[symbol]:'#正在下载4 H时间帧数据(逐个)... tqdm中的符号(symbols,desc =' Downloading 4 H Data '):请求参数=股票条请求(符号或符号=符号,时间帧=时间帧(4,时间帧单位.小时),开始=日期时间.字符串时间(从今天算起一年,“%Y-%m-% d”),结束=无,调整=“原始”)四小时条=客户端.获取股票条(请求参数)

for bar in four_hourly_bars[symbol]:
    stock_id = symbol_dic[symbol]
    cursor.execute("""INSERT INTO alpaca_stock_prices_4H (stock_id, date, open, high, low, close, volume) VALUES
    (?, ?, ?, ?, ?, ?, ?)""", (stock_id, bar.timestamp, bar.open, bar.high,
                               bar.low, bar.close, bar.volume))`

关于.tz_localize(None).isoformat(),出现了一个新问题,它产生了错误AttributeError: 'datetime.datetime' object has no attribute 'tz_localize'......有什么想法如何修复它?

相关问题