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
(Unicode C) 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
#include <C_CkHttpW.h> #include <C_CkJsonObjectW.h> #include <C_CkHttpResponseW.h> #include <C_CkXmlW.h> void ChilkatSample(void) { HCkHttpW http; HCkJsonObjectW jsonToken; BOOL success; const wchar_t *sandboxUrl; const wchar_t *liveUrl; HCkHttpResponseW resp; HCkXmlW xml; int accountId; int positionId; int expiryDay; int expiryMonth; int expiryYear; const wchar_t *securityType; int strikePrice; const wchar_t *symbol; const wchar_t *symbolDescription; const wchar_t *dateAcquired; const wchar_t *pricePaid; const wchar_t *commissions; const wchar_t *otherFees; int quantity; const wchar_t *positionIndicator; const wchar_t *positionType; const wchar_t *daysGain; const wchar_t *daysGainPct; const wchar_t *marketValue; const wchar_t *totalCost; const wchar_t *totalGain; const wchar_t *totalGainPct; const wchar_t *pctOfPortfolio; const wchar_t *costPerShare; int todayCommissions; int todayFees; int todayPricePaid; int todayQuantity; const wchar_t *change; const wchar_t *changePct; const wchar_t *lastTrade; int lastTradeTime; int volume; const wchar_t *lotsDetails; const wchar_t *quoteDetails; int totalPages; int i; int count_i; // This requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. http = CkHttpW_Create(); CkHttpW_putOAuth1(http,TRUE); CkHttpW_putOAuthVerifier(http,L""); CkHttpW_putOAuthConsumerKey(http,L"ETRADE_CONSUMER_KEY"); CkHttpW_putOAuthConsumerSecret(http,L"ETRADE_CONSUMER_SECRET"); // Load the access token previously obtained via the OAuth1 Authorization jsonToken = CkJsonObjectW_Create(); success = CkJsonObjectW_LoadFile(jsonToken,L"qa_data/tokens/etrade.json"); if (success != TRUE) { wprintf(L"Failed to load OAuth1 token\n"); CkHttpW_Dispose(http); CkJsonObjectW_Dispose(jsonToken); return; } CkHttpW_putOAuthToken(http,CkJsonObjectW_stringOf(jsonToken,L"oauth_token")); CkHttpW_putOAuthTokenSecret(http,CkJsonObjectW_stringOf(jsonToken,L"oauth_token_secret")); sandboxUrl = L"https://apisb.etrade.com/v1/accounts/{$accountIdKey}/portfolio"; liveUrl = L"https://api.etrade.com/v1/accounts/{$accountIdKey}/portfolio"; CkHttpW_SetUrlVar(http,L"accountIdKey",L"6_Dpy0rmuQ9cu9IbTfvF2A"); resp = CkHttpW_QuickGetObj(http,sandboxUrl); if (CkHttpW_getLastMethodSuccess(http) != TRUE) { wprintf(L"%s\n",CkHttpW_lastErrorText(http)); CkHttpW_Dispose(http); CkJsonObjectW_Dispose(jsonToken); return; } // Make sure a successful response was received. if (CkHttpResponseW_getStatusCode(resp) > 200) { wprintf(L"%s\n",CkHttpResponseW_statusLine(resp)); wprintf(L"%s\n",CkHttpResponseW_header(resp)); wprintf(L"%s\n",CkHttpResponseW_bodyStr(resp)); CkHttpW_Dispose(http); CkJsonObjectW_Dispose(jsonToken); return; } // 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 = CkXmlW_Create(); CkXmlW_LoadXml(xml,CkHttpResponseW_bodyStr(resp)); wprintf(L"%s\n",CkXmlW_getXml(xml)); accountId = CkXmlW_GetChildIntValue(xml,L"AccountPortfolio|accountId"); i = 0; count_i = CkXmlW_NumChildrenHavingTag(xml,L"AccountPortfolio|Position"); while (i < count_i) { CkXmlW_putI(xml,i); positionId = CkXmlW_GetChildIntValue(xml,L"AccountPortfolio|Position[i]|positionId"); expiryDay = CkXmlW_GetChildIntValue(xml,L"AccountPortfolio|Position[i]|Product|expiryDay"); expiryMonth = CkXmlW_GetChildIntValue(xml,L"AccountPortfolio|Position[i]|Product|expiryMonth"); expiryYear = CkXmlW_GetChildIntValue(xml,L"AccountPortfolio|Position[i]|Product|expiryYear"); securityType = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|Product|securityType"); strikePrice = CkXmlW_GetChildIntValue(xml,L"AccountPortfolio|Position[i]|Product|strikePrice"); symbol = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|Product|symbol"); symbolDescription = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|symbolDescription"); dateAcquired = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|dateAcquired"); pricePaid = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|pricePaid"); commissions = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|commissions"); otherFees = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|otherFees"); quantity = CkXmlW_GetChildIntValue(xml,L"AccountPortfolio|Position[i]|quantity"); positionIndicator = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|positionIndicator"); positionType = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|positionType"); daysGain = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|daysGain"); daysGainPct = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|daysGainPct"); marketValue = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|marketValue"); totalCost = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|totalCost"); totalGain = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|totalGain"); totalGainPct = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|totalGainPct"); pctOfPortfolio = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|pctOfPortfolio"); costPerShare = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|costPerShare"); todayCommissions = CkXmlW_GetChildIntValue(xml,L"AccountPortfolio|Position[i]|todayCommissions"); todayFees = CkXmlW_GetChildIntValue(xml,L"AccountPortfolio|Position[i]|todayFees"); todayPricePaid = CkXmlW_GetChildIntValue(xml,L"AccountPortfolio|Position[i]|todayPricePaid"); todayQuantity = CkXmlW_GetChildIntValue(xml,L"AccountPortfolio|Position[i]|todayQuantity"); change = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|Quick|change"); changePct = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|Quick|changePct"); lastTrade = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|Quick|lastTrade"); lastTradeTime = CkXmlW_GetChildIntValue(xml,L"AccountPortfolio|Position[i]|Quick|lastTradeTime"); volume = CkXmlW_GetChildIntValue(xml,L"AccountPortfolio|Position[i]|Quick|volume"); lotsDetails = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|lotsDetails"); quoteDetails = CkXmlW_getChildContent(xml,L"AccountPortfolio|Position[i]|quoteDetails"); i = i + 1; } totalPages = CkXmlW_GetChildIntValue(xml,L"AccountPortfolio|totalPages"); wprintf(L"Success.\n"); CkHttpW_Dispose(http); CkJsonObjectW_Dispose(jsonToken); CkXmlW_Dispose(xml); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.