/// <summary> /// Clears this instance of <see cref="InteractiveBrokersAccountData"/> /// </summary> public void Clear() { AccountProperties.Clear(); CashBalances.Clear(); AccountHoldings.Clear(); FinancialAdvisorConfiguration.Clear(); }
public void TD_getAcctBalancesAndPositions(string _userid, string _password, string _source, string _version, ref List<CashBalances> oCashBalances, ref List<Positions> oPositions) { bool retValue = false; string lcPostUrl = string.Empty; if (this.TD_loginStatus == true) { XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); cpostdata.Append("source=" + Encode_URL(_source)); lcPostUrl = "https://apis.tdameritrade.com/apps/100/BalancesAndPositions?" + cpostdata.ToString(); xmlHttp_.open("POST", lcPostUrl, false, _userid, _password); xmlHttp_.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlHttp_.setRequestHeader("Accept", "Accept image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*"); xmlHttp_.send(null); string xmlData = xmlHttp_.responseText.ToString(); string cResponseHeaders = xmlHttp_.getAllResponseHeaders(); /*/ * Test Code : Use the following line to test the parsing of balances and positions * /*/ // StringReader reader = new StringReader( getTestBalancesAndPositions() ); StringReader reader = new StringReader(xmlData); XmlTextReader xml = new XmlTextReader(reader); // Check for errors. if (null == xmlData || "" == xmlData) { // Throw an exception. throw new Exception("Failed to connect, check username and password?"); } CashBalances _oCashBalances = new CashBalances(); Positions _oPositions = new Positions(); string cParseStage = string.Empty; string name = string.Empty; bool lReadingPositionsElement = false; // Read the Xml. while (xml.Read()) { // Got an element? if (xml.NodeType == XmlNodeType.Element) { // Get this node. name = xml.Name; if (name.ToLower().ToString().CompareTo("balance") == 0) { cParseStage = "balances"; _oCashBalances = new CashBalances(); } if (name.ToLower().ToString().CompareTo("account-value") == 0) { cParseStage = "account-value"; } if (name.ToLower().ToString().CompareTo("position") == 0 && lReadingPositionsElement == false) { cParseStage = "positions"; lReadingPositionsElement = true; _oPositions = new Positions(); } // Get Round Trips if (name.ToLower().ToString().CompareTo("round-trips") == 0) // && cParseStage.CompareTo("balances") == 0) { xml.Read(); _oCashBalances.DayTradingRoundTrips = xml.Value; } // Get Stock Buying Power if (name.ToLower().ToString().CompareTo("stock-buying-power") == 0)// && cParseStage.CompareTo("balances") == 0) { xml.Read(); _oCashBalances.StockBuyingPower = xml.Value; } // Get DayTrading Buying Power if (name.ToLower().ToString().CompareTo("day-trading-buying-power") == 0) //&& cParseStage.CompareTo("balances") == 0) { xml.Read(); _oCashBalances.DayTradingBuyingPower = xml.Value; } // Get Available Funds For Trading if (name.ToLower().ToString().CompareTo("available-funds-for-trading") == 0) // && cParseStage.CompareTo("balances") == 0) { xml.Read(); _oCashBalances.AvailableFundsForTrading = xml.Value; } // Get Initial Cash Balance if (name.ToLower().ToString().CompareTo("initial") == 0 && cParseStage.CompareTo("account-value") == 0) { xml.Read(); _oCashBalances.InitialCashBalance = xml.Value; } // Get Current Cash Balance if (name.ToLower().ToString().CompareTo("current") == 0 && cParseStage.CompareTo("account-value") == 0) { xml.Read(); _oCashBalances.CurrentCashBalance = xml.Value; } // Get Change In Cash Balance if (name.ToLower().ToString().CompareTo("change") == 0 && cParseStage.CompareTo("account-value") == 0) { xml.Read(); _oCashBalances.ChangeInCashBalance = xml.Value; } // Get Positions - Symbol if (name.ToLower().ToString().CompareTo("symbol") == 0 && lReadingPositionsElement == true) { xml.Read(); _oPositions.StockSymbol = xml.Value; } // Get Positions - Quantity if (name.ToLower().ToString().CompareTo("quantity") == 0 && lReadingPositionsElement == true) { xml.Read(); _oPositions.Quantity = xml.Value; } // Get Positions - Description if (name.ToLower().ToString().CompareTo("description") == 0 && lReadingPositionsElement == true) { xml.Read(); _oPositions.description = xml.Value; } // Get Positions - Account Type if (name.ToLower().ToString().CompareTo("account-type") == 0 && lReadingPositionsElement == true) { xml.Read(); _oPositions.AccountType = xml.Value; } // Get Positions - Asset Type if (name.ToLower().ToString().CompareTo("asset-type") == 0 && lReadingPositionsElement == true) { xml.Read(); _oPositions.AssetType = xml.Value; } // Get Positions - Closing Price if (name.ToLower().ToString().CompareTo("close-price") == 0 && lReadingPositionsElement == true) { xml.Read(); _oPositions.ClosePrice = xml.Value; } // Get Positions - Position Type if (name.ToLower().ToString().CompareTo("position-type") == 0 && lReadingPositionsElement == true) { xml.Read(); _oPositions.PositionType = xml.Value; } // Get Positions - Average Price if (name.ToLower().ToString().CompareTo("average-price") == 0 && lReadingPositionsElement == true) { xml.Read(); _oPositions.AveragePric = xml.Value; } // Get Positions - Current Value if (name.ToLower().ToString().CompareTo("current-value") == 0 && lReadingPositionsElement == true) { xml.Read(); _oPositions.CurrentValue = xml.Value; } // Get Error Message if (name.ToLower().ToString().CompareTo(_errormsg_tag.ToLower()) == 0) { xml.Read(); _errormsg = xml.Value; } } else { if (xml.NodeType == XmlNodeType.EndElement) { if (xml.Name.ToString().ToLower().CompareTo("balance") == 0) { oCashBalances.Add(_oCashBalances); } if (xml.Name.ToString().ToLower().CompareTo("position") == 0) { lReadingPositionsElement = false; oPositions.Add(_oPositions); } if (cParseStage.CompareTo(xml.Name.ToString().ToLower()) == 0) { cParseStage = string.Empty; } } } } retValue = (_errormsg.Length == 0 ? true : false); } else retValue = false; }