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
(Delphi DLL) ETrade v1 View PortfolioGet portfolio information for a selected brokerage account.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Http, Xml, JsonObject; ... procedure TForm1.Button1Click(Sender: TObject); var http: HCkHttp; json: HCkJsonObject; success: Boolean; respStr: PWideChar; statusCode: Integer; xml: HCkXml; tagPath: PWideChar; accountId: Integer; i: Integer; count_i: Integer; positionId: PWideChar; expiryDay: Integer; expiryMonth: Integer; expiryYear: Integer; securityType: PWideChar; strikePrice: Integer; symbol: PWideChar; symbolDescription: PWideChar; dateAcquired: Integer; pricePaid: Integer; commissions: Integer; otherFees: Integer; quantity: Integer; positionIndicator: PWideChar; positionType: PWideChar; daysGain: PWideChar; daysGainPct: PWideChar; marketValue: PWideChar; totalCost: Integer; totalGain: PWideChar; totalGainPct: Integer; pctOfPortfolio: PWideChar; costPerShare: Integer; todayCommissions: Integer; todayFees: Integer; todayPricePaid: Integer; todayQuantity: Integer; adjPrevClose: PWideChar; change: PWideChar; changePct: PWideChar; lastTrade: PWideChar; lastTradeTime: Integer; quoteStatus: PWideChar; volume: Integer; lotsDetails: PWideChar; quoteDetails: PWideChar; totalPages: Integer; begin // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. http := CkHttp_Create(); CkHttp_putOAuth1(http,True); CkHttp_putOAuthVerifier(http,''); CkHttp_putOAuthConsumerKey(http,'ETRADE_CONSUMER_KEY'); CkHttp_putOAuthConsumerSecret(http,'ETRADE_CONSUMER_SECRET'); // Load the access token previously obtained via the OAuth1 3-Legged Authorization examples Step1 and Step2. json := CkJsonObject_Create(); success := CkJsonObject_LoadFile(json,'qa_data/tokens/etrade.json'); if (success <> True) then begin Memo1.Lines.Add('Failed to load OAuth1 token'); Exit; end; CkHttp_putOAuthToken(http,CkJsonObject__stringOf(json,'oauth_token')); CkHttp_putOAuthTokenSecret(http,CkJsonObject__stringOf(json,'oauth_token_secret')); // See the ETrade v1 API documentation HERE. CkHttp_SetUrlVar(http,'accountIdKey','vsnhtF7d9jXxBy6HyaAC4vQ'); respStr := CkHttp__quickGetStr(http,'https://apisb.etrade.com/v1/accounts/{$accountIdKey}/portfolio'); if (CkHttp_getLastMethodSuccess(http) <> True) then begin Memo1.Lines.Add(CkHttp__lastErrorText(http)); Exit; end; // A 200 status code indicates success. statusCode := CkHttp_getLastStatus(http); Memo1.Lines.Add('statusCode = ' + IntToStr(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 := CkXml_Create(); CkXml_LoadXml(xml,respStr); accountId := CkXml_GetChildIntValue(xml,'AccountPortfolio|accountId'); i := 0; count_i := CkXml_NumChildrenHavingTag(xml,'AccountPortfolio|Position'); while i < count_i do begin CkXml_putI(xml,i); positionId := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|positionId'); expiryDay := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|Product|expiryDay'); expiryMonth := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|Product|expiryMonth'); expiryYear := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|Product|expiryYear'); securityType := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|Product|securityType'); strikePrice := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|Product|strikePrice'); symbol := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|Product|symbol'); symbolDescription := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|symbolDescription'); dateAcquired := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|dateAcquired'); pricePaid := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|pricePaid'); commissions := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|commissions'); otherFees := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|otherFees'); quantity := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|quantity'); positionIndicator := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|positionIndicator'); positionType := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|positionType'); daysGain := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|daysGain'); daysGainPct := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|daysGainPct'); marketValue := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|marketValue'); totalCost := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|totalCost'); totalGain := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|totalGain'); totalGainPct := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|totalGainPct'); pctOfPortfolio := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|pctOfPortfolio'); costPerShare := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|costPerShare'); todayCommissions := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|todayCommissions'); todayFees := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|todayFees'); todayPricePaid := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|todayPricePaid'); todayQuantity := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|todayQuantity'); adjPrevClose := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|adjPrevClose'); change := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|Quick|change'); changePct := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|Quick|changePct'); lastTrade := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|Quick|lastTrade'); lastTradeTime := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|Quick|lastTradeTime'); quoteStatus := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|Quick|quoteStatus'); volume := CkXml_GetChildIntValue(xml,'AccountPortfolio|Position[i]|Quick|volume'); lotsDetails := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|lotsDetails'); quoteDetails := CkXml__getChildContent(xml,'AccountPortfolio|Position[i]|quoteDetails'); i := i + 1; end; totalPages := CkXml_GetChildIntValue(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_Dispose(http); CkJsonObject_Dispose(json); CkXml_Dispose(xml); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.