[R-SIG-Finance] IBrokers
Stephen Choularton
stephen at organicfoodmarkets.com.au
Fri Dec 10 20:10:08 CET 2010
ok, I did get this to work:
AskPriceMSFT <- as.numeric(eWrapper$.Data$data[[1]][,3])
BidPriceAAPL <- as.numeric(eWrapper$.Data$data[[2]][,2])
which produced "BidPriceAAPL: " "320.84" "AskPriceMSFT: " "27.34"
I also also do this:
AskPriceMSFT <- as.numeric(eWrapper$.Data$data[['MSFT']][,3])
if I do this earlier in the code
names(eWrapper$.Data$data) <- eWrapper$.Data$symbols
No doubt I'll be back but thanks everyone
Stephen
Hi Jeff
Sorry to put this up again, but I am completely stuck.
How do I reference the second data object
BidPrice2 <- as.numeric(eWrapper$.Data$data[[2]][,5]) doesn't work.
Stephen Choularton Ph.D., FIoD
On 09/12/2010 8:06 AM, Stephen Choularton wrote:
> Hi Jeff
>
> Thanks, but when I try to reference the second data object using this
> (which is all I can think of):
>
> BidPrice2 <- as.numeric(eWrapper$.Data$data[[2]][,5])
>
> The code runs but I don't get any info. eWrapper$.Data$data[[2]][,5]
> appears to exist but to be empty. Do I have to do something to place
> the data into it?
>
> Plus does curMsg <- readBin(con, character(), 1) give me the ticker id?
>
>
>
> Stephen Choularton Ph.D., FIoD
> On 09/12/2010 4:07 AM, Jeff Ryan wrote:
>> Stephen,
>>
>> You're close.
>>
>> On Tue, Dec 7, 2010 at 1:13 PM, Stephen Choularton
>> <stephen at organicfoodmarkets.com.au> wrote:
>>> So back again!
>>>
>>> I have two problem in converting my callback to two handle two
>>> symbols so I
>>> can set up spreads. (Or at least that's what I can see it at the
>>> moment):
>>>
>>> When I run this using myCALLBACK function below:
>>>
>>> con = twsConnect()
>>>
>>> reqMktData(con, list(twsSTK("MSFT"),twsSTK("AAPL")),
>>> event=eWrapper.data(1), CALLBACK=myCALLBACK)
>> The eWrapper needs to be set up to handle the number of contracts you
>> are watching. You need: eWrapper.data(2), with 2 being the length of
>> the contracts you are watching.
>>
>> The ticker id is by default mapped to the order of the Contracts you
>> pass in. So MSFT is 1, AAPL is 2 ...
>>
>> HTH,
>> Jeff
>>> I get this
>>>
>>> [1] "BidSize: " NA "BidPrice: " NA
>>> "AskPrice: "
>>> NA
>>> [7] "AskSize: " NA "Last: " NA
>>> "LastSize : "
>>> NA
>>> [13] "Volume: " NA
>>> 2 -1 2104 Market data farm connection is OK:aufarm
>>> [1] "BidSize: " NA "BidPrice: " NA
>>> "AskPrice: "
>>> NA
>>> [7] "AskSize: " NA "Last: " NA
>>> "LastSize : "
>>> NA
>>> [13] "Volume: " NA
>>> 2 -1 2104 Market data farm connection is OK:usfarm
>>> [1] "BidSize: " NA "BidPrice: " NA
>>> "AskPrice: "
>>> NA
>>> [7] "AskSize: " NA "Last: " NA
>>> "LastSize : "
>>> NA
>>> [13] "Volume: " NA
>>> [1] "BidSize: " NA "BidPrice: " NA
>>> "AskPrice: "
>>> NA
>>> [7] "AskSize: " NA "Last: " NA
>>> "LastSize : "
>>> NA
>>> [13] "Volume: " NA
>>> [1] "BidSize: " NA "BidPrice: " NA
>>> "AskPrice: "
>>> NA
>>> [7] "AskSize: " NA "Last: " NA
>>> "LastSize : "
>>> NA
>>> [13] "Volume: " NA
>>> [1] "BidSize: " NA "BidPrice: " NA
>>> "AskPrice: "
>>> NA
>>> [7] "AskSize: " NA "Last: " "26.97"
>>> "LastSize : "
>>> NA
>>> [13] "Volume: " NA
>>> [1] "BidSize: " NA "BidPrice: " NA
>>> "AskPrice: "
>>> NA
>>> [7] "AskSize: " NA "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " NA
>>> [1] "BidSize: " NA "BidPrice: " NA
>>> "AskPrice: "
>>> NA
>>> [7] "AskSize: " NA "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " NA "BidPrice: " NA
>>> "AskPrice: "
>>> NA
>>> [7] "AskSize: " NA "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " NA "BidPrice: " NA
>>> "AskPrice: "
>>> NA
>>> [7] "AskSize: " NA "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " NA "BidPrice: " NA
>>> "AskPrice: "
>>> NA
>>> [7] "AskSize: " NA "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " NA "BidPrice: " NA
>>> "AskPrice: "
>>> NA
>>> [7] "AskSize: " NA "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> NA
>>> [7] "AskSize: " NA "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "4"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343529"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "1435" "BidPrice: " "26.96"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.97"
>>> [7] "AskSize: " "828" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> [1] "BidSize: " "970" "BidPrice: " "26.97"
>>> "AskPrice: "
>>> "26.98"
>>> [7] "AskSize: " "847" "Last: " "26.97"
>>> "LastSize : "
>>> "2"
>>> [13] "Volume: " "343550"
>>> Error in `*tmp*`[[id]] : subscript out of bounds
>>>
>>>
>>> I think what is happening is that the function fails on its first
>>> attempt to
>>> get data on AAPT and the above data is on MSFT but I am quite unsure
>>> as to
>>> what direction to take to amend the function. Any pointers most
>>> welcome.
>>>
>>> Secondly I need to be able to know which symbol I am dealing with. The
>>> output for:
>>>
>>> reqMktData(con, list(twsEquity("MSFT"),twsEquity("AAPL")))
>>>
>>> is
>>>
>>> TWS Message: 2 -1 2104 Market data farm connection is OK:aufarm
>>> TWS Message: 2 -1 2104 Market data farm connection is OK:usfarm
>>> <20101208 05:55:28.974000> id=1 symbol=MSFT Volume: 343560
>>> <20101208 05:55:28.978000> id=1 symbol=MSFT highPrice: 27.09
>>> <20101208 05:55:28.983000> id=1 symbol=MSFT lowPrice: 26.88
>>> <20101208 05:55:28.988000> id=2 symbol=AAPL Volume: 79079
>>> <20101208 05:55:28.993000> id=2 symbol=AAPL highPrice: 323.99
>>>
>>> and shows the symbol I need but when I try to find something that
>>> refers to
>>> it in myCALLBACK I seem to fail. Is it somewhere in the data
>>> object? Is it
>>> somewhere esle someone can point me to?
>>>
>>> Stephen Choularton Ph.D., FIoD
>>>
>>>
>>> On 07/12/2010 5:24 PM, Stephen Choularton wrote:
>>>> Just for the record I though I should post this as it did actually
>>>> place
>>>> the order I was after:
>>>>
>>>> library(IBrokers)
>>>>
>>>> myCALLBACK<-
>>>> function(twsCon, eWrapper, timestamp, file, playback = 1, ...) {
>>>>
>>>> con<- twsCon[[1]]
>>>> traded<- FALSE
>>>> while (TRUE) {
>>>> socketSelect(list(con), FALSE, NULL)
>>>> #data
>>>> curMsg<- readBin(con, character(), 1)
>>>> if (!is.null(timestamp)) {
>>>> processMsg(curMsg, con, eWrapper, format(Sys.time(),
>>>> timestamp),
>>>> file, ...)
>>>> } else {
>>>> processMsg(curMsg, con, eWrapper, timestamp, file, ...)
>>>> }
>>>> # EXTRACT DATA HERE
>>>> BidSize<- as.numeric(eWrapper$.Data$data[[1]][,1])
>>>> BidPrice<- as.numeric(eWrapper$.Data$data[[1]][,2])
>>>> AskPrice<- as.numeric(eWrapper$.Data$data[[1]][,3])
>>>> AskSize<- as.numeric(eWrapper$.Data$data[[1]][,4])
>>>> Last<- as.numeric(eWrapper$.Data$data[[1]][,5])
>>>> LastSize<- as.numeric(eWrapper$.Data$data[[1]][,6])
>>>> Volume<- as.numeric(eWrapper$.Data$data[[1]][,7])
>>>> print(c("BidSize: ", BidSize, "BidPrice: ", BidPrice,
>>>> "AskPrice: ",
>>>> AskPrice, "AskSize: ", AskSize, "Last: ", Last, "LastSize : ",
>>>> LastSize ,
>>>> "Volume: ", Volume ))
>>>> # TRADE LOGIC HERE
>>>> if(!traded&& !is.na(Last)&& Last>= 49) {
>>>>
>>>> print(c("inside the trading logic "))
>>>> id<- reqIds(twsCon)
>>>> #placeOrder(tws, twsEquity("CBA","ASX","AUD"), twsOrder(id,
>>>> "BUY",
>>>> "1", "MKT"))
>>>> traded<- TRUE
>>>> }
>>>> }
>>>> }
>>>>
>>>>
>>>>
>>>> con = twsConnect()
>>>>
>>>>
>>>>
>>>> #reqMktData(con, twsEquity("GOOG"), event=eWrapper.data(1),
>>>> CALLBACK=myCALLBACK)
>>>>
>>>>
>>>> reqMktData(con, twsEquity("CBA","ASX","AUD"), event=eWrapper.data(1),
>>>> CALLBACK=myCALLBACK)
>>>>
>>>>
>>>>
>>>> closeAllConnections()
>>>>
>>>>
>>>> I imagine I will be back as I am actually trying to use this for
>>>> spreads -
>>>> so now I have to move on and try two symbols, etc but for what it
>>>> is worth
>>>> the code is there for anyone who wants to use it.
>>>>
>>>> Stephen Choularton Ph.D., FIoD
>>>>
>>>>
>>>> On 06/12/2010 10:17 AM, Jeff Ryan wrote:
>>>>> Stephen,
>>>>>
>>>>> Comments inline:
>>>>>
>>>>> On Sun, Dec 5, 2010 at 1:23 PM, Stephen Choularton
>>>>> <stephen at organicfoodmarkets.com.au> wrote:
>>>>>> Hi
>>>>>>
>>>>>> If you read this list you will have noticed I have been working on
>>>>>> callbacks
>>>>>> and I finally got to some code that appears to work so I though I
>>>>>> would
>>>>>> share it:
>>>>>>
>>>>>> library(IBrokers)
>>>>>>
>>>>>> myCALLBACK<-
>>>>>> function(twsCon, eWrapper, timestamp, file, playback = 1, ...) {
>>>>>> con<- twsCon[[1]]
>>>>>> twsOC<- twsConnect(2) # our order connection
>>>>>> con2<- twsOC[[1]]
>>>>>> ocWrapper<- eWrapper(TRUE)
>>>>>> traded<- FALSE
>>>>>> while (TRUE) {
>>>>>> cons<- socketSelect(list(con, con2), FALSE, 0.01)
>>>>>> if(cons[1]) { #data
>>>>>> curMsg<- readBin(con, character(), 1)
>>>>>> if (!is.null(timestamp)) {
>>>>>> processMsg(curMsg, con, eWrapper, format(Sys.time(),
>>>>>> timestamp), file, ...)
>>>>>> } else {
>>>>>> processMsg(curMsg, con, eWrapper, timestamp,
>>>>>> file, ...)
>>>>>> }
>>>>>> } else if(cons[2]) {
>>>>>> curMsg<- readBin(con2, character(), 1)
>>>>>> if (!is.null(timestamp)) {
>>>>>> processMsg(curMsg, con2, ocWrapper,
>>>>>> format(Sys.time(),
>>>>>> timestamp), file, ...)
>>>>>> } else {
>>>>>> processMsg(curMsg, con2, ocWrapper, timestamp,
>>>>>> file, ...)
>>>>>> }
>>>>>> } # TRADE LOGIC HERE
>>>>>> curBID<- as.numeric(eWrapper$.Data$data[[1]][3])
>>>>>> if(!traded ) { # add back on open:&&
>>>>>> !is.na(curBID)&& curBID>
>>>>>> 141.00
>>>>>>
>>>>>> print(c("the cur bid is ", curBID))
>>>>>> # IBrokers:::.placeOrder(twsOC,
>>>>>> twsEquity("CBA","ASX","AUD"),
>>>>>> twsOrder(1053, "BUY", "0", "MKT"))
>>>>>> traded<- TRUE
>>>>>> }
>>>>>> }
>>>>>> twsDisconnect(twsOC)
>>>>>> }
>>>>>>
>>>>>> con = twsConnect(1)
>>>>>>
>>>>>> # contracts<- list(twsSTK("MSFT"),twsSTK("AAPL")))
>>>>>>
>>>>>>
>>>>>> reqMktData(con, twsEquity("GOOG"), CALLBACK=myCALLBACK)
>>>>>>
>>>>>> twsDisconnect(con)
>>>>>>
>>>>>> However, even though I have tried to close down my twsCnnections,
>>>>>> if I
>>>>>> run
>>>>>> the code twice I get a warning along the lines:
>>>>>>
>>>>>> unable to connect. client id already in use. retry with unique
>>>>>> client id
>>>>>>
>>>>>> and R freezes. Does anyone know how to solve the problem?
>>>>> R is likely "freezing" due to buffering on Windows (which you can
>>>>> turn
>>>>> off in the GUI), but that isn't really the core issue. You don't
>>>>> need
>>>>> to have a second connection opened in the CALLBACK. It is in the
>>>>> examples of one of my talks to illustrate having an external mkt data
>>>>> feed and IB execution. If you are only looking at IB (for data and
>>>>> execution), DON'T use a second connection. Seriously it is not
>>>>> needed
>>>>> at all, and it is just making things more confusing I suspect.
>>>>>
>>>>>> From there (on connection) close(con) or twsDisconnect(con) should
>>>>> indeed free up the client id. You can always go the route of
>>>>> closeAllConnections() route in R to 'start over'.
>>>>>
>>>>>> Incidentally I notice that the code gets curBID<-
>>>>>> as.numeric(eWrapper$.Data$data[[1]][3]). Does anyone know what the
>>>>>> appropriate indices are for the other data in eWrapper$.Data and
>>>>>> what
>>>>>> that
>>>>>> data is?
>>>>>>
>>>>> As Mark points out in his reply, look at the source for the
>>>>> answers/hints:
>>>>>
>>>>> In order: BidSize, BidPrice, AskPrice, AskSize, Last, LastSize and
>>>>> Volume. The first four ordering mimic what it looks like when you
>>>>> stand in the pit on the floor and look at the CRTs (or your own
>>>>> custom
>>>>> screen...) ;-)
>>>>>
>>>>>
>>>>> # from the source
>>>>>> eWrapper.data
>>>>> function (n)
>>>>> {
>>>>> eW<- eWrapper(NULL)
>>>>> eW$assign.Data("data",
>>>>> rep(list(structure(.xts(matrix(rep(NA_real_,
>>>>> 7), nc = 7), 0), .Dimnames = list(NULL, c("BidSize",
>>>>> "BidPrice", "AskPrice", "AskSize", "Last", "LastSize",
>>>>> "Volume")))), n))
>>>>> eW$tickPrice<- function(curMsg, msg, timestamp, file, ...) {
>>>>> tickType = msg[3]
>>>>> msg<- as.numeric(msg)
>>>>> id<- msg[2]
>>>>> data<- eW$get.Data("data")
>>>>> attr(data[[id]], "index")<- as.numeric(Sys.time())
>>>>> nr.data<- NROW(data[[id]])
>>>>> if (tickType == .twsTickType$BID) {
>>>>> data[[id]][nr.data, 1:2]<- msg[5:4]
>>>>> }
>>>>> else if (tickType == .twsTickType$ASK) {
>>>>> data[[id]][nr.data, 3:4]<- msg[4:5]
>>>>> }
>>>>> else if (tickType == .twsTickType$LAST) {
>>>>> data[[id]][nr.data, 5]<- msg[4]
>>>>> }
>>>>> eW$assign.Data("data", data)
>>>>> c(curMsg, msg)
>>>>> }
>>>>> eW$tickSize<- function(curMsg, msg, timestamp, file, ...) {
>>>>> data<- eW$get.Data("data")
>>>>> tickType = msg[3]
>>>>> msg<- as.numeric(msg)
>>>>> id<- as.numeric(msg[2])
>>>>> attr(data[[id]], "index")<- as.numeric(Sys.time())
>>>>> nr.data<- NROW(data[[id]])
>>>>> if (tickType == .twsTickType$BID_SIZE) {
>>>>> data[[id]][nr.data, 1]<- msg[4]
>>>>> }
>>>>> else if (tickType == .twsTickType$ASK_SIZE) {
>>>>> data[[id]][nr.data, 4]<- msg[4]
>>>>> }
>>>>> else if (tickType == .twsTickType$LAST_SIZE) {
>>>>> data[[id]][nr.data, 6]<- msg[4]
>>>>> }
>>>>> else if (tickType == .twsTickType$VOLUME) {
>>>>> data[[id]][nr.data, 7]<- msg[4]
>>>>> }
>>>>> eW$assign.Data("data", data)
>>>>> c(curMsg, msg)
>>>>> }
>>>>> return(eW)
>>>>> }
>>>>> <environment: namespace:IBrokers>
>>>>>
>>>>> You can of course do whatever you like to make it more logical to
>>>>> you.
>>>>> Reading IBrokers source and the official Java source (yikes) is the
>>>>> way to get to a different end if you so require.
>>>>>
>>>>> Best,
>>>>> Jeff
>>>>>
>>>>>>
>>>>>> --
>>>>>> Stephen Choularton Ph.D., FIoD
>>>>>>
>>>>>> _______________________________________________
>>>>>> R-SIG-Finance at r-project.org mailing list
>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
>>>>>> -- Subscriber-posting only. If you want to post, subscribe first.
>>>>>> -- Also note that this is not the r-help list where general R
>>>>>> questions
>>>>>> should go.
>>>>>>
>>>>>
>>>> _______________________________________________
>>>> R-SIG-Finance at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
>>>> -- Subscriber-posting only. If you want to post, subscribe first.
>>>> -- Also note that this is not the r-help list where general R
>>>> questions
>>>> should go.
>>>>
>>>>
>>>>
>>>>
>>>> -----
>>>> No virus found in this message.
>>>> Checked by AVG - www.avg.com
>>>> Version: 10.0.1170 / Virus Database: 426/3301 - Release Date: 12/06/10
>>>>
>>>>
>>> _______________________________________________
>>> R-SIG-Finance at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
>>> -- Subscriber-posting only. If you want to post, subscribe first.
>>> -- Also note that this is not the r-help list where general R questions
>>> should go.
>>>
>>
>>
>
> _______________________________________________
> R-SIG-Finance at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R
> questions should go.
>
>
>
>
> -----
> No virus found in this message.
> Checked by AVG - www.avg.com
> Version: 10.0.1170 / Virus Database: 426/3303 - Release Date: 12/07/10
>
>
More information about the R-SIG-Finance
mailing list