我试图通过Matlab的IB API使用TWS请求实时数据。我不想要常规的市场数据,特别是我试图获得隐含的波动率。这是我使用的指南:http://www.mathworks.com/help/trading/ibtws.realtime.html
我应该能够通过调整f =' 106'来获得IV。根据IB API:https://www.interactivebrokers.com/en/software/api/api.htm
但每次我得到同样的东西(RTVolume),即出价,询问,最后等等。无论整数ID标志被改变为什么,我总是得到市场数据。
这是我的代码:
try
close(ib);
close(conn);
catch
end
clear all;
ibBuiltInRealtimeData = struct('id',0,'BID_PRICE',0,'BID_SIZE',0,'ASK_PRICE',0,'ASK_SIZE',0);
while true
ib = ibtws('',7496);
f = '106';
ibContract = ib.Handle.createContract;
ibContract.symbol = 'AAPL';
ibContract.secType = 'STK';
ibContract.exchange = 'SMART';
ibContract.primaryExchange = '';
ibContract.currency = 'USD';
tickerid = realtime(ib,ibContract,f);
d2 = ibBuiltInRealtimeData;
d2
pause(1);
end
这是输出:
id: 5689.00
BID_PRICE: 102.55
BID_SIZE: 1.00
ASK_PRICE: 103.00
ASK_SIZE: 1.00
LAST_PRICE: 102.79
LAST_SIZE: 0
VOLUME: 434689.00
我认为任何地方都没有暗示波动!除市场数据外,我如何申请其他事项的实时数据?
答案 0 :(得分:0)
这是一个简单的解释,但不是你想听的那个:
您使用的合约是股票而非期权。就像你可以在API Manual中看到的那样:
注意:并非所有乐器的刻度类型都可用。如果您认为您应该查看TWS本身是否有相关的刻度类型,则您没有收到特定的刻度类型。请记住,TWS API只是一个交付渠道:如果TWS本身首先没有这些信息,TWS将无法通过API套接字发送它。
刻度类型" 期权隐含波动率" (Tick Id 24)用于选项,因此它不适用于股票。
只需使用其他合同即可获得预期结果。
我希望这会有所帮助。