Bloomberg API 外汇远期 NDF 未返回价格

Bloomberg API FX Forwards NDFs not returning prices

任何人都可以建议我如何检索 FX Forwards NDF 的直接出价/直接要价或 USD/KRW 的 1W 的任何价格数据, 1M, 3M 等期限.

我曾尝试遵循 DAPI 说明并尝试通过 Whosebug 寻找答案,但均无济于事。然而,我可以成功地检索实时出价询问 SPOT USD KRW 甚至 AAPL 等股票没问题

我试过使用不同的代码组合,但我没有看到任何错误代码,没有实际的实时价格返回?请问有没有人有任何想法来获得实时报价的 NDF 直接价格:

非常感谢任何帮助:) 因为彭博似乎没有提供任何帮助

['USD/KRW N 2M Curncy'], ['USD/KRW N 3M Curncy'], ['USD/KRW N 3M ICAP Curncy']

p.s Excel Bloomberg 公式,例如 =BFxForward("USDKRW","3M","BidOutright") 本质上就是我'我试图通过 python 进行复制,尝试遵循 DAPI 说明似乎不起作用。

我已经使用 C++ BLPAPI pdf 示例来尝试使其正常工作,但似乎不存在 NDF 示例。

def main_subscribe():


tickers = ['USD/KRW N 2M Curncy', 'USD/KRW N 6M Curncy', 'USD/KRW N 9M Curncy']
fields = ['BID', 'LAST_BID_TIME_TODAY_REALTIME', 'ASK','MID']
interval = 2
options = parseCmdLine()

# Fill SessionOptions
sessionOptions = blpapi.SessionOptions()
sessionOptions.setServerHost(options.host)
sessionOptions.setServerPort(options.port)

print("Connecting to %s:%s" % (options.host, options.port))
# Create a Session
session = blpapi.Session(sessionOptions)

# Start a Session
if not session.start():
    print("Failed to start session.")
    return

try:
    # Open service to get subscription data from
    if not session.openService('//blp/mktdata'):
        print("Failed to open '//blp/mktdata")
        return

    # init subscriptions
    subs = blpapi.SubscriptionList()
    flds = ','.join(fields)
    istr = interval and 'interval=%.1f' % interval or ''
    for ticker in tickers:
        subs.add(ticker, flds, istr, blpapi.CorrelationId(ticker))
    
    session.subscribe(subs)

    # Process received events
    while(True):
        # We provide timeout to give the chance for Ctrl+C handling:
        ev = session.nextEvent(900)
        for msg in ev:
            print(msg)
        # if ev.eventType() == blpapi.Event.SUBSCRIPTION_DATA:


        #     try:
        #         for msg in ev:
        #             #print(msg)
        #             print(f"{fields[0]}:{msg.getElementAsString(fields[0])} , {fields[3]}:{msg.getElementAsString(fields[3])} , {fields[2]}:{msg.getElementAsString(fields[2])} , {fields[1]}:{msg.getElementAsString(fields[1])}")
        #     except Exception as e:
        #         print(e)
        #         #print(msg)
        #         None
        
finally:
    # Stop the session
    session.stop()

这是当 main-subscribe 为 运行:

时的输出
CID: {[ valueType=POINTER classId=0 value=0000024DBF510CB0 ]}
RequestId: -----------------------------
MarketDataEvents = {
MKTDATA_EVENT_TYPE = SUMMARY
MKTDATA_EVENT_SUBTYPE = INITPAINT
API_RULES_VERSION = 201411210
SIMP_LAST_PX_ALL_SESS_DIR_RT = 1
SMART_FIELDS_METADATA_VERSION_RT = "21.10.08.02 "
IS_DELAYED_STREAM = false
MID = 1.000000
RT_API_MACHINE = "apipubx0@----------"
RT_YLD_CHG_NET_1D = 0.000000
IND_BID_FLAG = false
IND_ASK_FLAG = false
BASE_PRICE_ENABLED_RT = false
EVT_DELTA_TIMES_RT = 0
ALL_PRICE_COND_CODE = ""}

这是 Bloomi 终端中的 KRW <Curncy> FRD <Go> 屏幕:

如果您将鼠标悬停在 3M 完全出价(在圆圈中)上,弹出窗口会显示基础代码为 KWN+3M BGN Curncy

当我将此代码放入 Excel 时: =BDP("KWN+3M BGN Curncy","BID","UpdateFrequency",500) 然后我更新与终端屏幕匹配的出价方定价。

由于 Excel 和 Python 的底层 DAPI 是相同的,我想这个代码也可以与 blpapi 一起使用。我通常发现在 Excel.

中测试代码和字段更快