コード例 #1
0
            public static void ConnectCallback(IAsyncResult ar)
            {
                try
                {
                    // Retrieve the socket from the state object.
                    Socket sockTradeFeed = (Socket)ar.AsyncState;

                    // Complete the connection.
                    sockTradeFeed.EndConnect(ar);
                    GetInstance.ReplyText = "Connected Successfully";
                    setIP = true;
                    //SaveTradeFeedIPPORT();
                    //  TwsMainWindowVM.parser.SaveSettings(TwsMainWindowVM.TwsINIPath.ToString());
                    MemoryManager.onlineSendFeed = true;
                    // Signal that the connection has been made.
                    connectDone.Set();
                    AsynchronousTradeFeed.SendTradeToTradeFeed();
                }
                catch (Exception e)
                {
                    GetInstance.ReplyText        = "Connection Failed";
                    MemoryManager.onlineSendFeed = false;
                    connectDone.Set();
                    Console.WriteLine(e.ToString());
                }
                finally
                {
                    //SaveTradeFeedIPPORT();
                }
            }
コード例 #2
0
        private static void OpenSocketConnection()
        {
            //Controller.NetPositionCalculate.ProcessOnlineTrades();
            AsynchronousTradeFeed.checkIP();
            AsynchronousTradeFeed.StartTradeFeed();
            if (AsynchronousTradeFeed.setIP)
            {
                SaveTradeFeedIPPORT();
            }

            /*    if (AsynchronousTradeFeed.sockTradeFeed.Connected == true)
             *  {
             *      AsynchronousTradeFeed.SendTradeToTradeFeed();
             *  }*/
        }
