企业微信

通达信API参数到底该怎么看普通散户也能搞懂吗

很多朋友一听到“API参数”就觉得是程序员的事,跟自己炒股、做期货没关系。其实通达信提供的API接口,就是把行情数据、交易指令打包成一个个“参数”,让你能用程序自动获取数据、执行策略。参数设错了,回测赚钱实盘亏钱,这种坑我见过太多。今天咱们就把通达信API里那些常见的参数掰开揉碎,用大白话讲清楚它们到底管什么用。

行情数据参数 决定你看到的是真价格还是假价格

打开通达信API文档,第一个要面对的就是行情数据参数。核心就几个:市场代码、证券代码、数据周期、复权方式。

通达信API参数到底该怎么看普通散户也能搞懂吗

市场代码用来区分这是上海市场还是深圳市场,期货里还要分中金所、上期所、大商所。填错了市场代码,你请求的股票代码可能返回完全不相干的数据。证券代码就是具体的股票或期货合约代码,注意股票是6位数字,期货合约有字母和数字组合,参数格式必须严格匹配。

数据周期参数决定你拿的是日线、周线还是分钟线。做股票趋势跟踪一般用日线,做期货短线可能用到1分钟或5分钟线。这里有个细节:通达信API的周期参数通常用数字表示,1代表1分钟,2代表5分钟,4代表日线,5代表周线,具体数值要看接口文档,不同版本可能有差异。

复权方式参数最容易被忽略,但影响巨大。不复权的数据在股票除权除息那天会出现价格跳空,回测时系统会误以为暴跌,触发错误的买卖信号。前复权保持当前价格不变、调整历史价格,适合看盘和实盘信号;后复权保持历史价格不变、调整当前价格,适合长周期回测。期货没有复权概念,这个参数对期货无效,但股票API里必须设对。

财务数据参数 别把报告期和公告日搞混

做基本面量化或者选股策略,会用到通达信的财务数据接口。这里面两个参数最容易踩坑:报告期和公告日。

报告期是财报截止的日期,比如一季报是3月31日,年报是12月31日。公告日是公司实际发布财报的日期,通常比报告期晚一两个月。回测时如果你用了报告期数据却在公告日之前就拿来交易,那就是未来函数,回测收益虚高,实盘一塌糊涂。通达信API的财务参数里一般要同时指定报告期和公告日过滤条件,确保你在正确的时间拿到正确的数据。

还有一个参数是财务数据字段,比如净利润、营业收入、每股收益。通达信会返回一个结构体,里面每个字段对应一个参数名。你只需要取自己策略用到的字段,不用全部解析,节省计算资源。

交易接口参数 下单前必须检查的几项

如果你用通达信的API做程序化交易,交易参数比行情参数更关键,因为涉及到真金白银。

买卖方向参数:股票用0和1代表买入卖出,期货还要区分开仓和平仓。开仓又分买开、卖开,平仓分买平、卖平。参数填反了,该平仓的变成开仓,仓位瞬间翻倍,风险失控。

价格类型参数:市价单、限价单、最优五档即时成交剩余撤销等等。股票和期货可用的价格类型不同,期货里还有市价指令和限价指令的区分。市价单成交快但滑点不可控,限价单控制成本但可能不成交。通达信API里价格类型用数字编码,比如0代表限价,1代表市价,具体编码要查对应券商的接口文档,不同券商可能有微调。

数量参数:股票是股数,必须是100的整数倍;期货是手数,不同品种一手对应的数量不同。参数单位搞错,股票下成100股实际变成100手,那就成笑话了。

策略回测参数 决定你的曲线是漂亮还是真实

通达信API支持策略回测,回测参数里比较重要的有:回测起止日期、初始资金、手续费率、滑点。

手续费率参数要按品种填,股票有印花税和佣金,期货有交易所手续费和期货公司加收部分。很多人回测时把手续费设成0,收益曲线好看得不得了,实盘一跑全是成本。滑点参数模拟的是下单价格和实际成交价格的偏差,股票一般设0.01到0.02元,期货根据品种活跃度设1到2个最小变动价位。

回测起止日期参数别只选牛市区间,要把震荡市和熊市都包含进去。通达信API允许你设置多个回测区间,分段看策略表现,比一条总曲线更有参考价值。

参数配置的通用原则 先跑通再优化

通达信API的参数虽然多,但配置的时候有个通用顺序:先保证数据能正确取到,再保证交易指令能正确发出,最后才去调优参数。很多新手一上来就改各种参数想拟合历史数据,结果参数越调越玄学,换个市场就失效。

股票和期货的参数侧重点不同,股票重复权和财务公告日,期货重合约换月和保证金参数。把这两类资产的参数逻辑分开理解,用起来就不容易乱。通达信API的文档其实写得很清楚,只是术语堆在一起显得吓人,拆开看每个参数就管一件事,搞明白一个就少踩一个坑。

程序交易示例 获取股票日线数据并计算均线

下面用Python调用通达信API的简化示例,展示如何用参数获取数据。实际使用时需要安装通达信官方或第三方封装的库。


import tdx_api

# 初始化接口

api = tdx_api.TdxApi()

# 参数设置

market = 0          # 0:深圳 1:上海

code = '000001'     # 平安银行

period = 4          # 4:日线

fq = 1              # 1:前复权

start_date = '20240101'

end_date = '20241231'

# 获取数据

df = api.get_security_bars(market, code, period, fq, start_date, end_date)

# 计算5日均线和20日均线

df['ma5'] = df['close'].rolling(5).mean()

df['ma20'] = df['close'].rolling(20).mean()

# 简单金叉信号

df['signal'] = 0

df.loc[(df['ma5'] > df['ma20']) & (df['ma5'].shift(1) <= df['ma20'].shift(1)), 'signal'] = 1

print(df[['date', 'close', 'ma5', 'ma20', 'signal']].tail(10))

这段代码里每个参数都对应前面讲的逻辑,市场代码决定数据来源,周期和复权决定价格序列,起止日期限制数据范围。把参数理解透了,改策略就是改几行配置的事。

参数错了怎么办 从报错信息反推

通达信API返回错误码的时候别慌,大部分错误码指向的就是参数问题。比如返回“无效的市场代码”,检查market参数是不是填了不存在的数字;“证券代码不存在”,检查code格式是不是少了位数或者多了字母。期货合约代码要注意大小写,郑商所品种代码是小写字母加数字,上期所是大写字母加数字,参数里写错了就取不到数据。

养成习惯:每次调用API前把参数打印出来看一眼,确认市场、代码、周期、复权四个核心参数没填反。这个小动作能省掉八成调试时间。

通达信API参数不是什么高深技术,本质上就是你和行情服务器之间的约定。参数填对了,数据准确、交易顺畅;参数填错了,后面所有分析都建立在错误数据上。做股票和期货的程序化交易,先把参数这一关过扎实,再谈策略逻辑,路才走得稳。