Xbase++
Xbase++
ETrade v1 View Portfolio
See more HTTP Misc Examples
Get portfolio information for a selected brokerage account.Chilkat Xbase++ Downloads
LOCAL nSuccess
LOCAL oHttp
LOCAL oJson
LOCAL cRespStr
LOCAL nStatusCode
LOCAL oXml
LOCAL cTagPath
LOCAL nAccountId
LOCAL i
LOCAL nCount_i
LOCAL cPositionId
LOCAL nExpiryDay
LOCAL nExpiryMonth
LOCAL nExpiryYear
LOCAL cSecurityType
LOCAL nStrikePrice
LOCAL cSymbol
LOCAL cSymbolDescription
LOCAL nDateAcquired
LOCAL nPricePaid
LOCAL nCommissions
LOCAL nOtherFees
LOCAL nQuantity
LOCAL cPositionIndicator
LOCAL cPositionType
LOCAL cDaysGain
LOCAL cDaysGainPct
LOCAL cMarketValue
LOCAL nTotalCost
LOCAL cTotalGain
LOCAL nTotalGainPct
LOCAL cPctOfPortfolio
LOCAL nCostPerShare
LOCAL nTodayCommissions
LOCAL nTodayFees
LOCAL nTodayPricePaid
LOCAL nTodayQuantity
LOCAL cAdjPrevClose
LOCAL cChange
LOCAL cChangePct
LOCAL cLastTrade
LOCAL nLastTradeTime
LOCAL cQuoteStatus
LOCAL nVolume
LOCAL cLotsDetails
LOCAL cQuoteDetails
LOCAL nTotalPages
nSuccess := 0
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
oHttp := CreateObject("Chilkat.Http")
oHttp:OAuth1 := 1
oHttp:OAuthVerifier := ""
oHttp:OAuthConsumerKey := "ETRADE_CONSUMER_KEY"
oHttp:OAuthConsumerSecret := "ETRADE_CONSUMER_SECRET"
// Load the access token previously obtained via the OAuth1 3-Legged Authorization examples Step1 and Step2.
oJson := CreateObject("Chilkat.JsonObject")
nSuccess := oJson:LoadFile("qa_data/tokens/etrade.json")
IF (nSuccess != 1)
? "Failed to load OAuth1 token"
oHttp:destroy()
oJson:destroy()
RETURN
ENDIF
oHttp:OAuthToken := oJson:StringOf("oauth_token")
oHttp:OAuthTokenSecret := oJson:StringOf("oauth_token_secret")
// See the ETrade v1 API documentation HERE.
oHttp:SetUrlVar("accountIdKey", "vsnhtF7d9jXxBy6HyaAC4vQ")
cRespStr := oHttp:QuickGetStr("https://apisb.etrade.com/v1/accounts/{$accountIdKey}/portfolio")
IF (oHttp:LastMethodSuccess != 1)
? oHttp:LastErrorText
oHttp:destroy()
oJson:destroy()
RETURN
ENDIF
// A 200 status code indicates success.
nStatusCode := oHttp:LastStatus
? "statusCode = " + Str(nStatusCode)
// Use the following online tool to generate parsing code from sample XML:
// Generate Parsing Code from XML
// A sample XML response is shown below...
oXml := CreateObject("Chilkat.Xml")
oXml:LoadXml(cRespStr)
nAccountId := oXml:GetChildIntValue("AccountPortfolio|accountId")
i := 0
nCount_i := oXml:NumChildrenHavingTag("AccountPortfolio|Position")
DO WHILE i < nCount_i
oXml:I := i
cPositionId := oXml:GetChildContent("AccountPortfolio|Position[i]|positionId")
nExpiryDay := oXml:GetChildIntValue("AccountPortfolio|Position[i]|Product|expiryDay")
nExpiryMonth := oXml:GetChildIntValue("AccountPortfolio|Position[i]|Product|expiryMonth")
nExpiryYear := oXml:GetChildIntValue("AccountPortfolio|Position[i]|Product|expiryYear")
cSecurityType := oXml:GetChildContent("AccountPortfolio|Position[i]|Product|securityType")
nStrikePrice := oXml:GetChildIntValue("AccountPortfolio|Position[i]|Product|strikePrice")
cSymbol := oXml:GetChildContent("AccountPortfolio|Position[i]|Product|symbol")
cSymbolDescription := oXml:GetChildContent("AccountPortfolio|Position[i]|symbolDescription")
nDateAcquired := oXml:GetChildIntValue("AccountPortfolio|Position[i]|dateAcquired")
nPricePaid := oXml:GetChildIntValue("AccountPortfolio|Position[i]|pricePaid")
nCommissions := oXml:GetChildIntValue("AccountPortfolio|Position[i]|commissions")
nOtherFees := oXml:GetChildIntValue("AccountPortfolio|Position[i]|otherFees")
nQuantity := oXml:GetChildIntValue("AccountPortfolio|Position[i]|quantity")
cPositionIndicator := oXml:GetChildContent("AccountPortfolio|Position[i]|positionIndicator")
cPositionType := oXml:GetChildContent("AccountPortfolio|Position[i]|positionType")
cDaysGain := oXml:GetChildContent("AccountPortfolio|Position[i]|daysGain")
cDaysGainPct := oXml:GetChildContent("AccountPortfolio|Position[i]|daysGainPct")
cMarketValue := oXml:GetChildContent("AccountPortfolio|Position[i]|marketValue")
nTotalCost := oXml:GetChildIntValue("AccountPortfolio|Position[i]|totalCost")
cTotalGain := oXml:GetChildContent("AccountPortfolio|Position[i]|totalGain")
nTotalGainPct := oXml:GetChildIntValue("AccountPortfolio|Position[i]|totalGainPct")
cPctOfPortfolio := oXml:GetChildContent("AccountPortfolio|Position[i]|pctOfPortfolio")
nCostPerShare := oXml:GetChildIntValue("AccountPortfolio|Position[i]|costPerShare")
nTodayCommissions := oXml:GetChildIntValue("AccountPortfolio|Position[i]|todayCommissions")
nTodayFees := oXml:GetChildIntValue("AccountPortfolio|Position[i]|todayFees")
nTodayPricePaid := oXml:GetChildIntValue("AccountPortfolio|Position[i]|todayPricePaid")
nTodayQuantity := oXml:GetChildIntValue("AccountPortfolio|Position[i]|todayQuantity")
cAdjPrevClose := oXml:GetChildContent("AccountPortfolio|Position[i]|adjPrevClose")
cChange := oXml:GetChildContent("AccountPortfolio|Position[i]|Quick|change")
cChangePct := oXml:GetChildContent("AccountPortfolio|Position[i]|Quick|changePct")
cLastTrade := oXml:GetChildContent("AccountPortfolio|Position[i]|Quick|lastTrade")
nLastTradeTime := oXml:GetChildIntValue("AccountPortfolio|Position[i]|Quick|lastTradeTime")
cQuoteStatus := oXml:GetChildContent("AccountPortfolio|Position[i]|Quick|quoteStatus")
nVolume := oXml:GetChildIntValue("AccountPortfolio|Position[i]|Quick|volume")
cLotsDetails := oXml:GetChildContent("AccountPortfolio|Position[i]|lotsDetails")
cQuoteDetails := oXml:GetChildContent("AccountPortfolio|Position[i]|quoteDetails")
i := i + 1
ENDDO
nTotalPages := oXml:GetChildIntValue("AccountPortfolio|totalPages")
// <?xml version="1.0" encoding="UTF-8"?>
// <PortfolioResponse>
// <AccountPortfolio>
// <accountId>83554788</accountId>
// <Position>
// <positionId>10087531</positionId>
// <Product>
// <expiryDay>0</expiryDay>
// <expiryMonth>0</expiryMonth>
// <expiryYear>0</expiryYear>
// <securityType>EQ</securityType>
// <strikePrice>0</strikePrice>
// <symbol>A</symbol>
// </Product>
// <symbolDescription>A</symbolDescription>
// <dateAcquired>-68400000</dateAcquired>
// <pricePaid>0</pricePaid>
// <commissions>0</commissions>
// <otherFees>0</otherFees>
// <quantity>-120</quantity>
// <positionIndicator>TYPE2</positionIndicator>
// <positionType>SHORT</positionType>
// <daysGain>190.80</daysGain>
// <daysGainPct>2.4472</daysGainPct>
// <marketValue>-7605.60</marketValue>
// <totalCost>0</totalCost>
// <totalGain>-7605.60</totalGain>
// <totalGainPct>0</totalGainPct>
// <pctOfPortfolio>-0.0008</pctOfPortfolio>
// <costPerShare>0</costPerShare>
// <todayCommissions>0</todayCommissions>
// <todayFees>0</todayFees>
// <todayPricePaid>0</todayPricePaid>
// <todayQuantity>0</todayQuantity>
// <adjPrevClose>64.970000</adjPrevClose>
// <Quick>
// <change>-1.59</change>
// <changePct>-2.4472</changePct>
// <lastTrade>63.38</lastTrade>
// <lastTradeTime>1529429280</lastTradeTime>
// <quoteStatus>DELAYED</quoteStatus>
// <volume>2431617</volume>
// </Quick>
// <lotsDetails>https://api.etrade.com/v1/accounts/JDIozUumZpHdgbIjMnAAHQ/portfolio/10087531</lotsDetails>
// <quoteDetails>https://api.etrade.com/v1/market/quote/A</quoteDetails>
// </Position>
// <Position>
// <positionId>140357348131</positionId>
// <Product>
// <expiryDay>0</expiryDay>
// <expiryMonth>0</expiryMonth>
// <expiryYear>0</expiryYear>
// <securityType>EQ</securityType>
// <strikePrice>0</strikePrice>
// <symbol>TWTR</symbol>
// </Product>
// <symbolDescription>TWTR</symbolDescription>
// <dateAcquired>-68400000</dateAcquired>
// <pricePaid>0</pricePaid>
// <commissions>0</commissions>
// <otherFees>0</otherFees>
// <quantity>3</quantity>
// <positionIndicator>TYPE2</positionIndicator>
// <positionType>LONG</positionType>
// <daysGain>-3.915</daysGain>
// <daysGainPct>-2.8369</daysGainPct>
// <marketValue>134.085</marketValue>
// <totalCost>0</totalCost>
// <totalGain>134.085</totalGain>
// <totalGainPct>0</totalGainPct>
// <pctOfPortfolio>0.0235</pctOfPortfolio>
// <costPerShare>0</costPerShare>
// <todayCommissions>0</todayCommissions>
// <todayFees>0</todayFees>
// <todayPricePaid>0</todayPricePaid>
// <todayQuantity>0</todayQuantity>
// <adjPrevClose>46.000000</adjPrevClose>
// <Quick>
// <change>-1.305</change>
// <changePct>-2.8369</changePct>
// <lastTrade>44.695</lastTrade>
// <lastTradeTime>1529429280</lastTradeTime>
// <quoteStatus>DELAYED</quoteStatus>
// <volume>26582141</volume>
// </Quick>
// <lotsDetails>https://api.etrade.com/v1/accounts/yIFaUoJ81qyAhgxLWRQ42g/portfolio/140357348131</lotsDetails>
// <quoteDetails>https://api.etrade.com/v1/market/quote/TWTR</quoteDetails>
// </Position>
// <totalPages>1</totalPages>
// </AccountPortfolio>
// </PortfolioResponse>
oHttp:destroy()
oJson:destroy()
oXml:destroy()