Sample code for 30+ languages & platforms
Swift

ETrade Get Account Balances

See more ETrade Examples

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

Chilkat Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

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

    let http = CkoHttp()!

    http.oAuth1 = true
    http.oAuthVerifier = ""
    http.oAuthConsumerKey = "ETRADE_CONSUMER_KEY"
    http.oAuthConsumerSecret = "ETRADE_CONSUMER_SECRET"

    // Load the access token previously obtained via the OAuth1 Authorization
    let jsonToken = CkoJsonObject()!
    success = jsonToken.loadFile(path: "qa_data/tokens/etrade.json")
    if success != true {
        print("Failed to load OAuth1 token")
        return
    }

    http.oAuthToken = jsonToken.string(of: "oauth_token")
    http.oAuthTokenSecret = jsonToken.string(of: "oauth_token_secret")

    var sandboxUrl: String? = "https://apisb.etrade.com/v1/accounts/{$accountIdKey}/balance?instType={$instType}&realTimeNAV=true"
    var liveUrl: String? = "https://api.etrade.com/v1/accounts/{$accountIdKey}/balance?instType={$instType}&realTimeNAV=true"

    http.setUrlVar(name: "accountIdKey", value: "6_Dpy0rmuQ9cu9IbTfvF2A")
    http.setUrlVar(name: "instType", value: "BROKERAGE")

    let resp = CkoHttpResponse()!
    success = http.httpNoBody(verb: "GET", url: sandboxUrl, response: resp)
    if success == false {
        print("\(http.lastErrorText!)")
        return
    }

    // Make sure a successful response was received.
    if resp.statusCode.intValue > 200 {
        print("\(resp.statusLine!)")
        print("\(resp.header!)")
        print("\(resp.bodyStr!)")
        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"?>
    // <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>

    let xml = CkoXml()!
    xml.load(xmlData: resp.bodyStr)
    print("\(xml.getXml()!)")

    var accountId: Int
    var accountType: String?
    var optionLevel: String?
    var accountDescription: String?
    var quoteMode: Int
    var dayTraderStatus: String?
    var accountMode: String?
    var fundsForOpenOrdersCash: Int
    var moneyMktBalance: Int
    var cashAvailableForInvestment: Int
    var netCash: String?
    var cashBalance: String?
    var settledCashForInvestment: Int
    var unSettledCashForInvestment: Int
    var fundsWithheldFromPurchasePower: Int
    var fundsWithheldFromWithdrawal: Int
    var marginBuyingPower: Int
    var cashBuyingPower: String?
    var dtMarginBuyingPower: Int
    var dtCashBuyingPower: Int
    var shortAdjustBalance: Int
    var regtEquity: Int
    var regtEquityPercent: Int
    var accountBalance: Int
    var dtCashOpenOrderReserve: Int
    var dtMarginOpenOrderReserve: Int

    accountId = xml.getChildIntValue(tagPath: "accountId").intValue
    accountType = xml.getChildContent(tagPath: "accountType")
    optionLevel = xml.getChildContent(tagPath: "optionLevel")
    accountDescription = xml.getChildContent(tagPath: "accountDescription")
    quoteMode = xml.getChildIntValue(tagPath: "quoteMode").intValue
    dayTraderStatus = xml.getChildContent(tagPath: "dayTraderStatus")
    accountMode = xml.getChildContent(tagPath: "accountMode")
    fundsForOpenOrdersCash = xml.getChildIntValue(tagPath: "Cash|fundsForOpenOrdersCash").intValue
    moneyMktBalance = xml.getChildIntValue(tagPath: "Cash|moneyMktBalance").intValue
    cashAvailableForInvestment = xml.getChildIntValue(tagPath: "Computed|cashAvailableForInvestment").intValue
    netCash = xml.getChildContent(tagPath: "Computed|netCash")
    cashBalance = xml.getChildContent(tagPath: "Computed|cashBalance")
    settledCashForInvestment = xml.getChildIntValue(tagPath: "Computed|settledCashForInvestment").intValue
    unSettledCashForInvestment = xml.getChildIntValue(tagPath: "Computed|unSettledCashForInvestment").intValue
    fundsWithheldFromPurchasePower = xml.getChildIntValue(tagPath: "Computed|fundsWithheldFromPurchasePower").intValue
    fundsWithheldFromWithdrawal = xml.getChildIntValue(tagPath: "Computed|fundsWithheldFromWithdrawal").intValue
    marginBuyingPower = xml.getChildIntValue(tagPath: "Computed|marginBuyingPower").intValue
    cashBuyingPower = xml.getChildContent(tagPath: "Computed|cashBuyingPower")
    dtMarginBuyingPower = xml.getChildIntValue(tagPath: "Computed|dtMarginBuyingPower").intValue
    dtCashBuyingPower = xml.getChildIntValue(tagPath: "Computed|dtCashBuyingPower").intValue
    shortAdjustBalance = xml.getChildIntValue(tagPath: "Computed|shortAdjustBalance").intValue
    regtEquity = xml.getChildIntValue(tagPath: "Computed|regtEquity").intValue
    regtEquityPercent = xml.getChildIntValue(tagPath: "Computed|regtEquityPercent").intValue
    accountBalance = xml.getChildIntValue(tagPath: "Computed|accountBalance").intValue
    dtCashOpenOrderReserve = xml.getChildIntValue(tagPath: "Margin|dtCashOpenOrderReserve").intValue
    dtMarginOpenOrderReserve = xml.getChildIntValue(tagPath: "Margin|dtMarginOpenOrderReserve").intValue

    print("Success.")

}