You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

交易算法开发求助:FTX BTC实时价格与本地时间DataFrame合并失败问题

解决FTX价格与时间数据整合的问题

我来帮你捋清楚问题出在哪,以及怎么快速修复它!

首先,你的核心问题是错误地把单个DataFrame对象直接追加到列表,然后简单拼接两个列表,这就导致每次循环都会把之前所有的时间和价格数据堆在一起,输出自然混乱。另外,你处理API返回数据的方式也有点绕,完全可以更简洁高效。

咱们一步步来调整:

1. 简化API数据获取逻辑

你不需要把整个API响应转成DataFrame再删删减减,直接从返回的JSON里提取当前价格就行,省掉很多不必要的操作:

response = requests.get('https://ftx.com/api/markets/BTC-PERP').json()
current_price = response['result']['price']  # 直接拿到BTC当前价格

2. 正确存储时间与价格数据

别再把单个小DataFrame往列表里塞了,改用列表存储时间字符串和价格数值的组合,后续整合起来会轻松很多:

# 初始化存储数据的列表,每个元素是一组时间+价格的字典
data_records = []

3. 修复循环逻辑,输出整洁表格

每次循环获取时间和价格后,把它们作为一组数据添加到列表,再用Pandas转成你想要的表格格式输出:

from datetime import datetime
import time
import pandas as pd
import requests

data_records = []
while True:
    # 获取当前BTC实时价格
    response = requests.get('https://ftx.com/api/markets/BTC-PERP').json()
    current_price = response['result']['price']
    
    # 获取格式化后的本地时间
    local_time_str = time.strftime("%H:%M:%S", time.localtime())
    
    # 把当前时间和价格作为一组数据存入列表
    data_records.append({'Time': local_time_str, 'Price': current_price})
    
    # 转成DataFrame并打印成整洁表格
    result_df = pd.DataFrame(data_records)
    print(result_df.to_string(index=False))  # 隐藏索引,输出更干净
    print("-" * 35)  # 打印分隔线区分每次循环
    
    time.sleep(5)

4. 关于你需要的「每分钟开盘/收盘价」

如果要实现这个需求,可以在循环里增加分钟判断逻辑:

  • 用变量记录上一个分钟(比如last_minute = None)
  • 每次循环获取当前分钟current_minute = datetime.now().minute
  • 当分钟变化时,把上一分钟的最后一个价格作为收盘价,当前分钟的第一个价格作为开盘价,单独存入另一组数据中

原代码输出混乱的原因

  • zeit.append(mylocaltime)是把一个只有一行的DataFrame加到列表,每次循环zeit里就多一个独立的小DataFrame
  • opens.append(df1)同理,opens里也是一堆零散的价格DataFrame
  • zeit + opens只是把两个列表简单拼接,相当于把所有历史的时间DataFrame和价格DataFrame堆在一起,输出自然是混乱的格式

这样修改后,你就能得到和预期一致的整洁表格输出啦!

内容的提问来源于stack exchange,提问作者LukeNuke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 16:12:49