从Python调用Bloomberg DDE错误

时间:2012-03-07 13:06:10

标签: python dde bloomberg

我正在尝试使用DDE向Bloomberg Terminal发送命令。 例如:显示我可以发送的Microsoft页面:

<blp-1><CANCEL><CANCEL><HOME>MSFT<EQUITY><GO>

使用EXCEL的VBA库可以正常工作。但是我试图从Python脚本中做同样的事情。我在这里使用代码(由于一些限制,我不能使用更标准的win32ui / dde ​​python模块)

http://code.activestate.com/recipes/577654-dde-client/

消息正在传递给彭博终端但未被正确解释,例如:

de = DDEClient('WinBlp', 'bbk')
de.execute('<blp-1><CANCEL><CANCEL><HOME>MSFT<EQUITY><GO>')

导致Bloomberg窗口弹出,但命令区域中出现乱码,如

????A?????

有人看起来像这样吗?

1 个答案:

答案 0 :(得分:6)

解决方案是改变这一行

  

Initialize = get_winfunc(“user32”,“DdeInitializeW”,UINT,(LPDWORD,DDECALLBACK,DWORD,DWORD))

  

Initialize = get_winfunc(“user32”,“DdeInitializeA”,UINT,(LPDWORD,DDECALLBACK,DWORD,DWORD))

来自MS文档:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms648757(v=vs.85).aspx

DdeInitializeA是初始化程序的ANSI版本,而不是unicode。