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 v1 View PortfolioGet portfolio information for a selected brokerage account.
IncludeFile "CkHttp.pb" IncludeFile "CkJsonObject.pb" IncludeFile "CkXml.pb" Procedure ChilkatExample() ; This example 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 3-Legged Authorization examples Step1 and Step2. json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkJsonObject::ckLoadFile(json,"qa_data/tokens/etrade.json") If success <> 1 Debug "Failed to load OAuth1 token" CkHttp::ckDispose(http) CkJsonObject::ckDispose(json) ProcedureReturn EndIf CkHttp::setCkOAuthToken(http, CkJsonObject::ckStringOf(json,"oauth_token")) CkHttp::setCkOAuthTokenSecret(http, CkJsonObject::ckStringOf(json,"oauth_token_secret")) ; See the ETrade v1 API documentation HERE. CkHttp::ckSetUrlVar(http,"accountIdKey","vsnhtF7d9jXxBy6HyaAC4vQ") respStr.s = CkHttp::ckQuickGetStr(http,"https://apisb.etrade.com/v1/accounts/{$accountIdKey}/portfolio") If CkHttp::ckLastMethodSuccess(http) <> 1 Debug CkHttp::ckLastErrorText(http) CkHttp::ckDispose(http) CkJsonObject::ckDispose(json) ProcedureReturn EndIf ; A 200 status code indicates success. statusCode.i = CkHttp::ckLastStatus(http) Debug "statusCode = " + Str(statusCode) ; Use the following online tool to generate parsing code from sample XML: ; Generate Parsing Code from XML ; A sample XML response is shown below... xml.i = CkXml::ckCreate() If xml.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkXml::ckLoadXml(xml,respStr) tagPath.s accountId.i i.i count_i.i positionId.s expiryDay.i expiryMonth.i expiryYear.i securityType.s strikePrice.i symbol.s symbolDescription.s dateAcquired.i pricePaid.i commissions.i otherFees.i quantity.i positionIndicator.s positionType.s daysGain.s daysGainPct.s marketValue.s totalCost.i totalGain.s totalGainPct.i pctOfPortfolio.s costPerShare.i todayCommissions.i todayFees.i todayPricePaid.i todayQuantity.i adjPrevClose.s change.s changePct.s lastTrade.s lastTradeTime.i quoteStatus.s volume.i lotsDetails.s quoteDetails.s totalPages.i accountId = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|accountId") i = 0 count_i = CkXml::ckNumChildrenHavingTag(xml,"AccountPortfolio|Position") While i < count_i CkXml::setCkI(xml, i) positionId = CkXml::ckGetChildContent(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::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|dateAcquired") pricePaid = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|pricePaid") commissions = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|commissions") otherFees = CkXml::ckGetChildIntValue(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::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|totalCost") totalGain = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|totalGain") totalGainPct = CkXml::ckGetChildIntValue(xml,"AccountPortfolio|Position[i]|totalGainPct") pctOfPortfolio = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|pctOfPortfolio") costPerShare = CkXml::ckGetChildIntValue(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") adjPrevClose = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|adjPrevClose") 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") quoteStatus = CkXml::ckGetChildContent(xml,"AccountPortfolio|Position[i]|Quick|quoteStatus") 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") ; <?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> CkHttp::ckDispose(http) CkJsonObject::ckDispose(json) CkXml::ckDispose(xml) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.