Пример #1
0
        // 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);
        }
Пример #2
0
        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();
                }
            }
        }
Пример #4
0
        private static string GetHTML(string url)
        {
            XMLHTTP x = new XMLHTTP();

            x.open("GET", url, false);
            x.send();
            return(x.responseText);
        }
Пример #5
0
        //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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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"));
            }
        }
Пример #9
0
        /// <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);
        }
Пример #10
0
 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);
 }
Пример #11
0
        // 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);
        }
Пример #12
0
 //private XMLHTTP req;
 public XmlHttpClient()
 {
     req = new XMLHTTP();
 }
Пример #13
0
        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);
                            }
                        }
                    }
                }
            }
        }
Пример #14
0
        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("&timestamp=" + _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;

        }
Пример #15
0
        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("&timestamp=" + _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);
            }

        }
Пример #16
0
        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("&timestamp=" + _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);
            }

        }
Пример #17
0
        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("&timestamp=" + _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;
        }
Пример #18
0
        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;
        }
Пример #19
0
        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;

        }
Пример #20
0
        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;
        }
Пример #21
0
        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);
        }
Пример #22
0
        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;
        }
Пример #23
0
        /*/
         * *****************************************************************************
         * 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;
        }
Пример #24
0
        /// <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);
        }
Пример #25
0
        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;

        }
Пример #26
0
        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("&timestamp=" + _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) { }
        }