跳转到内容

NYSE 涨跌家数

NYSE 涨跌家数用于观察纽约证券交易所中上涨股票数量和下跌股票数量的差异。它属于市场宽度指标,常用来判断指数上涨是否有足够多的股票参与。

在 TWS API 中,这个指标使用 AD-NYSE 请求。

字段中文说明
symbolAD-NYSENYSE Advance Decline 指标。
secTypeIND指标类合约。
exchangeNYSE指标所属交易所。
currencyUSD美元计价。
from ibapi.contract import Contract
def ad_nyse_contract() -> Contract:
"""NYSE 涨跌家数指标合约。"""
contract = Contract()
contract.symbol = "AD-NYSE"
contract.secType = "IND"
contract.exchange = "NYSE"
contract.currency = "USD"
return contract
# 97501 是本次请求编号,后续 tickPrice/tickSize/error 都会带回这个 reqId。
app.reqMktData(
97501,
ad_nyse_contract(),
"",
False,
False,
[],
)

收到数据后,通常在 tickPrice()tickSize() 里按 reqId 判断是不是这次指标请求:

def tickPrice(self, reqId, tickType, price, attrib):
if reqId == 97501:
print("NYSE 涨跌家数价格类更新", tickType, price)

请求可以发送到 TWS,但账户没有对应市场数据订阅时会返回:

ERROR=reqId=97501;symbol=AD-NYSE;code=354;msg=未订阅所请求的市场数据...:AD-NYSE NYSE ADVANCE DECLINE INDEX/TOP/ALL

这个错误说明合约名称已经被识别,问题在行情权限。程序应提示用户检查市场数据订阅,而不是反复重连 API。

AD-NYSE 更适合做市场背景判断。例如指数上涨但涨跌家数偏弱,说明上涨可能集中在少数权重股;指数下跌但涨跌家数改善,说明市场结构可能正在修复。

它不是订单接口,也不返回单只股票的报价。不要用它替代普通股票的 reqMktData()