通达信ZTPRICE和DTPRICE怎么算?涨跌停价、昨收与边界核对
适用范围:通达信公式学习与桌面客户端数值核对。ZTPRICE和DTPRICE都需要一个基准价格与涨跌幅参数,但一个计算涨停价,一个计算跌停价。先确认基准来自昨收还是期货结算价,再检查复权、分红转增和价格精度,才能解释结果为什么与行情栏不同。

一、两个函数分别解决什么问题
通达信官方《公式-全部函数》将ZTPRICE定义为计算涨停价,将DTPRICE定义为计算跌停价。常见写法是把前一周期收盘价作为基准,再传入涨跌幅参数,例如ZTPRICE(REF(CLOSE,1),0.1)。这表达的是“按给定基准和幅度计算一个理论价格”,不等于客户端已经按某个市场的全部交易规则完成报价。
官方DTPRICE示例同样使用0.1表示10%的跌停比例,并没有把参数写为-0.1。本文沿用这个有文档依据的输入,不推断负数或其他异常参数的客户端行为。输入前先写清楚基准、方向和幅度单位。
二、用简单样本核对输入
| 基准价 | 幅度 | 方向 | 示意结果 |
|---|---|---|---|
| 10.00 | 0.10 | 上 | 11.00 |
| 10.00 | 0.10 | 下 | 9.00 |
| 12.50 | 0.20 | 上 | 15.00 |
| 12.50 | 0.20 | 下 | 10.00 |
表格只用于检查方向和比例,结果未加入最小报价单位、特殊交易品种和客户端显示取整。若基准价为10,幅度0.1表示10%,不是0.1%。把10%误写成10,会使输入放大一百倍;把0.10误看成0.10个百分点,也会得出错误结论。
三、最小公式怎样写
ZT:ZTPRICE(REF(CLOSE,1),0.10);
DT:DTPRICE(REF(CLOSE,1),0.10);
这段示例只输出两条理论价格线。输入是上一根K线的收盘价,不是当前根的即时价格;当前根价格变化本身不意味着REF(CLOSE,1)必然变化。为便于复核,可固定历史日期,记录品种、周期、复权状态、前一根收盘价和两个输出,再与行情栏同一日期的字段比较。本文未验证客户端数据修订和实时刷新行为。
官方文档还给出期货使用前一结算价的示例,例如将QHJSJ作为基准。这个例子说明函数并不自动替你选择所有品种的正确基准。把CLOSE换成QHJSJ前,要先确认当前品种和周期确实提供结算价字段。
四、复权为什么会造成对不上
官方条目明确提醒:对于复权序列,或不复权数据中发生分红转增时,根据前一天收盘价计算的结果可能与实际涨跌停价不符。原因是公式输入的价格序列口径和交易规则使用的基准可能不是同一份数据。
排查时不要先调整参数。先分别记录不复权和复权状态,保留前一日收盘价、函数输出和行情栏显示值;再检查异常日期是否接近除权除息。相关数据字段可先参考K线实体与影线排查,涨幅比较基准可参考涨幅公式与行情栏核对。
五、常见失败原因
第一类是基准错位,把当天开盘价、当前价或复权收盘价误当成规则基准。第二类是幅度单位错位,把10%写成10。第三类是方向错位,把ZTPRICE和DTPRICE写反。第四类是显示精度差异,原始计算有更多小数,但界面只显示有限位数。
第五类是把理论计算当作可执行报价。函数只返回公式结果,不替代交易所规则、品种停牌状态、特殊处理或券商界面说明。本文没有验证每个品种的实时限制,也不提供个股买卖建议。
来源与限制
原始依据:通达信用户红宝书及官方《通达信公式-全部函数》中的ZTPRICE、DTPRICE、REF、CLOSE和QHJSJ条目。示例数据由本站原创,算术可独立复核,未做客户端全品种实测,不承诺不同版本、复权设置或市场品种的显示一致。
公式导入和报错可从通达信基础教程开始。涨跌停价函数用于核对数据口径,不构成收益预测或交易策略。




