问题描述
/
解决方案
在 ptrade 量化平台中,调用 get_market_detail(finance_mic) 时如果遇到“市场代码不存在”的报错,通常是因为传入了错误的 finance_mic(市场编码)。
finance_mic 参数的获取方法
finance_mic 参数必须从 get_market_list() 接口的返回结果中获取。
get_market_list() 接口会返回当前平台支持的所有市场列表,其返回的 DataFrame 中包含 finance_mic(市场编码)和 finance_name(市场名称)两个字段。
解决步骤与代码示例
步骤 1:调用 get_market_list() 查看所有支持的市场编码。
步骤 2:从返回的列表中找到你需要的市场对应的 finance_mic。
步骤 3:将正确的 finance_mic 传入 get_market_detail()。
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def before_trading_start(context, data):
# 1. 获取并打印所有市场列表,查找正确的 finance_mic
market_list_df = get_market_list()
log.info("当前支持的市场列表:\n%s" % market_list_df)
# 假设通过打印发现上海证券交易所的 finance_mic 是 'XSHG'
# 2. 使用正确的 finance_mic 获取市场详情
try:
sh_market_detail = get_market_detail('XSHG')
log.info("上海证券交易所详细信息:\n%s" % sh_market_detail)
except Exception as e:
log.error("获取市场详情失败:%s" % e)
def handle_data(context, data):
pass
⚠️ 重要注意事项
根据 ptrade API 文档规定,get_market_list() 和 get_market_detail() 这两个接口仅限在 before_trading_start(盘前)和 after_trading_end(盘后)事件中使用。如果在 handle_data 或 tick_data 等盘中函数中调用,可能会导致获取失败或报错。