public static void SendTradeToTradeFeed()
 {
     try
     {
         #region Fetch Index
         //maintain send index in MemoryManager 27/03/2017
         if (MemoryManager.onlineSendFeed == true)
         {
             MemoryManager.NoOfTradeFeedSent = 0;
             for (int index = 0; index < MemoryManager.TradeMemoryConDict.Count; index++) //(KeyValuePair<long, object> dr in MemoryManager.TradeMemoryConDict)
             {
                 TradeUMS oTradeUMS = new TradeUMS();
                 oTradeUMS = (TradeUMS)MemoryManager.TradeMemoryConDict[index];
                 if (MemoryManager.onlineSendFeed == true)
                 {
                     SendTradeToTradeFeedFinal(oTradeUMS);
                     MemoryManager.SendTradeFeedIndex = MemoryManager.SendTradeFeedIndex + 1;
                 }
                 else
                 {
                     break;
                 }
             }
             #endregion
         }
     }
     catch (SocketException ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Пример #2
0
        public static void ExecuteAD2TR(TradeUMS oTradeUMS)
        {
            PrintCount++;

            try
            {
                if (PrintCount % 50000 == 0)
                {
                    SeqCount++;
                }

                CreateNewFile(oTradeUMS);
            }
            catch (Exception ex)
            {
                ExceptionUtility.LogError(ex);
                //System.Windows.MessageBox.Show("Error in Exporting data to AD2TR");
            }
            finally
            {
                if (writer != null)
                {
                    writer.Flush();
                    writer.Close();
                }
            };
        }
Пример #3
0
        private static void CreateNewFile(TradeUMS oTradeUMS)
        {
            try
            {
                //            if (App.MemberId != null && App.TraderId != null)
                folderpath = string.Format("{0}AD2TR{1}{2:00}.csv", UtilityLoginDetails.GETInstance.MemberId, CommonFunctions.GetDate().Day.ToString("00"), SeqCount);

                string     folderpath1 = Path.Combine(directoryAD2TR.ToString(), folderpath);
                FileStream fsrw        = null;
                if (!Directory.Exists(directoryAD2TR.ToString()))
                {
                    Directory.CreateDirectory(directoryAD2TR.ToString());
                }
                if (UtilityLoginDetails.GETInstance.Role.ToString() == "Admin")// Role: Admin
                {
                    if (!File.Exists(folderpath1))
                    // Create a file to write to.
                    {
                        writer = File.CreateText(folderpath1);
                        writer.Write("MemId, TdrId, SCd, ScId, Rt, Qty, PendQty, Reserve, Time, Date, ClId, TrnId, TrnType, Buy/Sell, TradeId, Client Type, ISINCd, ScrGrp, SettNo, OrdTimestamp, RectFlag, LocationId, Segment, CpCode, Yield, Dirty Price, Decimal Locator");
                        writer.Write(writer.NewLine);
                    }
                    else
                    {
                        writer = File.AppendText(folderpath1);
                    }

                    writer.WriteLine(UtilityLoginDetails.GETInstance.MemberId + "," + oTradeUMS.TraderId + "," + oTradeUMS.ScripCode + "," + oTradeUMS.ScripID + "," + oTradeUMS.Rate + "," + oTradeUMS.LastQty + "," + oTradeUMS.OppMemberId + "," +
                                     oTradeUMS.Reserved + "," + oTradeUMS.TimeOnly + "," + oTradeUMS.DateOnly + "," + oTradeUMS.Client + "," + oTradeUMS.OrderID + "," + oTradeUMS.OrderType + "," + oTradeUMS.BSFlag + "," + oTradeUMS.TradeID + "," +
                                     oTradeUMS.ClientType + "," + oTradeUMS.ISIN + "," + oTradeUMS.ScripGroup + "," + oTradeUMS.SettlNo[0] /*string.Join("/", oTradeUMS.SettlNo)*/ + "," + oTradeUMS.OrderTimeStamp1 + "," + "11" + "," + oTradeUMS.SenderLocationID + "," + oTradeUMS.Market
                                     + "," + oTradeUMS.CPCode + "," + oTradeUMS.Yield + "," + oTradeUMS.UnderlyingDirtyPrice + "," + oTradeUMS.DecimalLocator);
                }
                else// Role Trader
                {
                    if (!File.Exists(folderpath1))
                    // Create a file to write to.
                    {
                        writer = File.CreateText(folderpath1);
                        writer.Write("MemId, TdrId, SCd, ScId, Rt, Qty, PendQty, Reserve, Time, Date, ClId, TrnId, TrnType, Buy/Sell, TradeId, Client Type, ISINCd, ScrGrp, SettNo, OrdTimestamp, RectFlag, Segment, CpCode, Yield, Dirty Price, Decimal Locator");
                        writer.Write(writer.NewLine);
                    }
                    else
                    {
                        writer = File.AppendText(folderpath1);
                    }

                    writer.WriteLine(UtilityLoginDetails.GETInstance.MemberId + "," + oTradeUMS.TraderId + "," + oTradeUMS.ScripCode + "," + oTradeUMS.ScripID + "," + oTradeUMS.Rate + "," + oTradeUMS.LastQty + "," + oTradeUMS.OppMemberId + "," +
                                     oTradeUMS.Reserved + "," + oTradeUMS.TimeOnly + "," + oTradeUMS.DateOnly + "," + oTradeUMS.Client + "," + oTradeUMS.OrderID + "," + oTradeUMS.OrderType + "," + oTradeUMS.BSFlag + "," + oTradeUMS.TradeID + "," +
                                     oTradeUMS.ClientType + "," + oTradeUMS.ISIN + "," + oTradeUMS.ScripGroup + "," + oTradeUMS.SettlNo[0] /*string.Join("/", oTradeUMS.SettlNo)*/ + "," + oTradeUMS.OrderTimeStamp1 + "," + "11" + "," + oTradeUMS.Market
                                     + "," + oTradeUMS.CPCode + "," + oTradeUMS.Yield + "," + oTradeUMS.UnderlyingDirtyPrice + "," + oTradeUMS.DecimalLocator);
                }
            }
            catch (Exception ex)
            {
                ExceptionUtility.LogError(ex);
            }
        }
            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);
                }
            }