问题描述
解决方案
您可以通过 PTrade API 提供的 get_market_list() 函数来查询平台支持的所有交易市场及其对应的代码。
针对您的具体问题:中国金融期货交易所在 PTrade 平台中的市场代码为 CCFX。
以下是详细的查询方法、代码示例以及常用市场代码对照表。
1. 使用代码查询支持的市场
您可以在策略的 before_trading_start 函数中调用 get_market_list(),该函数会返回一个包含市场编码(finance_mic)和市场名称(finance_name)的 DataFrame 数据。
def initialize(context):
# 初始化函数,必须存在
pass
def before_trading_start(context, data):
# 获取所有支持的市场列表
# 返回类型为 pandas.DataFrame
market_df = get_market_list()
# 打印完整的市场列表到日志
log.info("平台支持的所有市场列表:")
log.info(market_df)
# 专门查询“中国金融期货交易所”的代码
# 注意:需确保字符串匹配,或者直接查看完整列表
target_market = "中国金融期货交易所"
result = market_df[market_df['finance_name'] == target_market]
if not result.empty:
log.info("查询结果 - %s 的代码为:" % target_market)
log.info(result)
else:
log.info("未找到名称为 %s 的市场" % target_market)
def handle_data(context, data):
# 必须存在,但在本示例中不执行操作
pass
2. 常用市场代码对照表
根据 PTrade 文档,以下是国内主要交易市场及其对应的代码(finance_mic)和证券代码后缀:
| 市场名称 | 市场代码 (finance_mic) | 证券代码后缀 (用于下单/行情) | 示例 |
|---|---|---|---|
| 上海证券交易所 | XSHG |
.SS |
600570.SS (恒生电子) |
| 深圳证券交易所 | XSHE |
.SZ |
000001.SZ (平安银行) |
| 中国金融期货交易所 | CCFX |
.CCFX |
IF2309.CCFX (沪深300股指期货) |
| 上海期货交易所 | XSGE |
.XSGE |
AU2312.XSGE (沪金) |
| 郑州商品交易所 | XZCE |
.XZCE |
SR309.XZCE (白糖) |
| 大连商品交易所 | XDCE |
.XDCE |
M2309.XDCE (豆粕) |
| 上海国际能源交易中心 | XINE |
.XINE |
SC2310.XINE (原油) |
| 北京证券交易所 | XBSE |
.BJ |
839725.BJ |
3. 注意事项
- 函数调用位置:
get_market_list()函数在回测和交易模式中,仅限在before_trading_start和after_trading_end中使用,请勿在handle_data中频繁调用。 - 代码后缀:在 PTrade 中进行
get_price(获取行情)或order(下单)时,通常需要使用后缀简称(如.SS,.SZ)。虽然get_market_list返回的是标准市场代码(如XSHG),但在编写策略代码引用具体标的时,请务必使用文档规定的后缀格式。
Q&A
Q: 为什么我在 handle_data 中调用 get_market_list() 报错或没有反应?
A: 根据 PTrade API 文档规定,get_market_list() 仅支持在 before_trading_start(盘前)和 after_trading_end(盘后)阶段调用。handle_data 是盘中高频运行的函数,不支持调用此类静态基础信息接口。
Q: 股票代码后缀 .SS 和 .XSHG 有什么区别?
A: 在 PTrade 策略编写中,.SS 是上海市场的后缀简称,用于下单和获取行情(例如 order('600570.SS', 100))。而 XSHG 是交易所的标准市场编码(MIC),通常用于查询市场属性或在 get_positions 返回的数据结构中作为键值的一部分出现。建议在编写策略逻辑时统一使用简称(.SS, .SZ)。
Q: 如何查看某个市场具体的交易时间规则?
A: 您可以使用 get_market_detail(finance_mic) 函数。例如,调用 get_market_detail('CCFX') 可以获取中国金融期货交易所的详细信息,其中包括时间规则代码。