返回列表 发布新帖

获取实时行情失败

713 0
发表于 2024-11-29 16:45:32 | 显示全部楼层 阅读模式

这段代码的功能是获取excel中的股票列表,然后进行买入操作。

但使用xtdata.get_market_data_ex()获取不到数据,编程小白,请大佬帮忙看看是什么问题。

# encoding:gbk

import pandas as pd
import os
from xtquant import xtdata
from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
from xtquant.xttype import StockAccount
from xtquant import xtconstant

# 指定包含Excel文件的文件夹路径
folder_path = 'C:\\stocklist'

# 初始化一个空列表来存储所有股票信息,每个元素是一个包含股票代码和名称的元组
all_stocks = []

# 获取文件夹中的Excel文件
excel_files = [f for f in os.listdir(folder_path) if
               f.endswith('.xlsx') or f.endswith('.xls') and not f.startswith('~$')]

# 尝试读取每个Excel文件
for filename in excel_files:
    file_path = os.path.join(folder_path, filename)

    try:
        df = pd.read_excel(file_path)

        # 假设股票名称和代码分别在列名为'股票简称'和'股票代码'的列
        # 提取这两列数据
        stock_names = df['股票简称'].tolist()
        stock_codes = df['股票代码'].tolist()

        # 将提取出的股票代码和名称组合成元组,并添加到all_stocks列表中
        for code, name in zip(stock_codes, stock_names):
            # 检查股票代码和名称是否为有效值
            if code not in ['undefined', '数据来源于:i问财网站(iwencai.com)'] and name not in ['undefined']:
                all_stocks.append((code, name))

    except Exception as e:
        print(f"无法读取文件 {filename}: {e}")

# 打印所有提取出的股票信息
print("所有股票信息:")
for stock in all_stocks:
    print(stock)

# 打印股票数量
print(f"总共提取到 {len(all_stocks)} 只股票信息。")

# QMT平台相关参数
path = 'C:\\国金QMT交易端模拟\\userdata_mini'  # 国金QMT交易端模拟的路径
session_id = 11234567  # 会话编号,不同的Python策略需要使用不同的会话编号
account_id = '36275303'  # 您的资金账号

# 创建XtQuantTrader实例
xt_trader = XtQuantTrader(path, session_id)

# 创建资金账号对象
acc = StockAccount(account_id)


# 创建交易回调类对象,并声明接收回调
class MyXtQuantTraderCallback(XtQuantTraderCallback):
    def on_disconnected(self):
        print("连接断开")

    def on_account_status(self, status):
        print("账号状态:", status)

    def on_stock_order(self, order):
        print(f"委托回报:{order.stock_code}, 订单状态:{order.order_status}, 订单编号:{order.order_sysid}")


# 注册回调
xt_trader.register_callback(MyXtQuantTraderCallback())

# 启动交易线程
xt_trader.start()

# 建立交易连接
connect_result = xt_trader.connect()
if connect_result != 0:
    print("连接失败,错误码:", connect_result)
else:
    print("连接成功")
    # 订阅账号信息
    xt_trader.subscribe(acc)

    # 买入股票
    for stock_code, _ in all_stocks:
        print(f"\n正在查询股票:{stock_code} 的价格")
        # 查询股票的最新价格
        market_data = xtdata.get_market_data_ex(['lastPrice'], [stock_code], '1d', '', '', count = -1)

        # 检查market_data是否包含数据
        if market_data and stock_code in market_data and not market_data[stock_code].empty:
            current_price = market_data[stock_code].iloc[0]['lastPrice']
            volume = int(7000 / current_price)  # 计算可以购买的股票数量
            print(f"股票:{stock_code},当前价格:{current_price},可以购买数量:{volume}")
            # 下单买入,这里使用市价买入
            order_id = xt_trader.order_stock(acc, stock_code, xtconstant.STOCK_BUY, volume, xtconstant.MARKET_BEST, 0,
                                             "买入股票", "买入操作")
            print(f"下单结果:{order_id}")
        else:
            print(f"未能获取到股票:{stock_code} 的价格信息")

    # 阻塞线程,接收交易推送
    xt_trader.run_forever()

C:\Users\23369\Desktop\qmt策略.venv\Scripts\python.exe C:\Users\23369\Desktop\qmt策略\模块测试.py

所有股票信息: ('000882.SZ', '华联股份') ('600292.SH', '远达环保') ('000886.SZ', '海南高速') ('600576.SH', '祥源文旅') ('601698.SH', '中国卫通') ('600172.SH', '黄河旋风') ('002878.SZ', '元隆雅图') ('603002.SH', '宏昌电子') ('000953.SZ', '河化股份') ('002584.SZ', '西陇科学') 总共提取到 10 只股票信息。 连接成功

正在查询股票:000882.SZ 的价格 xtdata连接成功 服务信息: {'tag': 'sp3', 'version': '1.0'} 服务地址: 127.0.0.1:58610 数据路径: C:\国金QMT交易端模拟\bin.x64/../userdata_mini/datadir 设置xtdata.enable_hello = False可隐藏此消息

未能获取到股票:000882.SZ 的价格信息

正在查询股票:600292.SH 的价格 未能获取到股票:600292.SH 的价格信息

正在查询股票:000886.SZ 的价格 未能获取到股票:000886.SZ 的价格信息

正在查询股票:600576.SH 的价格 未能获取到股票:600576.SH 的价格信息

正在查询股票:601698.SH 的价格 未能获取到股票:601698.SH 的价格信息

正在查询股票:600172.SH 的价格 未能获取到股票:600172.SH 的价格信息

正在查询股票:002878.SZ 的价格 未能获取到股票:002878.SZ 的价格信息

正在查询股票:603002.SH 的价格 未能获取到股票:603002.SH 的价格信息

正在查询股票:000953.SZ 的价格 未能获取到股票:000953.SZ 的价格信息

正在查询股票:002584.SZ 的价格 未能获取到股票:002584.SZ 的价格信息

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2025 迅投QMT社区 版权所有 All Rights Reserved. 蜀ICP备19002686号-2
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表