[R-SIG-Finance] IBrokers Risk Management Backend Solution Help with twsPortfolioValue

G See gsee000 at gmail.com
Sun Feb 10 20:11:40 CET 2013


I don't think the socket connection is shut down.

R> invisible(reqAccountUpdates(con))
2 -1 2100 API client has been unsubscribed from account data.
R> isConnected(con)
[1] TRUE

Why does your loop break?  Do you get an error in R?

The 2100 message is a warning
http://www.interactivebrokers.com/php/apiUsersGuide/apiguide/tables/api_message_codes.htm

Garrett

On Sun, Feb 10, 2013 at 12:33 PM, JohnnyPaper <brad.saterfiel at gmail.com> wrote:
> Hi Everyone,
>
> I have a couple of questions to ask, and I absolutely don't mind if this
> gets resubmitted anywhere else.  It seems as though this may be helpful for
> many people trying to manage portfolio risk with IBrokers, which as I may
> add is an excellent addition to R.  Very nice work on Jeff's part, and many
> many thanks.
>
> I am just trying to keep a loop monitoring my position and shutting them
> down if they hit a stop or profit target based on my position value.  Mind
> you I am submitting these orders after my offline analysis is done at the
> EOD.  So they are market orders executed at the open, hence the reason for
> management of the portfolio in this sense through the twsPortfolioValue
> updates in the data.frame .
>
> Here is the code I am using and the results:
>
> con <- twsConnect()
>
> while (TRUE){
>     Offset<-50
>     Val<-twsPortfolioValue(reqAccountUpdates(con),zero.pos=FALSE)
>         for (i in 1:nrow(Val)){
>             if ( 0.01 * -abs(Val[i,4]) > Val[i,8] ){
>                 if (Val[i,6] < 0){
>                     IBrokers:::.placeOrder( con, twsSTK(toString(Val[i,1])),
> twsOrder((i+Offset),"BUY",abs(Val[i,6]),"MKT") )
>                     Offset<- Offset +1
>                 } else if (Val[i,6] > 0){
>                     IBrokers:::.placeOrder( con, twsSTK(toString(Val[i,1])),
> twsOrder((i+Offset),"SELL",abs(Val[i,6]),"MKT") )
>                     Offset<- Offset +1
>                 }
>             } else if (    0.03 * abs(Val[i,4]) < Val[i,8] ){
>                 if (Val[i,6] < 0){
>                     IBrokers:::.placeOrder( con, twsSTK(toString(Val[i,1])),
> twsOrder((i+Offset),"BUY",abs(Val[i,6]),"MKT") )
>                     Offset<- Offset +1
>                 } else if (Val[i,6] > 0){
>                     IBrokers:::.placeOrder( con, twsSTK(toString(Val[i,1])),
> twsOrder((i+Offset),"SELL",abs(Val[i,6]),"MKT") )
>                     Offset<- Offset +1
>                 }
>             }
>         }
>     print(Val)
>     Sys.sleep(5)
> }
>
> 2 -1 2104 Market data farm connection is OK:usfarm
> 2 -1 2106 HMDS data farm connection is OK:ushmds
>    local sectype marketValue averageCost        return position realizedPNL
> unrealizedPNL
> 2   AKAM     STK    -8022.18   -8011.965 -0.0012749681     -227           0
> -10.22
> 6   ETFC     STK    -7964.32   -7987.240  0.0028695755     -728           0
> 22.92
> 8   FISV     STK    -8048.00   -7994.000 -0.0067550663     -100           0
> -54.00
> 9     GS     STK    -8006.97   -7985.040 -0.0027463856      -53           0
> -21.93
> 10   HAR     STK    -8066.78   -8015.330 -0.0064189493     -177           0
> -51.45
> 11   HNZ     STK    -7987.07   -7990.070  0.0003754658     -131           0
> 3.00
> 12   ICE     STK     8047.89    8042.140  0.0007149839       54           0
> 5.75
> 14  MOLX     STK    -8024.33   -8004.405 -0.0024892541     -291           0
> -19.92
> 15   MRK     STK    -8017.43   -8007.650 -0.0012213320     -195           0
> -9.78
> 16   MWV     STK     8053.07    8009.890  0.0053908356      254           0
> 43.18
> 19   OXY     STK    -8041.22   -8027.020 -0.0017690250      -91           0
> -14.20
> 21  SIAL     STK     8081.32    8013.160  0.0085060074      104           0
> 68.16
> 23   VFC     STK    -7962.50   -8028.320  0.0081984775      -52           0
> 65.82
> 25   ZMH     STK    -8115.41   -8060.680 -0.0067897497     -107           0
> -54.73
>
> 2 -1 2100 API client has been unsubscribed from account data.
>    local sectype marketValue averageCost        return position realizedPNL
> unrealizedPNL
> 2   AKAM     STK    -8022.18   -8011.965 -0.0012749681     -227           0
> -10.22
> 6   ETFC     STK    -7964.32   -7987.240  0.0028695755     -728           0
> 22.92
> 8   FISV     STK    -8048.00   -7994.000 -0.0067550663     -100           0
> -54.00
> 9     GS     STK    -8006.97   -7985.040 -0.0027463856      -53           0
> -21.93
> 10   HAR     STK    -8066.78   -8015.330 -0.0064189493     -177           0
> -51.45
> 11   HNZ     STK    -7987.07   -7990.070  0.0003754658     -131           0
> 3.00
> 12   ICE     STK     8047.89    8042.140  0.0007149839       54           0
> 5.75
> 14  MOLX     STK    -8024.33   -8004.405 -0.0024892541     -291           0
> -19.92
> 15   MRK     STK    -8017.43   -8007.650 -0.0012213320     -195           0
> -9.78
> 16   MWV     STK     8053.07    8009.890  0.0053908356      254           0
> 43.18
> 19   OXY     STK    -8041.22   -8027.020 -0.0017690250      -91           0
> -14.20
> 21  SIAL     STK     8081.32    8013.160  0.0085060074      104           0
> 68.16
> 23   VFC     STK    -7962.50   -8028.320  0.0081984775      -52           0
> 65.82
> 25   ZMH     STK    -8115.41   -8060.680 -0.0067897497     -107           0
> -54.73
>
>
> The main issue that I am having is the connection gets shut down after the
> first query where I am getting Val populated so that I can monitor the
> positions and take care of orders as need be.  There is the 2100 error
> message after the first query...you can see it is shut down. So my question
> is this... What is it I need to change for the socket to remain open and
> this loop to stay in tact throughout the trading day?  (Also as a side...is
> there any way to get around the box that pops up asking to "Allow incoming
> API connections" in IB that you may have found?)
>
> Thanks very much for any help to get this issue resolved.
>
> Kind Regards,
>
> Brad
>
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/IBrokers-Risk-Management-Backend-Solution-Help-with-twsPortfolioValue-tp4658101.html
> Sent from the Rmetrics mailing list archive at Nabble.com.
>
> _______________________________________________
> 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.



More information about the R-SIG-Finance mailing list