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); } }
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(); } }; }
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); } }