Nicktang33 2024-04-25 12:28 采纳率: 0%
浏览 4

Futu 的API 抓取实时数据

我在用 Futu 的API 抓取实时数据,然後存放到csv file
但我面对两个问题

  1. Output 没有像 API 例子
    我的Output 最後是这样

img

例子

img

  1. 新的数据不停覆写了旧的,
    但我想按时间 Interval,
    每个新Data 进来可以自动开个新的Row 去存放Data

img

  1. 有乱码问题
  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-25 12:29
    关注

    引自免费微信小程序:皆我百晓生

    针对您遇到的问题,我将逐一提供解决方案。

    问题1:输出格式不符合预期

    首先,我们需要修改您的代码,使其按照API示例中的格式输出。为了实现这个目标,我们可以使用pandas库来处理数据并将其写入CSV文件。以下是修复后的代码:

    import pandas as pd
    from futu import *
    
    # 初始化连接
    quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
    
    # 订阅实时数据
    ret_sub, err_message = quote_ctx.subscribe(['HK.00700'], [SubType.RT_DATA], subscribe_push=False)
    if ret_sub == RET_OK:
        while True:
            # 获取一次分时数据
            ret, data = quote_ctx.get_rt_data('HK.00700')
            
            if ret == RET_OK:
                # 解析数据并转换为DataFrame
                df = pd.DataFrame(data, columns=['code', 'name', 'time', 'is_blank', 'opened_mins', 'cur_price', 'last_close', 'avg_price', 'volume', 'turnover'])
                
                # 如果DataFrame为空,则创建一个新的DataFrame
                if df.empty:
                    df = pd.DataFrame(columns=['code', 'name', 'time', 'is_blank', 'opened_mins', 'cur_price', 'last_close', 'avg_price', 'volume', 'turnover'])
    
                # 将新数据追加到现有DataFrame中
                df = df.append(df, ignore_index=True)
    
                # 将DataFrame写入CSV,每次写入前删除已有内容(防止重复)
                with open('output.csv', 'w', newline='') as f:
                    df.to_csv(f, index=False)
    
                # 暂停一段时间,避免过于频繁地请求数据(根据实际情况调整此延迟)
                time.sleep(1)
            else:
                print('Error:', data)
    else:
        print("Subscription failed", err_message)
    
    quote_ctx.close()
    

    问题2:解决乱码问题

    在Python中,确保正确编码至关重要。您可以尝试在读取和写入文件时指定正确的字符集。在上述代码中,我们已经使用了with open('output.csv', 'w', newline='', encoding='utf-8') as f:来指定UTF-8编码。

    注意: 这里假设您的原始数据已经是UTF-8编码的。如果不是,请先进行适当的转换。同时,确保您的环境也支持UTF-8编码,比如在Windows系统中,可能需要设置合适的终端编码。

    以上代码应该能解决您的问题。如果您还有其他疑问或遇到其他问题,请随时告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月25日

悬赏问题

  • ¥15 rt-thread线程切换的问题
  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