Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) ETrade View PortfolioGets portfolio information for the selected brokerage account. For more information, see https://apisb.etrade.com/docs/api/account/api-portfolio-v1.html
IncludeFile "CkHttpResponse.pb" IncludeFile "CkHttp.pb" IncludeFile "CkJsonObject.pb" IncludeFile "CkXml.pb" Procedure ChilkatExample() ; This requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. http.i = CkHttp::ckCreate() If http.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkHttp::setCkOAuth1(http, 1) CkHttp::setCkOAuthVerifier(http, "") CkHttp::setCkOAuthConsumerKey(http, "ETRADE_CONSUMER_KEY") CkHttp::setCkOAuthConsumerSecret(http, "ETRADE_CONSUMER_SECRET") ; Load the access token previously obtained via the OAuth1 Authorization jsonToken.i = CkJsonObject::ckCreate() If jsonToken.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/etrade.json") If success <> 1 Debug "Failed to load OAuth1 token" CkHttp::ckDispose(http) CkJsonObject::ckDispose(jsonToken) ProcedureReturn EndIf CkHttp::setCkOAuthToken(http, CkJsonObject::ckStringOf(jsonToken,"oauth_token")) CkHttp::setCkOAuthTokenSecret(http, CkJsonObject::ckStringOf(jsonToken,"oauth_token_secret")) sandboxUrl.s = "https://apisb.etrade.com/v1/accounts/{$accountIdKey}/portfolio" liveUrl.s = "https://api.etrade.com/v1/accounts/{$accountIdKey}/portfolio" CkHttp::ckSetUrlVar(http,"accountIdKey","6_Dpy0rmuQ9cu9IbTfvF2A") resp.i = CkHttp::ckQuickGetObj(http,sandboxUrl) If CkHttp::ckLastMethodSuccess(http) <> 1 Debug CkHttp::ckLastErrorText(http) CkHttp::ckDispose(http) CkJsonObject::ckDispose(jsonToken) ProcedureReturn EndIf ; Make sure a successful response was received. If CkHttpResponse::ckStatusCode(resp) > 200 Debug CkHttpResponse::ckStatusLine(resp) Debug CkHttpResponse::ckHeader(resp) Debug CkHttpResponse::ckBodyStr(resp) CkHttp::ckDispose(http) CkJsonObject::ckDispose(jsonToken) ProcedureReturn EndIf ; Sample XML response: ; Use this online tool to generate parsing code from sample XML: ; Generate Parsing Code from XML ; <?xml version="1.0" encoding="UTF-8" standalone="yes"?> ; <PortfolioResponse> ; <AccountPortfolio> ; <accountId>83359700</accountId> ; <Position> ; <positionId>27005131</positionId> ; <Product> ; <expiryDay>0</expiryDay> ; <expiryMonth>0</expiryMonth> ; <expiryYear>0</expiryYear> ; <securityType>EQ</securityType> ; <strikePrice>0</strikePrice> ; <symbol>BR</symbol> ; </Product> ; <symbolDescription>BR</symbolDescription> ; <dateAcquired>-57600000</dateAcquired> ; <pricePaid>0</pricePaid> ; <commissions>0</commissions> ; <otherFees>0</otherFees> ; <quantity>10</quantity> ; <positionIndicator>TYPE2</positionIndicator> ; <positionType>LONG</positionType> ; <daysGain>-2.7999</daysGain> ; <daysGainPct>-1.3346</daysGainPct> ; <marketValue>207</marketValue> ; <totalCost>0</totalCost> ; <totalGain>207</totalGain> ; <totalGainPct>0</totalGainPct> ; <pctOfPortfolio>0.0018</pctOfPortfolio> ; <costPerShare>0</costPerShare> ; <todayCommissions>0</todayCommissions> ; <todayFees>0</todayFees> ; <todayPricePaid>0</todayPricePaid> ; <todayQuantity>0</todayQuantity> ; <Quick> ; <change>-0.28</change> ; <changePct>-1.3346</changePct> ; <lastTrade>20.70</lastTrade> ; <lastTradeTime>1343160240</lastTradeTime> ; <volume>431591</volume> ; </Quick> ; <lotsDetails>https://apisb.etrade.com/v1/accounts/E5Nd4LJBsEi_UyHm4Vio9g/portfolio/27005131</lotsDetails> ; <quoteDetails>https://apisb.etrade.com/v1/market/quote/BR</quoteDetails> ; </Position> ; <Position> ; <positionId>4709131</positionId> ; <Product> ; <expiryDay>0</expiryDay> ; <expiryMonth>0</expiryMonth> ; <expiryYear>0</expiryYear> ; <securityType>EQ</securityType> ; <strikePrice>0</strikePrice> ; <symbol>GLD</symbol> ; </Product> ; <symbolDescription>GLD</symbolDescription> ; <dateAcquired>1335250800000</dateAcquired> ; <pricePaid>1</pricePaid> ; <commissions>5</commissions> ; <otherFees>0</otherFees> ; <quantity>2</quantity> ; <positionIndicator>TYPE1</positionIndicator> ; <positionType>LONG</positionType> ; <daysGain>0.9799</daysGain> ; <daysGainPct>0.3201</daysGainPct> ; <marketValue>307.04</marketValue> ; <totalCost>7</totalCost> ; <totalGain>300.04</totalGain> ; <totalGainPct>4286.2857</totalGainPct> ; <pctOfPortfolio>0.0028</pctOfPortfolio> ; <costPerShare>3.5</costPerShare> ; <todayCommissions>0</todayCommissions> ; <todayFees>0</todayFees> ; <todayPricePaid>0</todayPricePaid> ; <todayQuantity>0</todayQuantity> ; <Quick> ; <change>0.49</change> ; <changePct>0.3201</changePct> ; <lastTrade>153.52</lastTrade> ; <lastTradeTime>1343160000</lastTradeTime> ; <volume>6510878</volume> ; </Quick> ; <lotsDetails>https://apisb.etrade.com/v1/accounts/E5Nd4LJBsEi_UyHm4Vio9g/portfolio/4709131</lotsDetails> ; <quoteDetails>https://apisb.etrade.com/v1/market/quote/GLD</quoteDetails> ; </Position> ; <Position> ; <positionId>4729131</positionId> ; <Product> ; <expiryDay>0</expiryDay> ; <expiryMonth>0</expiryMonth> ; <expiryYear>0</expiryYear> ; <securityType>EQ</securityType> ; <strikePrice>0</strikePrice> ; <symbol>MSFT</symbol> ; </Product> ; <symbolDescription>MSFT</symbolDescription> ; <dateAcquired>1335250800000</dateAcquired> ; <pricePaid>1</pricePaid> ; <commissions>5</commissions> ; <otherFees>0</otherFees> ; <quantity>1</quantity> ; <positionIndicator>TYPE2</positionIndicator> ; <positionType>LONG</positionType> ; <daysGain>-0.13</daysGain> ; <daysGainPct>-0.4439</daysGainPct> ; <marketValue>29.1499</marketValue> ; <totalCost>6</totalCost> ; <totalGain>23.1499</totalGain> ; <totalGainPct>385.8333</totalGainPct> ; <pctOfPortfolio>0.0002</pctOfPortfolio> ; <costPerShare>6</costPerShare> ; <todayCommissions>0</todayCommissions> ; <todayFees>0</todayFees> ; <todayPricePaid>0</todayPricePaid> ; <todayQuantity>0</todayQuantity> ; <Quick> ; <change>-0.13</change> ; <changePct>-0.4439</changePct> ; <lastTrade>29.15</lastTrade> ; <lastTradeTime>1343160000</lastTradeTime> ; <volume>47711254</volume> ; </Quick> ; <lotsDetails>https://apisb.etrade.com/v1/accounts/E5Nd4LJBsEi_UyHm4Vio9g/portfolio/4729131</lotsDetails> ; <quoteDetails>https://apisb.etrade.com/v1/market/quote/MSFT</quoteDetails> ; </Position> ; <Position> ; <positionId>23971131</positionId> ; <Product> ; <expiryDay>0</expiryDay> ; <expiryMonth>0</expiryMonth> ; <expiryYear>0</expiryYear> ; <securityType>EQ</securityType> ; <strikePrice>0</strikePrice> ; <symbol>MSFT</symbol> ; </Product> ; <symbolDescription>MSFT</symbolDescription> ; <dateAcquired>-57600000</dateAcquired> ; <pricePaid>0</pricePaid> ; <commissions>0</commissions> ; <otherFees>0</otherFees> ; <quantity>-10</quantity> ; <positionIndicator>TYPE5</positionIndicator> ; <positionType>SHORT</positionType> ; <daysGain>1.30</daysGain> ; <daysGainPct>-0.4439</daysGainPct> ; <marketValue>-291.5</marketValue> ; <totalCost>0</totalCost> ; <totalGain>-291.5</totalGain> ; <totalGainPct>0</totalGainPct> ; <pctOfPortfolio>-0.0026</pctOfPortfolio> ; <costPerShare>0</costPerShare> ; <todayCommissions>0</todayCommissions> ; <todayFees>0</todayFees> ; <todayPricePaid>0</todayPricePaid> ; <todayQuantity>0</todayQuantity> ; <Quick> ; <change>-0.13</change> ; <changePct>-0.4439</changePct> ; <lastTrade>29.15</lastTrade> ; <lastTradeTime>1343160000</lastTradeTime> ; <volume>47711254</volume> ; </Quick> ; <lotsDetails>https://apisb.etrade.com/v1/accounts/E5Nd4LJBsEi_UyHm4Vio9g/portfolio/23971131</lotsDetails> ; <quoteDetails>https://apisb.etrade.com/v1/market/quote/MSFT</quoteDetails> ; </Position> ; <Position> ; <positionId>4725131</positionId> ; <Product> ; <expiryDay>0</expiryDay> ; <expiryMonth>0</expiryMonth> ; <expiryYear>0</expiryYear> ; <securityType>EQ</securityType> ; <strikePrice>0</strikePrice> ; <symbol>RBL</symbol> ; </Product> ; <symbolDescription>RBL</symbolDescription> ; <dateAcquired>1335250800000</dateAcquired> ; <pricePaid>1</pricePaid> ; <commissions>5</commissions> ; <otherFees>0</otherFees> ; <quantity>2</quantity> ; <positionIndicator>TYPE2</positionIndicator> ; <positionType>LONG</positionType> ; <daysGain>-0.52</daysGain> ; <daysGainPct>-1.0252</daysGainPct> ; <marketValue>50.20</marketValue> ; <totalCost>7</totalCost> ; <totalGain>43.20</totalGain> ; <totalGainPct>617.1428</totalGainPct> ; <pctOfPortfolio>0.0004</pctOfPortfolio> ; <costPerShare>3.5</costPerShare> ; <todayCommissions>0</todayCommissions> ; <todayFees>0</todayFees> ; <todayPricePaid>0</todayPricePaid> ; <todayQuantity>0</todayQuantity> ; <Quick> ; <change>-0.26</change> ; <changePct>-1.0252</changePct> ; <lastTrade>25.10</lastTrade> ; <lastTradeTime>1343159760</lastTradeTime> ; <volume>11827</volume> ; </Quick> ; <lotsDetails>https://apisb.etrade.com/v1/accounts/E5Nd4LJBsEi_UyHm4Vio9g/portfolio/4725131</lotsDetails> ; <quoteDetails>https://apisb.etrade.com/v1/market/quote/RBL</quoteDetails> ; </Position> ; <Position> ; <positionId>20841131</positionId> ; <Product> ; <expiryDay>0</expiryDay> ; <expiryMonth>0</expiryMonth> ; <expiryYear>0</expiryYear> ; <securityType>EQ</securityType> ; <strikePrice>0</strikePrice> ; <symbol>RPI</symbol> ; </Product> ; <symbolDescription>RPI</symbolDescription> ; <dateAcquired>1335250800000</dateAcquired> ; <pricePaid>7.5599</pricePaid> ; <commissions>5</commissions> ; <otherFees>45</otherFees> ; <quantity>2</quantity> ; <positionIndicator>TYPE2</positionIndicator> ; <positionType>LONG</positionType> ; <daysGain>0</daysGain> ; <daysGainPct>0</daysGainPct> ; <marketValue>2.8599</marketValue> ; <totalCost>65.12</totalCost> ; <totalGain>-62.2599</totalGain> ; <totalGainPct>-95.6081</totalGainPct> ; <pctOfPortfolio>0.00</pctOfPortfolio> ; <costPerShare>32.56</costPerShare> ; <todayCommissions>0</todayCommissions> ; <todayFees>0</todayFees> ; <todayPricePaid>0</todayPricePaid> ; <todayQuantity>0</todayQuantity> ; <Quick> ; <change>0</change> ; <changePct>0</changePct> ; <lastTrade>1.43</lastTrade> ; <lastTradeTime>1343150700</lastTradeTime> ; <volume>1803</volume> ; </Quick> ; <lotsDetails>https://apisb.etrade.com/v1/accounts/E5Nd4LJBsEi_UyHm4Vio9g/portfolio/20841131</lotsDetails> ; <quoteDetails>https://apisb.etrade.com/v1/market/quote/RPI</quoteDetails> ; </Position> ; <Position> ; <positionId>4732131</positionId> ; <Product> ; <expiryDay>0</expiryDay> ; <expiryMonth>0</expiryMonth> ; <expiryYear>0</expiryYear> ; <securityType>EQ</securityType> ; <strikePrice>0</strikePrice> ; <symbol>RXD</symbol> ; </Product> ; <symbolDescription>RXD</symbolDescription> ; <dateAcquired>1335250800000</dateAcquired> ; <pricePaid>1</pricePaid> ; <commissions>2.99</commissions> ; <otherFees>0.0099</otherFees> ; <quantity>-3</quantity> ; <positionIndicator>TYPE5</positionIndicator> ; <positionType>SHORT</positionType> ; <daysGain>-1.296</daysGain> ; <daysGainPct>2.6799</daysGainPct> ; <marketValue>-49.6559</marketValue> ; <totalCost>0</totalCost> ; <totalGain>-49.6559</totalGain> ; <totalGainPct>-827.60</totalGainPct> ; <pctOfPortfolio>-0.0004</pctOfPortfolio> ; <costPerShare>0</costPerShare> ; <todayCommissions>0</todayCommissions> ; <todayFees>0</todayFees> ; <todayPricePaid>0</todayPricePaid> ; <todayQuantity>0</todayQuantity> ; <Quick> ; <change>0.432</change> ; <changePct>2.6799</changePct> ; <lastTrade>16.552</lastTrade> ; <lastTradeTime>1343157480</lastTradeTime> ; <volume>2200</volume> ; </Quick> ; <lotsDetails>https://apisb.etrade.com/v1/accounts/E5Nd4LJBsEi_UyHm4Vio9g/portfolio/4732131</lotsDetails> ; <quoteDetails>https://apisb.etrade.com/v1/market/quote/RXD</quoteDetails> ; </Position> ; <totalPages>1</totalPages> ; </AccountPortfolio> ; </PortfolioResponse> ; xml.i = CkXml::ckCreate() If xml.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkXml::ckLoadXml(xml,CkHttpResponse::ckBodyStr(resp)) Debug CkXml::ckGetXml(xml) accountId.i positionId.i expiryDay.i expiryMonth.i expiryYear.i securityType.s strikePrice.i symbol.s symbolDescription.s dateAcquired.s pricePaid.s commissions.s otherFees.s quantity.i positionIndicator.s positionType.s daysGain.s daysGainPct.s marketValue.s totalCost.s totalGain.s totalGainPct.s pctOfPortfolio.s costPerShare.s todayCommissions.i todayFees.i todayPricePaid.i todayQuantity.i change.s changePct.s lastTrade.s lastTradeTime.i volume.i lotsDetails.s quoteDetails.s totalPages.i accountId = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|accountId") i.i = 0 count_i.i = CkXml::ckNumChildrenHavingTag(xml,"AccountPortfolio|Position") While i < count_i CkXml::setCkI(xml, i) positionId = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|positionId") expiryDay = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|Product|expiryDay") expiryMonth = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|Product|expiryMonth") expiryYear = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|Product|expiryYear") securityType = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|Product|securityType") strikePrice = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|Product|strikePrice") symbol = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|Product|symbol") symbolDescription = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|symbolDescription") dateAcquired = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|dateAcquired") pricePaid = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|pricePaid") commissions = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|commissions") otherFees = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|otherFees") quantity = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|quantity") positionIndicator = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|positionIndicator") positionType = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|positionType") daysGain = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|daysGain") daysGainPct = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|daysGainPct") marketValue = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|marketValue") totalCost = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|totalCost") totalGain = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|totalGain") totalGainPct = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|totalGainPct") pctOfPortfolio = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|pctOfPortfolio") costPerShare = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|costPerShare") todayCommissions = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|todayCommissions") todayFees = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|todayFees") todayPricePaid = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|todayPricePaid") todayQuantity = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|todayQuantity") change = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|Quick|change") changePct = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|Quick|changePct") lastTrade = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|Quick|lastTrade") lastTradeTime = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|Quick|lastTradeTime") volume = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|Quick|volume") lotsDetails = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|lotsDetails") quoteDetails = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|quoteDetails") i = i + 1 Wend totalPages = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|totalPages") Debug "Success." CkHttp::ckDispose(http) CkJsonObject::ckDispose(jsonToken) CkXml::ckDispose(xml) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.