2011-08-17 21 views
5
reqMktData(tws,twsOPT("AAPL 110820C00390000")) 

hoặcR Ibrokers twsOPT sử dụng

reqMktData(tws,twsOPT("AAPL110820C00390000")) 

kết quả trong: TWS nhắn: 2 1 200 Không có định nghĩa an ninh đã được tìm thấy cho các yêu cầu

Tại sao?

reqMktData(tws,twsSTK("AAPL")) 

hoạt động tốt.

Các manpage nói:

twsOption(local, 
      expiry="", 
      strike="", 
      right="", 
      exch="SMART", 
      primary="", 
      currency='USD', 
      symbol='', 
      multiplier="100", 
      include_expired='0', 
      conId=0) 

hợp đồng Option trên các TWS có quy tắc nhất định mà là khác nhau hơn so với yêu cầu dữ liệu tiêu chuẩn.

Biểu tượng địa phương là bắt buộc. Bạn có thể tìm thấy thông tin này trên màn hình TWS chính theo chi tiết hợp đồng hoặc qua web tại www.interactivebrokers.com

Vì biểu tượng cục bộ là bắt buộc, tất cả các giá trị khác đều không cần thiết. Tốt nhất là chỉ cần chỉ định tên địa phương và để TWS quản lý tra cứu.

+0

Tôi không chắc chắn lý do tại sao bạn đang sử dụng "AAPL110820C00390000 ! " Tại sao bạn không sử dụng "AAPL?" Tôi không nghĩ giá trị bạn đang sử dụng là tên địa phương chính xác. – Soumendra

Trả lời

5

Bạn không nhận được đúng địa phương. Định dạng đúng sử dụng một trường rộng 6 ký tự (đặc tả OSI), và bạn đang thử 5 và 4, tương ứng.

Bạn không bắt buộc phải sử dụng địa phương tất nhiên, nhưng điều đó đòi hỏi nhiều chi tiết hơn trên các arg khác nhau sau đó.

> reqContractDetails(ibg, twsOPT("AAPL 110820C00390000")) 
[[1]] 
List of 18 
    $ version  : chr "6" 
    $ contract  :List of 16 
..$ conId   : chr "86896934" 
..$ symbol   : chr "AAPL" 
..$ sectype  : chr "OPT" 
..$ exch   : chr "SMART" 
..$ primary  : chr "" 
..$ expiry   : chr "20110819" 
..$ strike   : chr "390.0" 
..$ currency  : chr "USD" 
..$ right   : chr "C" 
..$ local   : chr "AAPL 110820C00390000" 
..$ multiplier  : chr "100" 
..$ combo_legs_desc: chr "" 
..$ comboleg  : chr "" 
..$ include_expired: chr "" 
..$ secIdType  : chr "" 
..$ secId   : chr "" 
..- attr(*, "class")= chr "twsContract" 
$ marketName : chr "AAPL" 
$ tradingClass : chr "AAPL" 
$ conId   : chr "86896934" 
$ minTick  : chr "0.01" 
$ orderTypes : chr [1:44] "ACTIVETIM" "ADJUST" "ALERT" "ALGO" ... 
$ validExchanges: chr [1:12] "SMART" "AMEX" "BATS" "BOX" ... 
$ priceMagnifier: chr "1" 
$ underConId : chr "265598" 
$ longName  : chr "APPLE INC" 
$ contractMonth : chr "201108" 
$ industry  : chr "Technology" 
$ category  : chr "Computers" 
$ subcategory : chr "Computers" 
$ timeZoneId : chr "EST" 
$ tradingHours : chr "20110817:0930-1600;20110818:0930-1600" 
$ liquidHours : chr "20110817:0930-1600;20110818:0930-1600" 

Bạn có thể trích xuất các hợp đồng sử dụng as.twsContract:

as.twsContract(reqContractDetails(ibg, twsOPT("AAPL 110820C00390000"))) 

Hoặc chỉ cần gọi theo yêu cầu reqMktData như là:

reqMktData(ibg, twsOPT("AAPL 110820C00390000")) 

## OR 

reqMktData(ibg, twsOPT("",symbol="AAPL",right="C", strike="390", expiry="201108")) 
+0

Tôi hiểu. 6 vị trí cho mỗi mã. Cảm ơn nhiều! – Pauly

5

Bạn có thể tránh các loại vấn đề bằng cách sử dụng gói twsInstrument on R-Forge

library(twsInstrument) 

Bất kỳ trong số này sẽ nhận được twsContract

getContract("AAPL 111217P00390000") 
getContract("AAPL  111217P00390000") #number of spaces does not matter 
getContract("AAPL20111217P00390000") #year can be 4 digits or 2 
getContract("AAPL_111217P00390000") 
getContract("AAPL111217P00390000") 
getContract("AAPL111217P390") 
getContract("AAPL_111217P390") 
getContract("AAPL_20111217P390") 
getContract("AAPL_111217P390.00") 

#by conId 
getContract("93189601") 
getContract(93189601) 

Tất cả những sẽ cung cấp cho bạn những điều tương tự:

> getContract(93189601) 
List of 16 
$ conId   : chr "93189601" 
$ symbol   : chr "AAPL" 
$ sectype  : chr "OPT" 
$ exch   : chr "SMART" 
$ primary  : chr "" 
$ expiry   : chr "20111216" 
$ strike   : chr "390" 
$ currency  : chr "USD" 
$ right   : chr "P" 
$ local   : chr "AAPL 111217P00390000" 
$ multiplier  : chr "100" 
$ combo_legs_desc: chr "" 
$ comboleg  : chr "" 
$ include_expired: chr "" 
$ secIdType  : chr "" 
$ secId   : chr "" 

Thật không may, bạn không thể có được chi tiết hợp đồng cho các tùy chọn mà đã hết hạn. Tôi không biết nếu điều này là một vấn đề với IBrokers, hoặc nếu Interactive Brokers không hỗ trợ nó, nhưng nhận được chi tiết hợp đồng cho tương lai đã hết hạn là không có vấn đề

> getContract("ESM1") 
Connected with clientId 100. 
Trying to resolve error in contract details. Using include_expired=1 
Contract details request complete. Disconnected. 
List of 16 
$ conId   : chr "73462897" 
$ symbol   : chr "ES" 
$ sectype  : chr "FUT" 
$ exch   : chr "GLOBEX" 
$ primary  : chr "" 
$ expiry   : chr "20110617" 
$ strike   : chr "0" 
$ currency  : chr "USD" 
$ right   : chr "" 
$ local   : chr "ESM1" 
$ multiplier  : chr "50" 
$ combo_legs_desc: chr "" 
$ comboleg  : chr "" 
$ include_expired: chr "1" 
$ secIdType  : chr "" 
$ secId   : chr "" 
+1

Chào mừng bạn đến với SO, Garrett! –

Các vấn đề liên quan