コード例 #3
0
            public static void SendTradeToTradeFeedFinal(TradeUMS oTradeUMS)
            {
                try
                {
                    List <byte> tradeFeedONReq = new List <byte>();
                    int         msgLength      = 182;
                    int         NoOfTrades     = 1;
                    int         Filler1        = 0;
                    char[]      StrData;
                    byte[]      buffer;
                    string      time           = oTradeUMS.TimeOnly;
                    string      orderTimeStamp = String.Empty;
                    var         timearray      = time.Split(':');
                    if (timearray != null && timearray.Count() > 0)
                    {
                        int  hour       = Convert.ToInt16(timearray[0]);
                        int  min        = Convert.ToInt16(timearray[1]);
                        int  sec        = Convert.ToInt16(timearray[2]);
                        char char_space = '\0';


                        if (((hour) > (txtHour) && ((min) >= (txtMinute) || (min) < (txtMinute)) && ((sec) >= (txtSeconds) ||
                                                                                                     (sec) < (txtSeconds))) || ((hour) == (txtHour) && ((min) == (txtMinute)) && ((sec) >= (txtSeconds))) ||
                            ((hour) == (txtHour) && ((min) > (txtMinute)) && (((sec) >= (txtSeconds)) || ((sec) < (txtSeconds)))))
                        {
                            tradeFeedONReq.AddRange(BitConverter.GetBytes(msgLength));
                            tradeFeedONReq.AddRange(BitConverter.GetBytes(NoOfTrades));
                            tradeFeedONReq.AddRange(BitConverter.GetBytes(oTradeUMS.TraderId));
                            tradeFeedONReq.AddRange(BitConverter.GetBytes(Convert.ToInt32(oTradeUMS.ScripCode)));

                            StrData = oTradeUMS.ScripName.PadRight(11, ' ').ToCharArray();
                            foreach (char c in StrData)
                            {
                                buffer = BitConverter.GetBytes(c);
                                tradeFeedONReq.Add(buffer[0]);
                            }
                            tradeFeedONReq.Add(BitConverter.GetBytes(char_space)[0]);

                            tradeFeedONReq.AddRange(BitConverter.GetBytes(oTradeUMS.SideTradeID));
                            tradeFeedONReq.AddRange(BitConverter.GetBytes(Convert.ToInt32(oTradeUMS.LastPx / 1000000)));
                            tradeFeedONReq.AddRange(BitConverter.GetBytes(oTradeUMS.LastQty));
                            tradeFeedONReq.AddRange(BitConverter.GetBytes(Filler1));
                            tradeFeedONReq.AddRange(BitConverter.GetBytes(Filler1));

                            //tradeFeedONReq.AddRange(BitConverter.GetBytes(CommonFunctions.GetGroupName(oTradeUMS.ScripCode)));


                            // add 1 more byte
                            // Array.Resize(ref StrData, 9);
                            // StrData = new string(StrData).PadLeft(StrData.Length, '\t').ToCharArray();
                            StrData = oTradeUMS.TimeOnly.PadRight(8, ' ').ToCharArray();
                            foreach (char c in StrData)
                            {
                                buffer = BitConverter.GetBytes(c);
                                tradeFeedONReq.Add(buffer[0]);
                            }
                            tradeFeedONReq.Add(BitConverter.GetBytes(char_space)[0]);

                            StrData = oTradeUMS.DateOnly.PadRight(10, ' ').ToCharArray();
                            foreach (char c in StrData)
                            {
                                buffer = BitConverter.GetBytes(c);
                                tradeFeedONReq.Add(buffer[0]);
                            }
                            tradeFeedONReq.Add(BitConverter.GetBytes(char_space)[0]);

                            StrData = orderTimeStamp.PadRight(19, ' ').ToCharArray();
                            foreach (char c in StrData)
                            {
                                buffer = BitConverter.GetBytes(c);
                                tradeFeedONReq.Add(buffer[0]);
                            }
                            tradeFeedONReq.Add(BitConverter.GetBytes(char_space)[0]);

                            StrData = oTradeUMS.Client.PadRight(11, ' ').ToCharArray();
                            foreach (char c in StrData)
                            {
                                buffer = BitConverter.GetBytes(c);
                                tradeFeedONReq.Add(buffer[0]);
                            }
                            tradeFeedONReq.Add(BitConverter.GetBytes(char_space)[0]);

                            StrData = oTradeUMS.BSFlag.PadRight(0, ' ').ToCharArray();
                            foreach (char c in StrData)
                            {
                                buffer = BitConverter.GetBytes(c);
                                tradeFeedONReq.Add(buffer[0]);
                            }

                            StrData = oTradeUMS.OrderType.PadRight(0, ' ').ToCharArray();
                            foreach (char c in StrData)
                            {
                                buffer = BitConverter.GetBytes(c);
                                tradeFeedONReq.Add(buffer[0]);
                            }

                            tradeFeedONReq.AddRange(BitConverter.GetBytes(oTradeUMS.OrderID));

                            StrData = oTradeUMS.ClientType.PadRight(9, ' ').ToCharArray();
                            foreach (char c in StrData)
                            {
                                buffer = BitConverter.GetBytes(c);
                                tradeFeedONReq.Add(buffer[0]);
                            }
                            tradeFeedONReq.Add(BitConverter.GetBytes(char_space)[0]);

                            StrData = oTradeUMS.ISIN.PadRight(12, ' ').ToCharArray();
                            foreach (char c in StrData)
                            {
                                buffer = BitConverter.GetBytes(c);
                                tradeFeedONReq.Add(buffer[0]);
                            }
                            tradeFeedONReq.Add(BitConverter.GetBytes(char_space)[0]);

                            tradeFeedONReq.Add(BitConverter.GetBytes(char_space)[0]);
                            //  tradeFeedONReq.Add(BitConverter.GetBytes(char_space)[0]);


                            //StrData = string.Join("/", oTradeUMS.SettlNo).ToCharArray();
                            //Array.Resize(ref StrData, 12);
                            //foreach (char c in StrData)
                            //{
                            //    buffer = BitConverter.GetBytes(c);
                            //    tradeFeedONReq.Add(buffer[0]);
                            //}
                            //Filler1 = Convert.ToInt32(oTradeUMS.SettlNo[0]);

                            if (!string.IsNullOrEmpty(oTradeUMS.SettlNo[0]))
                            {
                                tradeFeedONReq.AddRange(BitConverter.GetBytes(Convert.ToInt32(oTradeUMS.SettlNo[0])));
                            }
                            else
                            {
                                tradeFeedONReq.AddRange(BitConverter.GetBytes(Filler1));
                            }
                            //tradeFeedONReq.AddRange(BitConverter.GetBytes(Convert.ToInt32(oTradeUMS.SettlNo[0])));

                            /* byte[] tmpbyte;
                             * tmpbyte = BitConverter.GetBytes(Filler1);
                             * tradeFeedONReq.AddRange(tmpbyte);*/

                            /*   StrData = oTradeUMS.ScripGroup.PadRight(2, ' ').ToCharArray();
                             * foreach (char c in StrData)
                             * {
                             *     buffer = BitConverter.GetBytes(c);
                             *     tradeFeedONReq.Add(buffer[0]);
                             * }*/
                            tradeFeedONReq.Add(BitConverter.GetBytes(char_space)[0]);
                            tradeFeedONReq.Add(BitConverter.GetBytes(char_space)[0]);
                            tradeFeedONReq.Add(BitConverter.GetBytes(char_space)[0]);

                            StrData = oTradeUMS.ScripGroup.PadRight(2, ' ').ToCharArray();
                            foreach (char c in StrData)
                            {
                                buffer = BitConverter.GetBytes(c);
                                tradeFeedONReq.Add(buffer[0]);
                            }
                            tradeFeedONReq.Add(BitConverter.GetBytes(char_space)[0]);
                            if (!string.IsNullOrEmpty(oTradeUMS.SettlNo[1]))
                            {
                                tradeFeedONReq.AddRange(BitConverter.GetBytes(Convert.ToInt32(oTradeUMS.SettlNo[1])));
                            }
                            else
                            {
                                tradeFeedONReq.AddRange(BitConverter.GetBytes(Filler1));
                            }
                            tradeFeedONReq.AddRange(BitConverter.GetBytes(oTradeUMS.SenderLocationID));
                            if (oTradeUMS.CPCode == null)
                            {
                                oTradeUMS.CPCode = string.Empty;
                            }
                            StrData = oTradeUMS.CPCode?.PadRight(12, ' ').ToCharArray();
                            foreach (char c in StrData)
                            {
                                buffer = BitConverter.GetBytes(c);
                                tradeFeedONReq.Add(buffer[0]);
                            }
                            tradeFeedONReq.Add(BitConverter.GetBytes(char_space)[0]);
                            tradeFeedONReq.Add(BitConverter.GetBytes(char_space)[0]);

                            tradeFeedONReq.AddRange(BitConverter.GetBytes(Filler1));
                            tradeFeedONReq.AddRange(BitConverter.GetBytes(oTradeUMS.UnderlyingDirtyPrice));
                            tradeFeedONReq.AddRange(BitConverter.GetBytes(oTradeUMS.DecimalLocator));

                            AsynchronousTradeFeed.Send(sockTradeFeed, tradeFeedONReq.ToArray <byte>());
                            MemoryManager.NoOfTradeFeedSent = MemoryManager.NoOfTradeFeedSent + 1;
                            GetInstance.ReplyText           = "No of Trades Sent : " + MemoryManager.NoOfTradeFeedSent;
                        }
                    }
                }
                catch (Exception ex)
                {
                    ExceptionUtility.LogError(ex);
                }
            }