// send an Ameritrde binary request private byte[] SendAmeritradeBinaryRequest(string Url) { byte[] xmlData = null; string lcPostUrl = string.Empty; if (LoginStatus) { XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); lcPostUrl = Url; xmlHttp_.open("POST", lcPostUrl, false, Username, 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); xmlData = (byte[])xmlHttp_.responseBody; // Check for errors. if (null == xmlData || xmlData.Length == 0) { // Throw an exception. throw new Exception("Failed to connect, check username and password?"); } string cResponseHeaders = xmlHttp_.getAllResponseHeaders(); } return(xmlData); }
private bool KeepAlive() { bool retValue = false; if (LoginStatus) { XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); string lcPostUrl = string.Empty; cpostdata.Append("source=" + Encode_URL(SourceId)); lcPostUrl = "https://apis.tdameritrade.com/apps/KeepAlive?" + cpostdata.ToString(); xmlHttp_.open("POST", lcPostUrl, false, Username, 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); retValue = true; } else { retValue = false; } return(retValue); }
private void TestService() { bool success = false; XMLHTTP http = new XMLHTTP(); try { logger.Info("测试接口是否联通?"); http.open("GET", _serviceUrl, false, null, null); http.send(_serviceUrl); if (http.status == 200) { logger.Info("接口正常!"); success = true; this.PrintTimer.Interval = _interval; this.PrintTimer.Enabled = true; this.PrintTimer.Elapsed += new System.Timers.ElapsedEventHandler(this.Print_Elapse); } else { logger.Error("数据接口不可用!"); } } catch { logger.Error("数据接口不可用!"); } finally { if (!success) { this.Stop(); } } }
private static string GetHTML(string url) { XMLHTTP x = new XMLHTTP(); x.open("GET", url, false); x.send(); return(x.responseText); }
//procedure MSXMLButtonOnClick(Sender: TObject); //var // XMLHTTP, XMLDoc, NewNode, RootNode: Variant; // Path: String; //begin // if MsgBox('Setup will now use MSXML to download XML file ''' + XMLURL + ''' and save it to disk.'#13#13'Setup will then load, modify and save this XML file. Do you want to continue?', mbInformation, mb_YesNo) = idNo then // Exit; // { Create the main MSXML COM Automation object } // try // XMLHTTP := CreateOleObject('MSXML2.ServerXMLHTTP'); // except // RaiseException('Please install MSXML first.'#13#13'(Error ''' + GetExceptionMessage + ''' occurred)'); // end; // { Download the XML file } // XMLHTTP.Open('GET', XMLURL, False); // XMLHTTP.Send(); // Path := ExpandConstant('{src}\'); // XMLHTTP.responseXML.Save(Path + XMLFileName); // MsgBox('Downloaded the XML file and saved it as ''' + XMLFileName + '''.', mbInformation, mb_Ok); // { Load the XML File } // XMLDoc := CreateOleObject('MSXML2.DOMDocument'); // XMLDoc.async := False; // XMLDoc.resolveExternals := False; // XMLDoc.load(Path + XMLFileName); // if XMLDoc.parseError.errorCode<> 0 then // RaiseException('Error on line ' + IntToStr(XMLDoc.parseError.line) + ', position ' + IntToStr(XMLDoc.parseError.linepos) + ': ' + XMLDoc.parseError.reason); // MsgBox('Loaded the XML file.', mbInformation, mb_Ok); // { Modify the XML document } // NewNode := XMLDoc.createElement('isxdemo'); // RootNode := XMLDoc.documentElement; // RootNode.appendChild(NewNode); // RootNode.lastChild.text := 'Hello, World'; // { Save the XML document } // XMLDoc.Save(Path + XMLFileName2); // MsgBox('Saved the modified XML as ''' + XMLFileName2 + '''.', mbInformation, mb_Ok); //end; private void MSXMLButtonOnClick(TObject Sender) { if (MsgBox("Setup will now use MSXML to download XML file '" + XMLURL + "' and save it to disk.\r\rSetup will then load, modify and save this XML file. Do you want to continue?", TMsgBoxType.Information, MB.YesNo) == MsgBoxResult.No) { return; } dynamic XMLHTTP; // Create the main MSXML COM Automation object try { XMLHTTP = CreateOleObject("MSXML2.ServerXMLHTTP"); } catch { throw new Exception("Please install MSXML first.\r\r(Error '" + GetExceptionMessage() + "' occurred)"); } // Download the XML file XMLHTTP.Open("GET", XMLURL, false); XMLHTTP.Send(); var Path = ExpandConstant("{src}\\"); XMLHTTP.responseXML.Save(Path + XMLFileName); MsgBox("Downloaded the XML file and saved it as '" + XMLFileName + "'.", TMsgBoxType.Information, MB.Ok); // Load the XML File var XMLDoc = CreateOleObject("MSXML2.DOMDocument"); XMLDoc.async = false; XMLDoc.resolveExternals = false; XMLDoc.load(Path + XMLFileName); if (XMLDoc.parseError.errorCode != 0) { throw new Exception("Error on line " + IntToStr(XMLDoc.parseError.line) + ", position " + IntToStr(XMLDoc.parseError.linepos) + ": " + XMLDoc.parseError.reason); } MsgBox("Loaded the XML file.", TMsgBoxType.Information, MB.Ok); // Modify the XML document var NewNode = XMLDoc.createElement("isxdemo"); var RootNode = XMLDoc.documentElement; RootNode.appendChild(NewNode); RootNode.lastChild.text = "Hello, World"; // Save the XML document XMLDoc.Save(Path + XMLFileName2); MsgBox("Saved the modified XML as '" + XMLFileName2 + "'.", TMsgBoxType.Information, MB.Ok); }
private static string GetHTML(string url) { Log("Connect:" + url, ConsoleColor.Yellow); XMLHTTP x = new XMLHTTP(); x.open("GET", url, false); x.send(); Log("Web data received !", ConsoleColor.Yellow); Byte[] b = (Byte[])x.responseBody; string s = System.Text.ASCIIEncoding.UTF8.GetString(b, 0, b.Length); return(s); }
private bool Logout() { bool retValue = false; if (LoginStatus) { XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); string lcPostUrl = string.Empty; cpostdata.Append("source=" + Encode_URL(SourceId)); lcPostUrl = "https://apis.tdameritrade.com/apps/100/LogOut?" + cpostdata.ToString(); xmlHttp_.open("POST", lcPostUrl, false, Username, 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); retValue = true; } else { retValue = false; } // reset status this._result = string.Empty; this._sessionid = string.Empty; this._userid = string.Empty; this._cdi = string.Empty; this._timeout = string.Empty; this._associated_acct = string.Empty; this._accountid = string.Empty; this._description = string.Empty; this._company = string.Empty; this._segment = string.Empty; this._margintrading = string.Empty; LoginStatus = false; return(retValue); }
public static string GetRemoteAdress() { if (AppConfig.Settings("RemoteAddress_Spare") == null) { return(AppConfig.Settings("RemoteAddress")); } XMLHTTP http = new XMLHTTP(); http.open("GET", AppConfig.Settings("RemoteAddress"), false, null, null); http.send(null); int status = http.status; if (status == 200) { return(AppConfig.Settings("RemoteAddress")); } else { return(AppConfig.Settings("RemoteAddress_Spare")); } }
/// <summary> /// 向富士康上传接口传送数据 /// </summary> /// <param name="url"></param> /// <param name="plantName"></param> /// <param name="unitName"></param> /// <param name="deviceAddress"></param> /// <param name="deviceTypeCode"></param> /// <param name="dataCollectTime"></param> /// <param name="realDataValueStr"></param> private void callwebservice(string url, string plantName, string unitName, string deviceAddress, int deviceTypeCode, string dataCollectTime, string realDataValueStr) { //Web服务的地址 //拼接数据 string data; data = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; data = data + "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">"; data = data + "<soap12:Body>"; data = data + "<UpLoadEQValue xmlns=\"http://tempuri.org/\">"; data = data + "<PlantID>" + plantName + "</PlantID>"; data = data + "<BuildingID>" + unitName + "</BuildingID>"; data = data + "<EQID>" + unitName + "-" + deviceTypeCode + "-" + StringUtil.getstr(deviceAddress, 3) + "</EQID>"; data = data + "<EqType>" + deviceTypeCode + "</EqType>"; data = data + "<DataCollectTime>" + dataCollectTime + "</DataCollectTime>"; data = data + "<EQValues>" + realDataValueStr + "</EQValues>"; data = data + "</UpLoadEQValue>"; data = data + "</soap12:Body>"; data = data + "</soap12:Envelope>"; //创建异步对象(XMLHTTP对象在MSXML2下) String res = ""; XMLHTTP xmlhttp = new XMLHTTP(); xmlhttp.open("POST", url, false, null, null); xmlhttp.setRequestHeader("Content-Type", "application/soap+xml"); xmlhttp.send(data); res = System.Text.Encoding.UTF8.GetString((byte[])xmlhttp.responseBody); FileLogUtil.info("data" + data); FileLogUtil.info("res" + res); Console.WriteLine("data" + data); Console.WriteLine("res" + res); }
public static Boolean urlIsReach(String url) { if (url == null) { return(false); } try { XMLHTTP http = new XMLHTTP(); try { http.open("GET", url, false, null, null); http.send(url); int status = http.status; if (status == 200) { return(true); } else { Program.WriteLog("不可用status:" + status.ToString()); return(false); } } catch { Console.WriteLine("不可用"); } } catch (Exception e) { Program.WriteLog("异常" + e.ToString()); return(false); } return(false); }
// send an Ameritrde generic request private XmlDocument SendAmeritradeRequest(string Url) { XmlDocument XmlDoc = null; string lcPostUrl = string.Empty; if (LoginStatus) { XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); lcPostUrl = Url; xmlHttp_.open("POST", lcPostUrl, false, Username, 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(); // Check for errors. if (null == xmlData || "" == xmlData) { // Throw an exception. throw new Exception("Failed to connect, check username and password?"); } string cResponseHeaders = xmlHttp_.getAllResponseHeaders(); StringReader reader = new StringReader(xmlData); XmlTextReader xml = new XmlTextReader(reader); XmlDoc = new XmlDocument(); XmlDoc.LoadXml(xmlData); } return(XmlDoc); }
//private XMLHTTP req; public XmlHttpClient() { req = new XMLHTTP(); }
public void TD_geOrderStatusAndHistory(string _userid, string _password, string _source, string _version, string orderList, orderHistoryType OrderyHistoryType, ref List<ATradeArgument.tradeReplyDetails> oReplyDetails) { if (this.TD_loginStatus == true) { XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); string lcPostUrl = string.Empty; cpostdata.Append("source=" + Encode_URL(_source)); switch (OrderyHistoryType) { case orderHistoryType.ALL_ORDERS: cpostdata.Append("&type=" + Encode_URL("all")); cpostdata.Append("&days=" + Encode_URL("0")); lcPostUrl = "https://apis.tdameritrade.com/apps/100/OrderStatus?" + cpostdata.ToString(); break; case orderHistoryType.OPEN_ORDERS: cpostdata.Append("orderid=" + Encode_URL(orderList)); cpostdata.Append("type=" + Encode_URL("open")); cpostdata.Append("days=" + Encode_URL("0")); lcPostUrl = "https://apis.tdameritrade.com/apps/100/OrderStatus?source?" + cpostdata.ToString(); break; case orderHistoryType.PENDING_ORDERS: cpostdata.Append("orderid=" + Encode_URL(orderList)); cpostdata.Append("type=" + Encode_URL("pending")); cpostdata.Append("days=" + Encode_URL("0")); lcPostUrl = "https://apis.tdameritrade.com/apps/100/OrderStatus?source?" + cpostdata.ToString(); break; case orderHistoryType.FILLED: cpostdata.Append("orderid=" + Encode_URL(orderList)); cpostdata.Append("type=" + Encode_URL("filled")); cpostdata.Append("days=" + Encode_URL("0")); lcPostUrl = "https://apis.tdameritrade.com/apps/100/OrderStatus?source?" + cpostdata.ToString(); break; case orderHistoryType.CANCELLED_ORDERS: cpostdata.Append("orderid=" + Encode_URL(orderList)); cpostdata.Append("type=" + Encode_URL("canceled")); cpostdata.Append("days=" + Encode_URL("0")); lcPostUrl = "https://apis.tdameritrade.com/apps/100/OrderStatus?source?" + cpostdata.ToString(); break; } 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(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?"); } string[,] oFillDetails = new string[1, 2]; List<string[,]> oFillDetailsList = new List<string[,]>(); ATradeArgument.tradeReplyDetails oTradeHistoryDetails = new ATradeArgument.tradeReplyDetails(); string name = string.Empty; while (xml.Read()) { // Got an element? if (xml.NodeType == XmlNodeType.Element) { // Get this node. name = xml.Name; // Initialize the start of the collection if (name.ToLower().ToString().CompareTo("orderstatus") == 0) { oTradeHistoryDetails = new ATradeArgument.tradeReplyDetails(); oFillDetailsList = new List<string[,]>(); } // Get order-number if (name.ToLower().ToString().CompareTo("order-number") == 0) { xml.Read(); oTradeHistoryDetails.OrderNumber = xml.Value; } // Get cancelable if (name.ToLower().ToString().CompareTo("cancelable") == 0) { xml.Read(); oTradeHistoryDetails.lIsCancelable = Convert.ToBoolean(xml.Value); } // Get editable if (name.ToLower().ToString().CompareTo("editable") == 0) { xml.Read(); oTradeHistoryDetails.lIsEditable = Convert.ToBoolean(xml.Value); } // Get enhanced-order if (name.ToLower().ToString().CompareTo("enhanced-order") == 0) { xml.Read(); oTradeHistoryDetails.lIsEnhancedOrder = Convert.ToBoolean(xml.Value); } // Get EnhancedOrderType if (name.ToLower().ToString().CompareTo("enhanced-type") == 0) { xml.Read(); oTradeHistoryDetails.EnhancedOrderType = xml.Value; } // Get display-status if (name.ToLower().ToString().CompareTo("display-status") == 0) { xml.Read(); oTradeHistoryDetails.DisplayStatus = xml.Value; } // Get order-routing-status if (name.ToLower().ToString().CompareTo("order-routing-status") == 0) { xml.Read(); oTradeHistoryDetails.OrderRoutingStatus = xml.Value; } // Get order-received-date-time if (name.ToLower().ToString().CompareTo("order-received-date-time") == 0) { xml.Read(); oTradeHistoryDetails.OrderReceivedTime = xml.Value; } // Get reported-time if (name.ToLower().ToString().CompareTo("reported-time") == 0) { xml.Read(); oTradeHistoryDetails.OrderReportedTime = xml.Value; } // Get remaining-quantity if (name.ToLower().ToString().CompareTo("remaining-quantity") == 0) { xml.Read(); oTradeHistoryDetails.OrderSharesRemianing = xml.Value; } // Get symbol if (name.ToLower().ToString().CompareTo("symbol") == 0) { xml.Read(); oTradeHistoryDetails.cStockSymbol = xml.Value; } // Get asset-type if (name.ToLower().ToString().CompareTo("asset-type") == 0) { xml.Read(); if (xml.Value.ToUpper().CompareTo("E") == 0) oTradeHistoryDetails.AssetType = "Equity"; if (xml.Value.ToUpper().CompareTo("F") == 0) oTradeHistoryDetails.AssetType = "Mutual Fund"; if (xml.Value.ToUpper().CompareTo("O") == 0) oTradeHistoryDetails.AssetType = "Option"; if (xml.Value.ToUpper().CompareTo("B") == 0) oTradeHistoryDetails.AssetType = "Bond"; } // Get quantity if (name.ToLower().ToString().CompareTo("quantity") == 0) { xml.Read(); oTradeHistoryDetails.OrderShares = xml.Value; } // Get order-id if (name.ToLower().ToString().CompareTo("order-id") == 0) { xml.Read(); oTradeHistoryDetails.OrderID = xml.Value; } // Get action if (name.ToLower().ToString().CompareTo("action") == 0) { xml.Read(); if (xml.Value.ToUpper().CompareTo("B") == 0) oTradeHistoryDetails.Action = "Buy Long"; if (xml.Value.ToUpper().CompareTo("S") == 0) oTradeHistoryDetails.Action = "Sell"; if (xml.Value.ToUpper().CompareTo("SS") == 0) oTradeHistoryDetails.Action = "Sell Short"; if (xml.Value.ToUpper().CompareTo("BC") == 0) oTradeHistoryDetails.Action = "Buy to Cover"; } // Get trade-type if (name.ToLower().ToString().CompareTo("trade-type") == 0) { xml.Read(); if (xml.Value.CompareTo("1") == 0) oTradeHistoryDetails.TradeType = "Normal Market"; if (xml.Value.CompareTo("2") == 0) oTradeHistoryDetails.TradeType = "External Hour Market"; if (xml.Value.CompareTo("4") == 0) oTradeHistoryDetails.TradeType = "German Market"; if (xml.Value.CompareTo("8") == 0) oTradeHistoryDetails.TradeType = "AM Session"; if (xml.Value.CompareTo("16") == 0) oTradeHistoryDetails.TradeType = "Seamless Session"; } // Get order-type if (name.ToLower().ToString().CompareTo("order-type") == 0) { xml.Read(); if (xml.Value.ToUpper().CompareTo("M") == 0) oTradeHistoryDetails.OrderType = "Market"; if (xml.Value.ToUpper().CompareTo("L") == 0) oTradeHistoryDetails.OrderType = "Limit"; if (xml.Value.ToUpper().CompareTo("S") == 0) oTradeHistoryDetails.OrderType = "Stop"; if (xml.Value.ToUpper().CompareTo("X") == 0) oTradeHistoryDetails.OrderType = "Stop Limit"; if (xml.Value.ToUpper().CompareTo("D") == 0) oTradeHistoryDetails.OrderType = "Debit"; if (xml.Value.ToUpper().CompareTo("C") == 0) oTradeHistoryDetails.OrderType = "Credit"; if (xml.Value.ToUpper().CompareTo("T") == 0) oTradeHistoryDetails.OrderType = "Trailing Stop"; if (xml.Value.ToUpper().CompareTo("EX") == 0) oTradeHistoryDetails.OrderType = "Exercise Option"; } // Get Fill(s) - Quantity if (name.ToLower().ToString().CompareTo("fill-quantity") == 0) { xml.Read(); oFillDetails = new string[1, 2]; oFillDetails[0, 0] = xml.Value; } // Get Fill(s) - Price if (name.ToLower().ToString().CompareTo("fill-price") == 0) { xml.Read(); oFillDetails[0, 1] = xml.Value; oFillDetailsList.Add(oFillDetails); } // Get limit-price if (name.ToLower().ToString().CompareTo("limit-price") == 0) { xml.Read(); oTradeHistoryDetails.OrderPrice = xml.Value; } } else { if (xml.NodeType == XmlNodeType.EndElement) { if (xml.Name.ToString().ToLower().CompareTo("orderstatus") == 0) { Decimal nTotalDollarsExecuted = 0.00M; Int32 nTotalSharesExecuted = 0; if (oFillDetailsList.Count > 0) { foreach (string[,] oDetail in oFillDetailsList) { nTotalSharesExecuted = nTotalSharesExecuted + Convert.ToInt32(Decimal.Round(Convert.ToDecimal(oDetail[0, 0]), 0)); nTotalDollarsExecuted = nTotalDollarsExecuted + Convert.ToDecimal(Decimal.Round(Convert.ToDecimal(oDetail[0, 0]), 0) * Convert.ToDecimal(oDetail[0, 1])); } oTradeHistoryDetails.OrderPriceFilled = Convert.ToString(Decimal.Round(nTotalDollarsExecuted / nTotalSharesExecuted, 2)); oTradeHistoryDetails.OrderQuantityFilled = Convert.ToString(nTotalSharesExecuted); } else { oTradeHistoryDetails.OrderPriceFilled = "0.00"; oTradeHistoryDetails.OrderQuantityFilled = "0"; } oReplyDetails.Add(oTradeHistoryDetails); } } } } } }
public L1quotes TD_GetLevel1Quote2(string symbol, int nTimeOut) { byte[] bReplyValue = null; L1quotes oL1Quotes = new L1quotes(); Object oLockTD_GetLevel1Quote2 = new object(); string _streamerCommand = "S=QUOTE" + "&C=GET&P=" + symbol + "&T=0+1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40"; try { if (this.TD_loginStatus == true) { bReplyValue = new byte[65535]; XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); string lcPostUrl = string.Empty; cpostdata.Append("!U=" + _accountid); cpostdata.Append("&W=" + _token); cpostdata.Append("&A=userid=" + _accountid); cpostdata.Append("&token=" + _token); cpostdata.Append("&company=" + _company); cpostdata.Append("&segment=" + _segment); cpostdata.Append("&cddomain=" + _cdDomain); cpostdata.Append("&usergroup=" + _usergroup); cpostdata.Append("&accesslevel=" + _accesslevel); cpostdata.Append("&authorized=" + _authorized); cpostdata.Append("&acl=" + _acl); cpostdata.Append("×tamp=" + _timestamp); cpostdata.Append("&appid=" + _appid); cpostdata.Append("|" + _streamerCommand); string encodedString = Encode_URL(cpostdata.ToString()); cpostdata = new StringBuilder(); cpostdata.Append(encodedString); lcPostUrl = "http://" + this._streamerurl + "/" + cpostdata; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(lcPostUrl); req.ContentType = "application/x-www-form-urlencoded"; req.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, */*"; req.Headers.Add("Accept-Encoding: deflate, gzip"); req.Method = "GET"; req.Timeout = (nTimeOut == 0 ? 5000 : nTimeOut); req.ReadWriteTimeout = (nTimeOut == 0 ? 5000 : nTimeOut); req.ServicePoint.ConnectionLimit = 50; HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); // Retrieve response stream Stream respStream = resp.GetResponseStream(); byte[] chunk = new byte[65535]; byte[] ChartByteArray = new byte[65535]; int bytesRead = respStream.Read(ChartByteArray, 0, ChartByteArray.Length); string compressedText = Convert.ToBase64String(ChartByteArray); byte[] gzBuffer = Convert.FromBase64String(compressedText); respStream.Flush(); resp.Close(); respStream.Close(); MemoryStream ms = new MemoryStream(); int nFieldNDX = 0; int nStartPos = 13; int msgLength = BitConverter.ToInt32(gzBuffer, 0); ms.Write(gzBuffer, 64, gzBuffer.Length - 64); byte[] nMsg = new byte[sizeof(Int32)]; ms.Close(); /*/ * S = Streaming * N = Snapshot /*/ nMsg[0] = gzBuffer[0]; string cRequestType = System.Text.Encoding.ASCII.GetString(nMsg, 0, 1); nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[2]; nMsg[1] = gzBuffer[1]; int nNextFieldLength = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[5]; nMsg[1] = gzBuffer[4]; nMsg[2] = gzBuffer[3]; long nNextField = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[7]; nMsg[1] = gzBuffer[6]; int nMessageLength = BitConverter.ToInt32(nMsg, 0); /*/ * 1 = L1 Quote /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[9]; nMsg[1] = gzBuffer[8]; int nQuoteType = BitConverter.ToInt32(nMsg, 0); /*/ * Stock Symbol : Field 0 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[10]; int nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[12]; nMsg[1] = gzBuffer[11]; int nSymbolLength = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[nSymbolLength]; Array.Copy(gzBuffer, nStartPos, nMsg, 0, nSymbolLength); oL1Quotes.stock = TD_GetResponseValue(0, nMsg, 0, nSymbolLength); /*/ * Bid Price : Field 1 /*/ nFieldNDX = nStartPos + nSymbolLength; nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.bid = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * Ask Price : Field 2 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.ask = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * Last Price : Field 3 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.last = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * Bid Size : Field 4 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.bid_size = TD_GetResponseValue(100, nMsg, nStartPos, 0); /*/ * Ask Size : Field 5 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.ask_size = TD_GetResponseValue(100, nMsg, nStartPos, 0); /*/ * Bid ID : Field 6 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(short)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.bid_id = TD_GetResponseValue(sizeof(short), nMsg, nStartPos, 0); /*/ * Ask ID : Field 7 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(short)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.ask_id = TD_GetResponseValue(sizeof(short), nMsg, nStartPos, 0); /*/ * Volume : Field 8 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(long)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; nMsg[4] = gzBuffer[nFieldNDX++]; nMsg[5] = gzBuffer[nFieldNDX++]; nMsg[6] = gzBuffer[nFieldNDX++]; nMsg[7] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.volume = TD_GetResponseValue(sizeof(long), nMsg, nStartPos, 0); /*/ * Last Size : Field 9 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.lastsize = TD_GetResponseValue(100, nMsg, nStartPos, 0); /*/ * Trade Time : Field 10 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.tradetime = TD_GetResponseValue(100, nMsg, nStartPos, 0); /*/ * Quote Time : Field 11 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.quotetime = TD_GetResponseValue(100, nMsg, nStartPos, 0); /*/ * High : Field 12 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.high = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * Low : Field 13 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.low = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * Tick : Field 14 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(char)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); nMsg = new byte[sizeof(char)]; Array.Copy(gzBuffer, nStartPos, nMsg, 0, sizeof(char)); oL1Quotes.tick = TD_GetResponseValue(0, nMsg, 0, sizeof(char)); /*/ * Close : Field 15 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.close = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * Exchange : Field 16 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(char)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); nMsg = new byte[sizeof(char)]; Array.Copy(gzBuffer, nStartPos, nMsg, 0, sizeof(char)); oL1Quotes.exchange = TD_GetResponseValue(0, nMsg, 0, sizeof(char)); /*/ * Marginable : Field 17 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(bool)]; nMsg[0] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.marginable = TD_GetResponseValue(sizeof(bool), nMsg, 0, sizeof(char)); /*/ * Shortable : Field 18 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(bool)]; nMsg[0] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.shortable = TD_GetResponseValue(sizeof(bool), nMsg, 0, sizeof(char)); /*/ * ISLAND BID : Field 19 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.islandbid = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * ISLAND ASK : Field 20 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.islandask = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * ISLAND ASK : Field 21 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(long)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; nMsg[4] = gzBuffer[nFieldNDX++]; nMsg[5] = gzBuffer[nFieldNDX++]; nMsg[6] = gzBuffer[nFieldNDX++]; nMsg[7] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.islandvolume = TD_GetResponseValue(sizeof(long), nMsg, nStartPos, 0); /*/ * QUOTE DATE : Field 22 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.quotedate = TD_GetResponseValue(100, nMsg, nStartPos, 0); /*/ * QUOTE DATE : Field 23 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.tradedate = TD_GetResponseValue(100, nMsg, nStartPos, 0); /*/ * Volatility : Field 24 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.volatility = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * Description : Field 25 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(short)]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[0] = gzBuffer[nFieldNDX++]; nStartPos = nFieldNDX; int nStringlLength = BitConverter.ToInt16(nMsg, 0); nFieldNDX = nFieldNDX + nStringlLength; nMsg = new byte[nStringlLength]; Array.Copy(gzBuffer, nStartPos, nMsg, 0, nStringlLength); oL1Quotes.description = TD_GetResponseValue(0, nMsg, 0, nStringlLength); /*/ * Trade ID : Field 26 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(char)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); nMsg = new byte[sizeof(char)]; Array.Copy(gzBuffer, nStartPos, nMsg, 0, sizeof(char)); oL1Quotes.trade_id = TD_GetResponseValue(0, nMsg, 0, sizeof(char)); /*/ * Digits : Field 27 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.digits = TD_GetResponseValue(100, nMsg, nStartPos, 0); /*/ * Open : Field 28 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.open = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * Change : Field 29 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.change = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * 52-Week High : Field 30 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.week_high_52 = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * 52-Week Low : Field 31 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.week_low_52 = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * PE-Ratio : Field 32 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.pe_ratio = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * Dividend Amount : Field 33 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.dividend_amt = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * Dividend Yield : Field 34 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.dividend_yield = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * ISLAND BID SIZE : Field 35 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.island_bid_size = TD_GetResponseValue(100, nMsg, nStartPos, 0); /*/ * ISLAND ASK SIZE : Field 36 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.island_ask_size = TD_GetResponseValue(100, nMsg, nStartPos, 0); /*/ * NAV : Field 37 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.nav = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * FUND : Field 38 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nStartPos = nFieldNDX; nMsg = new byte[sizeof(float)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); oL1Quotes.fund = TD_GetResponseValue(sizeof(float), nMsg, nStartPos, 0); /*/ * EXCHANGE NAME : Field 39 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(short)]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[0] = gzBuffer[nFieldNDX++]; nStartPos = nFieldNDX; nStringlLength = BitConverter.ToInt16(nMsg, 0); nFieldNDX = nFieldNDX + nStringlLength; nMsg = new byte[nStringlLength]; Array.Copy(gzBuffer, nStartPos, nMsg, 0, nStringlLength); oL1Quotes.exchange_name = TD_GetResponseValue(0, nMsg, 0, nStringlLength); /*/ * DIVIDEND DATE : Field 40 /*/ nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nFieldNumber = BitConverter.ToInt32(nMsg, 0); nMsg = new byte[sizeof(short)]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[0] = gzBuffer[nFieldNDX++]; nStartPos = nFieldNDX; nStringlLength = BitConverter.ToInt16(nMsg, 0); nFieldNDX = nFieldNDX + nStringlLength; nMsg = new byte[nStringlLength]; Array.Copy(gzBuffer, nStartPos, nMsg, 0, nStringlLength); oL1Quotes.dividend_date = TD_GetResponseValue(0, nMsg, 0, nStringlLength); GC.Collect(); } } catch (Exception exc) { } return oL1Quotes; }
public void TD_RequestAsyncLevel2Streaming(string symbol, Level2DataSource Level2DataSourceType, Form oForm) { /*/ * Old code used for requesting NON-TotalView based on compressed data. /*/ //string _streamerCommand = "S=" + this.getLevel2SourceName(Level2DataSourceType) + "&C=SUBS&P=" + symbol + "&T=0+1"; /*/ * New code used for requesting TotalView based on uncompressed data. /*/ string _streamerCommand = "S=TOTAL_VIEW&C=SUBS&P=" + symbol + ">L2&T=0+1+2+3"; if (this.TD_loginStatus == true) { XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); string lcPostUrl = string.Empty; cpostdata.Append("!U=" + _accountid); cpostdata.Append("&W=" + _token); cpostdata.Append("&A=userid=" + _accountid); cpostdata.Append("&token=" + _token); cpostdata.Append("&company=" + _company); cpostdata.Append("&segment=" + _segment); cpostdata.Append("&cddomain=" + _cdDomain); cpostdata.Append("&usergroup=" + _usergroup); cpostdata.Append("&accesslevel=" + _accesslevel); cpostdata.Append("&authorized=" + _authorized); cpostdata.Append("&acl=" + _acl); cpostdata.Append("×tamp=" + _timestamp); cpostdata.Append("&appid=" + _appid); cpostdata.Append("|" + _streamerCommand); string encodedString = Encode_URL(cpostdata.ToString()); cpostdata = new StringBuilder(); cpostdata.Append(encodedString); lcPostUrl = "http://" + this._streamerurl + "/" + cpostdata; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(lcPostUrl); req.ContentType = "application/x-www-form-urlencoded"; req.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, */*"; req.Method = "GET"; req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; req.Timeout = 60000; req.ServicePoint.ConnectionLimit = 50; //// Add the request into the state so it can be passed around this.rs_LevelTwoStreaming = new RequestState(); //this.rs_LevelTwoStreaming.TickWithArgs += new AmeritradeBrokerAPI.EventHandlerWithArgs(((Form1)oForm).processEvent); this.rs_LevelTwoStreaming.oParentForm = oForm; this.rs_LevelTwoStreaming.lNewStockSymbol = false; this.rs_LevelTwoStreaming.oParent = this; this.rs_LevelTwoStreaming.Level2DataSourceType = Level2DataSourceType; this.rs_LevelTwoStreaming.stockSymbol = symbol; this.rs_LevelTwoStreaming.ServiceName = Level2DataSourceType.ToString(); this.rs_LevelTwoStreaming.Request = req; this.rs_LevelTwoStreaming.FunctionType = RequestState.AsyncType.LevelTwoStreaming; // Issue the async request IAsyncResult r = (IAsyncResult)req.BeginGetResponse(new AsyncCallback(RespCallback), this.rs_LevelTwoStreaming); } }
public void TD_RequestAsyncLevel1QuoteStreaming(string symbol, string ServiceName, Form oForm) { string _streamerCommand = "S=QUOTE" + "&C=SUBS&P=" + symbol + "&T=0+1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40"; if (this.TD_loginStatus == true) { XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); string lcPostUrl = string.Empty; cpostdata.Append("!U=" + _accountid); cpostdata.Append("&W=" + _token); cpostdata.Append("&A=userid=" + _accountid); cpostdata.Append("&token=" + _token); cpostdata.Append("&company=" + _company); cpostdata.Append("&segment=" + _segment); cpostdata.Append("&cddomain=" + _cdDomain); cpostdata.Append("&usergroup=" + _usergroup); cpostdata.Append("&accesslevel=" + _accesslevel); cpostdata.Append("&authorized=" + _authorized); cpostdata.Append("&acl=" + _acl); cpostdata.Append("×tamp=" + _timestamp); cpostdata.Append("&appid=" + _appid); cpostdata.Append("|" + _streamerCommand); string encodedString = Encode_URL(cpostdata.ToString()); cpostdata = new StringBuilder(); cpostdata.Append(encodedString); lcPostUrl = "http://" + this._streamerurl + "/" + cpostdata; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(lcPostUrl); req.ContentType = "application/x-www-form-urlencoded"; req.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, */*"; req.Method = "GET"; req.MaximumResponseHeadersLength = 650000; req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; req.Timeout = 60000; req.ServicePoint.ConnectionLimit = 50; //// Add the request into the state so it can be passed around //this.rs_LevelOneStreaming = new RequestState(); //this.rs_LevelOneStreaming.TickWithArgs += new AmeritradeBrokerAPI.EventHandlerWithArgs(((TDServerMain)oForm).processEvent); this.rs_LevelOneStreaming.oParentForm = oForm; this.rs_LevelOneStreaming.lNewStockSymbol = false; this.rs_LevelOneStreaming.oParent = this; this.rs_LevelOneStreaming.stockSymbol = symbol; this.rs_LevelOneStreaming.ServiceName = ServiceName; this.rs_LevelOneStreaming.Request = req; this.rs_LevelOneStreaming.FunctionType = RequestState.AsyncType.LevelOneStreaming; // Issue the async request IAsyncResult r = (IAsyncResult)req.BeginGetResponse(new AsyncCallback(RespCallback), this.rs_LevelOneStreaming); } }
public List<String> TD_Request_NonAsyncChart_Snapshot(string _streamStockSymbol, string chartSource, int nDays) { List<String> cSortedLines = new List<string>(); try { string _streamerCommand = "S=" + chartSource.ToUpper() + "&C=GET&P=" + _streamStockSymbol.ToUpper() + ",0,610," + nDays.ToString() + "d,1m"; if (this.TD_loginStatus == true) { XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); string lcPostUrl = string.Empty; cpostdata.Append("!U=" + _accountid); cpostdata.Append("&W=" + _token); cpostdata.Append("&A=userid=" + _accountid); cpostdata.Append("&token=" + _token); cpostdata.Append("&company=" + _company); cpostdata.Append("&segment=" + _segment); cpostdata.Append("&cddomain=" + _cdDomain); cpostdata.Append("&usergroup=" + _usergroup); cpostdata.Append("&accesslevel=" + _accesslevel); cpostdata.Append("&authorized=" + _authorized); cpostdata.Append("&acl=" + _acl); cpostdata.Append("×tamp=" + _timestamp); cpostdata.Append("&appid=" + _appid); cpostdata.Append("|" + _streamerCommand); string encodedString = Encode_URL(cpostdata.ToString()); cpostdata = new StringBuilder(); cpostdata.Append(encodedString); lcPostUrl = "http://" + this._streamerurl + "/" + cpostdata; /*/ * Read the response and decompress the chart data * /*/ HttpWebRequest req = (HttpWebRequest)WebRequest.Create(lcPostUrl); req.ContentType = "application/x-www-form-urlencoded"; req.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, */*"; req.Method = "GET"; req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; req.Timeout = 60000; req.ServicePoint.ConnectionLimit = 50; //req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream respStream = resp.GetResponseStream(); byte[] chunk = new byte[65535 * 10]; byte[] ChartByteArray = new byte[65535 * 10]; int bytesRead = respStream.Read(ChartByteArray, 0, ChartByteArray.Length); string compressedText = Convert.ToBase64String(ChartByteArray); byte[] gzBuffer = Convert.FromBase64String(compressedText); respStream.Flush(); resp.Close(); respStream.Close(); MemoryStream ms = new MemoryStream(); int nFieldNDX = 0; int nStartPos = 21; int msgLength = BitConverter.ToInt32(gzBuffer, 0); ms.Write(gzBuffer, 64, gzBuffer.Length - 64); byte[] nMsg = new byte[sizeof(Int32)]; /*/ * S = Streaming * N = Snapshot /*/ nMsg[0] = gzBuffer[nFieldNDX++]; string cRequestType = System.Text.Encoding.ASCII.GetString(nMsg, 0, 1); // Skip these next 4 bytes nFieldNDX = nFieldNDX + 4; // Get message length nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); string nTotalMessageLength = TD_GetResponseValue(100, nMsg, nStartPos, 0); /*/ * 52 / 82 - NASDAQ Chart * 53 / 83 - NYSE Chart * 55 / 85 - Indices Chart /*/ nMsg = new byte[sizeof(short)]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[0] = gzBuffer[nFieldNDX++]; int nSID = BitConverter.ToInt16(nMsg, 0); string cStreamingRequestChart = string.Empty; switch (nSID) { case 82: cStreamingRequestChart = " NASDAQ Chart"; break; case 83: cStreamingRequestChart = " NYSE Chart"; break; case 85: cStreamingRequestChart = " Indices Chart"; break; } // Get stock symbol length nMsg = new byte[sizeof(short)]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[0] = gzBuffer[nFieldNDX++]; int nSymbolLength = BitConverter.ToInt16(nMsg, 0); // Get stock symbol nStartPos = nFieldNDX; nMsg = new byte[nSymbolLength]; Array.Copy(gzBuffer, nStartPos, nMsg, 0, nSymbolLength); string cSymbol = TD_GetResponseValue(0, nMsg, 0, nSymbolLength); nFieldNDX = nFieldNDX + nSymbolLength; // Get status nMsg = new byte[sizeof(short)]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[0] = gzBuffer[nFieldNDX++]; int nStatus = BitConverter.ToInt16(nMsg, 0); // Get length of compressed data nMsg = new byte[sizeof(Int32)]; nMsg[0] = gzBuffer[nFieldNDX++]; nMsg[1] = gzBuffer[nFieldNDX++]; nMsg[2] = gzBuffer[nFieldNDX++]; nMsg[3] = gzBuffer[nFieldNDX++]; Array.Reverse(nMsg); string nTotalLenOfCompressedData = TD_GetResponseValue(100, nMsg, nStartPos, 0); ms.Close(); byte[] CompressedData = new byte[Convert.ToInt32(nTotalLenOfCompressedData)]; Array.Copy(gzBuffer, nFieldNDX, CompressedData, 0, Convert.ToInt32(nTotalLenOfCompressedData)); StringBuilder cTempData = new StringBuilder(); int totalLength = 0; byte[] writeData = new byte[65535 * 10]; Stream s2 = new InflaterInputStream(new MemoryStream(CompressedData)); try { while (true) { int size = s2.Read(writeData, 0, writeData.Length); if (size > 0) { totalLength += size; cTempData.Append(System.Text.Encoding.ASCII.GetString(writeData, 0, size)); } else { break; } } s2.Close(); string[] cLines = cTempData.ToString().Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); foreach (string cs in cLines) { cSortedLines.Add(cs); } } catch (Exception) { s2.Close(); return cSortedLines; } } GC.Collect(); } catch (Exception) { } return cSortedLines; }
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; }
public bool TD_getTransactionHistory(string _userid, string _password, string _source, string _version, string _startDate, string _endDate, transactionHistoryType transHistoryType, ref List<AmeritradeBrokerAPI.ATradeArgument.transactionHistoryReplyDetails> oReplyDetails) { 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)); cpostdata.Append("&type=" + Encode_URL(Convert.ToString((int)transHistoryType))); if (_startDate.Length > 0 && _endDate.Length > 0) { cpostdata.Append("&startdate=" + Encode_URL(_startDate)); cpostdata.Append("&enddate=" + Encode_URL(_endDate)); } lcPostUrl = "https://apis.tdameritrade.com/apps/100/History?" + 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(); 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?"); } AmeritradeBrokerAPI.ATradeArgument.transactionHistoryReplyDetails _otransHistory = new ATradeArgument.transactionHistoryReplyDetails(); string name = string.Empty; string _tAccountID = string.Empty; string _tStartDate = string.Empty; string _tEndDate = string.Empty; // 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("transaction-list") == 0) { _otransHistory = new ATradeArgument.transactionHistoryReplyDetails(); } // Get account ID if (name.ToLower().ToString().CompareTo("account-id") == 0) { xml.Read(); _tAccountID = xml.Value; } // Get start Date if (name.ToLower().ToString().CompareTo("startdate") == 0) { xml.Read(); _tStartDate = xml.Value; } // Get end Date if (name.ToLower().ToString().CompareTo("enddate") == 0) { xml.Read(); _tEndDate = xml.Value; } // Get orderDateTime if (name.ToLower().ToString().CompareTo("orderdatetime") == 0 || name.ToLower().ToString().CompareTo("executeddate") == 0) { xml.Read(); _otransHistory.orderDate = xml.Value; } // Get type if (name.ToLower().ToString().CompareTo("type") == 0) { xml.Read(); _otransHistory.historyReqType = xml.Value; } // Get subType if (name.ToLower().ToString().CompareTo("subtype") == 0) { xml.Read(); _otransHistory.subType = xml.Value; } // Get buySellCode if (name.ToLower().ToString().CompareTo("buysellcode") == 0) { xml.Read(); _otransHistory.buySellCode = xml.Value; } // Get assetType if (name.ToLower().ToString().CompareTo("assettype") == 0) { xml.Read(); _otransHistory.assetType = xml.Value; } // Get symbol if (name.ToLower().ToString().CompareTo("symbol") == 0) { xml.Read(); _otransHistory.symbol = xml.Value; } // Get description if (name.ToLower().ToString().CompareTo("description") == 0) { xml.Read(); _otransHistory.description = xml.Value; } // Get cusip if (name.ToLower().ToString().CompareTo("cusip") == 0) { xml.Read(); _otransHistory.cusip = xml.Value; } // Get price if (name.ToLower().ToString().CompareTo("price") == 0) { xml.Read(); _otransHistory.price = xml.Value; } // Get quantity if (name.ToLower().ToString().CompareTo("quantity") == 0) { xml.Read(); _otransHistory.quantity = xml.Value; _otransHistory.quantity.Replace(",", ""); } // Get transactionId if (name.ToLower().ToString().CompareTo("transactionid") == 0) { xml.Read(); _otransHistory.transactionID = xml.Value; } // Get value if (name.ToLower().ToString().CompareTo("value") == 0) { xml.Read(); _otransHistory.value = xml.Value; _otransHistory.value.Replace(",", ""); } // Get commission if (name.ToLower().ToString().CompareTo("commission") == 0) { xml.Read(); _otransHistory.commission = xml.Value; _otransHistory.commission.Replace(",", ""); } // Get orderNumber if (name.ToLower().ToString().CompareTo("ordernumber") == 0) { xml.Read(); _otransHistory.orderNumber = xml.Value; } // Get fees if (name.ToLower().ToString().CompareTo("fees") == 0) { xml.Read(); _otransHistory.fees = (xml.Value.Length > 0 ? xml.Value : "0.00"); _otransHistory.fees.Replace(",", ""); } // Get additionalFees if (name.ToLower().ToString().CompareTo("additionalfees") == 0) { xml.Read(); _otransHistory.additionalFees = (xml.Value.Length > 0 ? xml.Value : "0.00"); _otransHistory.additionalFees.Replace(",", ""); } // Get cashBalanceEffect if (name.ToLower().ToString().CompareTo("cashbalanceeffect") == 0) { xml.Read(); _otransHistory.cashBalanceEffect = xml.Value; } // Get openClose if (name.ToLower().ToString().CompareTo("openclose") == 0) { xml.Read(); _otransHistory.openClose = xml.Value; } // Get optionType if (name.ToLower().ToString().CompareTo("optiontype") == 0) { xml.Read(); _otransHistory.optionType = xml.Value; } // Get optionStrike if (name.ToLower().ToString().CompareTo("optionstrike") == 0) { xml.Read(); _otransHistory.optionStrike = xml.Value; } // Get accruedInterest if (name.ToLower().ToString().CompareTo("accruedinterest") == 0) { xml.Read(); _otransHistory.accruedInterest = xml.Value; } // Get parentChildIndicator if (name.ToLower().ToString().CompareTo("parentchildindicator") == 0) { xml.Read(); _otransHistory.parentchildIndicator = xml.Value; } // Get sharesBefore if (name.ToLower().ToString().CompareTo("sharesbefore") == 0) { xml.Read(); _otransHistory.sharesBefore = xml.Value; } // Get sharesAfter if (name.ToLower().ToString().CompareTo("sharesafter") == 0) { xml.Read(); _otransHistory.sharesAfter = xml.Value; } // Get otherCharges if (name.ToLower().ToString().CompareTo("othercharges") == 0) { xml.Read(); _otransHistory.otherCharges = xml.Value; _otransHistory.otherCharges.Replace(",", ""); } // Get redemptionFee if (name.ToLower().ToString().CompareTo("redemptionfee") == 0) { xml.Read(); _otransHistory.redemptionFee = xml.Value; } // Get cdscFee if (name.ToLower().ToString().CompareTo("cdscfee") == 0) { xml.Read(); _otransHistory.cdscFee = xml.Value; } // Get bondInterestRate if (name.ToLower().ToString().CompareTo("bondInterestrate") == 0) { xml.Read(); _otransHistory.bondInterestRate = 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("transaction-list") == 0) { _otransHistory.accountId = _tAccountID; _otransHistory.searchDateFrom = _tStartDate; _otransHistory.searchDateTo = _tEndDate; oReplyDetails.Add(_otransHistory); } } } } retValue = (_errormsg.Length == 0 ? true : false); } else retValue = false; return retValue; }
public string TD_CancelOrder(string AccountID, string OrderID, string _userid, string _password, string _source, string _version, ref string cResultValue) { _result = string.Empty; if (this.TD_loginStatus == true) { XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); string lcPostUrl = string.Empty; cpostdata.Append("source=" + Encode_URL(_source)); cpostdata.Append("&accountid=" + AccountID); cpostdata.Append("&orderid=" + OrderID); lcPostUrl = "https://apis.tdameritrade.com/apps/100/OrderCancel?" + 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(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?"); } string cParseStage = string.Empty; string name = string.Empty; // Read the Xml. while (xml.Read()) { // Got an element? if (xml.NodeType == XmlNodeType.Element) { // Get this node. name = xml.Name; // Get Result/Status if (name.ToLower().ToString().CompareTo(_result_tag.ToLower()) == 0) { xml.Read(); _result = xml.Value; } // Get Error Message if (name.ToLower().ToString().CompareTo(_error_tag.ToLower()) == 0) { xml.Read(); _error = xml.Value; cResultValue = _error; } } } } return _result; }
private bool Login() { bool retValue = false; XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); string lcPostUrl = string.Empty; cpostdata.Append("userid=" + Encode_URL(Username)); cpostdata.Append("&password="******"&source=" + Encode_URL(SourceId)); cpostdata.Append("&version=" + Encode_URL(Version)); lcPostUrl = "https://apis.tdameritrade.com/apps/100/LogIn?source=" + Encode_URL(SourceId) + "&version=" + Encode_URL(Version); xmlHttp_.open("POST", lcPostUrl, false, Username, 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(cpostdata.ToString()); string xmlData = xmlHttp_.responseText.ToString(); string cResponseHeaders = xmlHttp_.getAllResponseHeaders(); /*/ * Assign Login values from the response string * * /*/ 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?"); } // Read the Xml. while (xml.Read()) { // Got an element? if (xml.NodeType == XmlNodeType.Element) { // Get this node. string name = xml.Name; // Get Result/Status if (name.ToLower().ToString().CompareTo(_result_tag.ToLower()) == 0) { xml.Read(); this._result = xml.Value; } // Get Session ID if (name.ToLower().ToString().CompareTo(_sessionid_tag.ToLower()) == 0) { xml.Read(); this._sessionid = xml.Value; } // Get USER ID if (name.ToLower().ToString().CompareTo(_userid_tag.ToLower()) == 0) { xml.Read(); this._userid = xml.Value; } // Get CDI if (name.ToLower().ToString().CompareTo(_cdi_tag.ToLower()) == 0) { xml.Read(); this._cdi = xml.Value; } // Get TimeOut if (name.ToLower().ToString().CompareTo(_timeout_tag.ToLower()) == 0) { xml.Read(); this._timeout = xml.Value; } // Get Associated User Account if (name.ToLower().ToString().CompareTo(_associated_acct_tag.ToLower()) == 0) { xml.Read(); this._associated_acct = xml.Value; } // Get Account ID if (name.ToLower().ToString().CompareTo(_accountid_tag.ToLower()) == 0) { xml.Read(); this._accountid = xml.Value; } // Get Description if (name.ToLower().ToString().CompareTo(_description_tag.ToLower()) == 0) { xml.Read(); this._description = xml.Value; } // Get Company if (name.ToLower().ToString().CompareTo(_company_tag.ToLower()) == 0) { xml.Read(); this._company = xml.Value; } // Get Segment if (name.ToLower().ToString().CompareTo(_segment_tag.ToLower()) == 0) { xml.Read(); this._segment = xml.Value; } // Get Margined Account if (name.ToLower().ToString().CompareTo(_margintrading_tag.ToLower()) == 0) { xml.Read(); this._margintrading = xml.Value; } } } retValue = (_result.ToUpper().CompareTo("OK") >= 0 ? true : false); LoginStatus = retValue; return(retValue); }
public bool TD_GetStreamerInfo(string _userid, string _password, string _source, string _version) { bool retValue = false; if (this.TD_loginStatus == true) { XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); string lcPostUrl = string.Empty; cpostdata.Append("source=" + Encode_URL(_source)); lcPostUrl = "https://apis.tdameritrade.com/apps/100/StreamerInfo?" + 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(); /*/ * Assign Login values from the response string * /*/ 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?"); } // Read the Xml. while (xml.Read()) { // Got an element? if (xml.NodeType == XmlNodeType.Element) { #region Parse the Xml Element returned from TD Ameritrade // Get this node. string name = xml.Name; // Get Streamer URL if (name.ToLower().ToString().CompareTo(_streamerurl_tag.ToLower()) == 0) { xml.Read(); _streamerurl = xml.Value; } // Get Token if (name.ToLower().ToString().CompareTo(_token_tag.ToLower()) == 0) { xml.Read(); _token = xml.Value; } // Get TimeStamp if (name.ToLower().ToString().CompareTo(_timestamp_tag.ToLower()) == 0) { xml.Read(); _timestamp = xml.Value; } // Get cdDomain if (name.ToLower().ToString().CompareTo(_cdDomain_tag.ToLower()) == 0) { xml.Read(); _cdDomain = xml.Value; } // Get User Group if (name.ToLower().ToString().CompareTo(_usergroup_tag.ToLower()) == 0) { xml.Read(); _usergroup = xml.Value; } // Get Access Level if (name.ToLower().ToString().CompareTo(_accesslevel_tag.ToLower()) == 0) { xml.Read(); _accesslevel = xml.Value; } // Get ACL if (name.ToLower().ToString().CompareTo(_acl_tag.ToLower()) == 0) { xml.Read(); _acl = xml.Value; } // Get Application ID if (name.ToLower().ToString().CompareTo(_appid_tag.ToLower()) == 0) { xml.Read(); _appid = xml.Value; } // Get Authorized if (name.ToLower().ToString().CompareTo(_authorized_tag.ToLower()) == 0) { xml.Read(); _authorized = xml.Value; } // Get Error Message if (name.ToLower().ToString().CompareTo(_errormsg_tag.ToLower()) == 0) { xml.Read(); _errormsg = xml.Value; } #endregion } } retValue = (_errormsg.Length == 0 ? true : false); } else retValue = false; return retValue; }
/*/ * ***************************************************************************** * TDAmeritrade API Code * * Cedric Harris * September 25, 2007 * ***************************************************************************** /*/ public bool TD_brokerLogin(string _userid, string _password, string _source, string _version) { bool retValue = false; XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); string lcPostUrl = string.Empty; cpostdata.Append("userid=" + Encode_URL(_userid)); cpostdata.Append("&password="******"&source=" + Encode_URL(_source)); cpostdata.Append("&version=" + Encode_URL(_version)); lcPostUrl = "https://apis.tdameritrade.com/apps/100/LogIn?source=" + Encode_URL(_source) + "&version=" + Encode_URL(_version); 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(cpostdata.ToString()); string xmlData = xmlHttp_.responseText.ToString(); string cResponseHeaders = xmlHttp_.getAllResponseHeaders(); /*/ * Assign Login values from the response string * /*/ 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?"); } // Read the Xml. while (xml.Read()) { // Got an element? if (xml.NodeType == XmlNodeType.Element) { #region Parse the Xml Element returned from TD Ameritrade // Get this node. string name = xml.Name; // Get Result/Status if (name.ToLower().ToString().CompareTo(_result_tag.ToLower()) == 0) { xml.Read(); _result = xml.Value; } // Get Session ID if (name.ToLower().ToString().CompareTo(_sessionid_tag.ToLower()) == 0) { xml.Read(); _sessionid = xml.Value; } // Get USER ID if (name.ToLower().ToString().CompareTo(_userid_tag.ToLower()) == 0) { xml.Read(); _userid = xml.Value; } // Get CDI if (name.ToLower().ToString().CompareTo(_cdi_tag.ToLower()) == 0) { xml.Read(); _cdi = xml.Value; } // Get TimeOut if (name.ToLower().ToString().CompareTo(_timeout_tag.ToLower()) == 0) { xml.Read(); _timeout = xml.Value; } // Get Associated User Account if (name.ToLower().ToString().CompareTo(_associated_acct_tag.ToLower()) == 0) { xml.Read(); _associated_acct = xml.Value; } // Get Account ID if (name.ToLower().ToString().CompareTo(_accountid_tag.ToLower()) == 0) { xml.Read(); _accountid = xml.Value; } // Get Description if (name.ToLower().ToString().CompareTo(_description_tag.ToLower()) == 0) { xml.Read(); _description = xml.Value; } // Get Company if (name.ToLower().ToString().CompareTo(_company_tag.ToLower()) == 0) { xml.Read(); _company = xml.Value; } // Get Segment if (name.ToLower().ToString().CompareTo(_segment_tag.ToLower()) == 0) { xml.Read(); _segment = xml.Value; } // Get Margined Account if (name.ToLower().ToString().CompareTo(_margintrading_tag.ToLower()) == 0) { xml.Read(); _margintrading = xml.Value; } #endregion } } retValue = (_result.ToUpper().CompareTo("OK") >= 0 ? true : false); TD_loginStatus = retValue; return retValue; }
public bool TD_Logout(string _userid, string _password, string _source, string _version) { bool retValue = false; if (this.TD_loginStatus == true) { XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); string lcPostUrl = string.Empty; cpostdata.Append("source=" + Encode_URL(_source)); lcPostUrl = "https://apis.tdameritrade.com/apps/100/LogOut?" + 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); retValue = true; } else retValue = false; return retValue; }
public void TD_RequestAsyncChart_Snapshot(string _streamStockSymbol, string chartSource, int nDays, Form oForm) { List<String> cSortedLines = new List<string>(); try { if (chartSource.IndexOf("NYSE_CHART") == 0 || chartSource.IndexOf("NASDAQ_CHART") == 0 || chartSource.IndexOf("IINDEX_CHART") == 0) { string _streamerCommand = "S=" + chartSource.ToUpper() + "&C=GET&P=" + _streamStockSymbol.ToUpper() + ",0,610," + nDays.ToString() + "d,1m"; if (this.TD_loginStatus == true) { XMLHTTP xmlHttp_ = new XMLHTTP(); StringBuilder cpostdata = new StringBuilder(); string lcPostUrl = string.Empty; cpostdata.Append("!U=" + _accountid); cpostdata.Append("&W=" + _token); cpostdata.Append("&A=userid=" + _accountid); cpostdata.Append("&token=" + _token); cpostdata.Append("&company=" + _company); cpostdata.Append("&segment=" + _segment); cpostdata.Append("&cddomain=" + _cdDomain); cpostdata.Append("&usergroup=" + _usergroup); cpostdata.Append("&accesslevel=" + _accesslevel); cpostdata.Append("&authorized=" + _authorized); cpostdata.Append("&acl=" + _acl); cpostdata.Append("×tamp=" + _timestamp); cpostdata.Append("&appid=" + _appid); cpostdata.Append("|" + _streamerCommand); string encodedString = Encode_URL(cpostdata.ToString()); cpostdata = new StringBuilder(); cpostdata.Append(encodedString); lcPostUrl = "http://" + this._streamerurl + "/" + cpostdata; /*/ * Read the response and decompress the chart data * /*/ HttpWebRequest req = (HttpWebRequest)WebRequest.Create(lcPostUrl); req.ContentType = "application/x-www-form-urlencoded"; req.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, */*"; req.Method = "GET"; req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; req.Timeout = 60000; req.ServicePoint.ConnectionLimit = 50; //// Add the request into the state so it can be passed around this.rs_ChartSnapShot = new RequestState(); //this.rs_ChartSnapShot.TickWithArgs += new AmeritradeBrokerAPI.EventHandlerWithArgs(((Form1)oForm).processEvent); this.rs_ChartSnapShot.oParentForm = oForm; this.rs_ChartSnapShot.lNewStockSymbol = false; this.rs_ChartSnapShot.ServiceName = chartSource; this.rs_ChartSnapShot.stockSymbol = _streamStockSymbol; this.rs_ChartSnapShot.Request = req; this.rs_ChartSnapShot.FunctionType = RequestState.AsyncType.ChartSnapshot; // Issue the async request IAsyncResult r = (IAsyncResult)req.BeginGetResponse(new AsyncCallback(RespCallback), this.rs_ChartSnapShot); } } } catch (Exception) { } }