Sample code for 30+ languages & platforms
Lianja

ETrade Get Account Balances

See more ETrade Examples

Retrieves the current account balance and related details for a specified account.

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

loHttp = createobject("CkHttp")

loHttp.OAuth1 = .T.
loHttp.OAuthVerifier = ""
loHttp.OAuthConsumerKey = "ETRADE_CONSUMER_KEY"
loHttp.OAuthConsumerSecret = "ETRADE_CONSUMER_SECRET"

// Load the access token previously obtained via the OAuth1 Authorization
loJsonToken = createobject("CkJsonObject")
llSuccess = loJsonToken.LoadFile("qa_data/tokens/etrade.json")
if (llSuccess <> .T.) then
    ? "Failed to load OAuth1 token"
    release loHttp
    release loJsonToken
    return
endif

loHttp.OAuthToken = loJsonToken.StringOf("oauth_token")
loHttp.OAuthTokenSecret = loJsonToken.StringOf("oauth_token_secret")

lcSandboxUrl = "https://apisb.etrade.com/v1/accounts/{$accountIdKey}/balance?instType={$instType}&realTimeNAV=true"
lcLiveUrl = "https://api.etrade.com/v1/accounts/{$accountIdKey}/balance?instType={$instType}&realTimeNAV=true"

loHttp.SetUrlVar("accountIdKey","6_Dpy0rmuQ9cu9IbTfvF2A")
loHttp.SetUrlVar("instType","BROKERAGE")

loResp = createobject("CkHttpResponse")
llSuccess = loHttp.HttpNoBody("GET",lcSandboxUrl,loResp)
if (llSuccess = .F.) then
    ? loHttp.LastErrorText
    release loHttp
    release loJsonToken
    release loResp
    return
endif

// Make sure a successful response was received.
if (loResp.StatusCode > 200) then
    ? loResp.StatusLine
    ? loResp.Header
    ? loResp.BodyStr
    release loHttp
    release loJsonToken
    release loResp
    return
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"?>
// <BalanceResponse>
//    <accountId>83564979</accountId>
//    <accountType>PDT_ACCOUNT</accountType>
//    <optionLevel>LEVEL_4</optionLevel>
//    <accountDescription>KRITHH TT</accountDescription>
//    <quoteMode>6</quoteMode>
//    <dayTraderStatus>PDT_MIN_EQUITY_RES_1XK</dayTraderStatus>
//    <accountMode>PDT ACCOUNT</accountMode>
//    <Cash>
//       <fundsForOpenOrdersCash>0</fundsForOpenOrdersCash>
//       <moneyMktBalance>0</moneyMktBalance>
//    </Cash>
//    <Computed>
//       <cashAvailableForInvestment>0</cashAvailableForInvestment>
//       <netCash>93921.44</netCash>
//       <cashBalance>93921.44</cashBalance>
//       <settledCashForInvestment>0</settledCashForInvestment>
//       <unSettledCashForInvestment>0</unSettledCashForInvestment>
//       <fundsWithheldFromPurchasePower>0</fundsWithheldFromPurchasePower>
//       <fundsWithheldFromWithdrawal>0</fundsWithheldFromWithdrawal>
//       <marginBuyingPower>0</marginBuyingPower>
//       <cashBuyingPower>93921.44</cashBuyingPower>
//       <dtMarginBuyingPower>0</dtMarginBuyingPower>
//       <dtCashBuyingPower>0</dtCashBuyingPower>
//       <shortAdjustBalance>0</shortAdjustBalance>
//       <regtEquity>0</regtEquity>
//       <regtEquityPercent>0</regtEquityPercent>
//       <accountBalance>0</accountBalance>
//    </Computed>
//    <Margin>
//       <dtCashOpenOrderReserve>0</dtCashOpenOrderReserve>
//       <dtMarginOpenOrderReserve>0</dtMarginOpenOrderReserve>
//    </Margin>
// </BalanceResponse>

loXml = createobject("CkXml")
loXml.LoadXml(loResp.BodyStr)
? loXml.GetXml()

lnAccountId = loXml.GetChildIntValue("accountId")
lcAccountType = loXml.GetChildContent("accountType")
lcOptionLevel = loXml.GetChildContent("optionLevel")
lcAccountDescription = loXml.GetChildContent("accountDescription")
lnQuoteMode = loXml.GetChildIntValue("quoteMode")
lcDayTraderStatus = loXml.GetChildContent("dayTraderStatus")
lcAccountMode = loXml.GetChildContent("accountMode")
lnFundsForOpenOrdersCash = loXml.GetChildIntValue("Cash|fundsForOpenOrdersCash")
lnMoneyMktBalance = loXml.GetChildIntValue("Cash|moneyMktBalance")
lnCashAvailableForInvestment = loXml.GetChildIntValue("Computed|cashAvailableForInvestment")
lcNetCash = loXml.GetChildContent("Computed|netCash")
lcCashBalance = loXml.GetChildContent("Computed|cashBalance")
lnSettledCashForInvestment = loXml.GetChildIntValue("Computed|settledCashForInvestment")
lnUnSettledCashForInvestment = loXml.GetChildIntValue("Computed|unSettledCashForInvestment")
lnFundsWithheldFromPurchasePower = loXml.GetChildIntValue("Computed|fundsWithheldFromPurchasePower")
lnFundsWithheldFromWithdrawal = loXml.GetChildIntValue("Computed|fundsWithheldFromWithdrawal")
lnMarginBuyingPower = loXml.GetChildIntValue("Computed|marginBuyingPower")
lcCashBuyingPower = loXml.GetChildContent("Computed|cashBuyingPower")
lnDtMarginBuyingPower = loXml.GetChildIntValue("Computed|dtMarginBuyingPower")
lnDtCashBuyingPower = loXml.GetChildIntValue("Computed|dtCashBuyingPower")
lnShortAdjustBalance = loXml.GetChildIntValue("Computed|shortAdjustBalance")
lnRegtEquity = loXml.GetChildIntValue("Computed|regtEquity")
lnRegtEquityPercent = loXml.GetChildIntValue("Computed|regtEquityPercent")
lnAccountBalance = loXml.GetChildIntValue("Computed|accountBalance")
lnDtCashOpenOrderReserve = loXml.GetChildIntValue("Margin|dtCashOpenOrderReserve")
lnDtMarginOpenOrderReserve = loXml.GetChildIntValue("Margin|dtMarginOpenOrderReserve")

? "Success."


release loHttp
release loJsonToken
release loResp
release loXml