Esempio n. 1
0
        public void CallbackReadMessage(byte[] message)
        {
            string messageBody = "";
            string stTime      = "";

            //enmTradingEvent te = CMessenger.GetMessageHeaderInfo(ref messageBody, message, ref stTime);
            if (bNeedSynchroTime)
            {
                DateTime tm = Convert.ToDateTime(stTime);
            }


            //if (te == enmTradingEvent.StockUpadate)
            {
                CStockClass sc = (CStockClass)CUtil.DeSerializeFromXMLString(messageBody, typeof(CStockClass));
                //tempo do normal
                if (sc.Isin == "RTS-3.16")
                {
                    sc.Copy(sc.Isin, _outpStockClass);
                }
            }


            //  CStockClass sc = (CStockClass) CUtil.DeSerializeFromXMLString(message, typeof(CStockClass));
            //CStockClass sc =
        }
Esempio n. 2
0
        private void DBGPrintStock(CStockClass sc)
        {
            string stBids = "bids ";

            foreach (var kvp in sc.StockListBids)
            {
                int prec = kvp.Key;
                stBids += String.Format("prec={0}", prec);
                foreach (var kvp2 in kvp.Value)
                {
                    stBids += String.Format("({0},{1})",
                                            kvp2.Price.ToString().Replace(",", "."),
                                            kvp2.Volume.ToString().Replace(",", "."));
                }
            }
            string stAsks = "asks ";

            foreach (var kvp in sc.StockListAsks)
            {
                int prec = kvp.Key;
                stAsks += String.Format("prec={0}", prec);
                foreach (var kvp2 in kvp.Value)
                {
                    stAsks += String.Format("({0},{1})",
                                            kvp2.Price.ToString().Replace(",", "."),
                                            kvp2.Volume.ToString().Replace(",", "."));
                }
            }
        }
Esempio n. 3
0
        public CStockClass CreateStockClass()
        {
            CStockClass sc = new CStockClass();

            sc.StockListBids = new Dictionary <int, List <CStock> >();
            sc.StockListAsks = new Dictionary <int, List <CStock> >();

            sc.StockListBids[0] = new List <CStock>();
            sc.StockListBids[1] = new List <CStock>();

            sc.StockListAsks[0] = new List <CStock>();
            sc.StockListAsks[1] = new List <CStock>();



            return(sc);
        }
Esempio n. 4
0
        public void Test()
        {
            int szDecimals = sizeof(decimal);
            int szLong     = sizeof(long);

            int szDouble = sizeof(double);
            int szFloat  = sizeof(float);

            // int szDateTime = DateTime



            sc = CreateStockClass();

            InitStockClass();

            var bytes = CUtilProto.SerializeProto(sc);
        }
Esempio n. 5
0
        public void PrintStock(string instrument, CStockClass stockClass)
        {
            if (!_isOn)
            {
                return;
            }



            foreach (var kvp in stockClass.StockListAsks)
            {
                Log(instrument, String.Format("prec={0}", kvp.Key));

                string st = "";
                foreach (var el in kvp.Value)
                {
                    st += String.Format("{0} {1}|", el.Price, el.Volume);
                }

                Log(instrument, st);
            }

            Log(instrument, "");
            Log(instrument, "");

            foreach (var kvp in stockClass.StockListBids)
            {
                Log(instrument, String.Format("prec={0}", kvp.Key));

                string st = "";
                foreach (var el in kvp.Value)
                {
                    st += String.Format("{0} {1}|", el.Price, el.Volume);
                }

                Log(instrument, st);
            }



            Log(instrument, "=======================================================================================================================================");
        }
Esempio n. 6
0
        private void PrintOneStock(string instr, CStockClass stock)
        {
            foreach (var kvp in stock.StockListBids)
            {
                int prec = kvp.Key;

                Log(instr, String.Format("prec={0}", prec));
                string st = "";


                if (kvp.Value == null)
                {
                    continue;
                }

                foreach (var el in kvp.Value)
                {
                    st += String.Format("{0} {1}|", el.Price, el.Volume);
                }

                Log(instr, st);
            }
        }
Esempio n. 7
0
        private void ProcessStockUpadate(byte[] arrMsgBody)
        {
            DateTime    dtBefUnpack = DateTime.Now;
            CStockClass sc          = CUtilProto.DeserializeProto <CStockClass>(arrMsgBody);
            DateTime    dtAftUnpack = DateTime.Now;

            //   int sz = sizeof(decimal);
            //  int sz2 = sizeof(long);

            CheckDeltaTimeLim(sc.DtBeforePack, 50, "CDataREciever.ProcessStockUpadate " + sc.Isin);

            _dtStockUpdate = (DateTime.Now - sc.DtBeforePack).TotalMilliseconds;


            /*Log("[StockUpadate]  DtBeforePack=" + sc.DtBeforePack.ToString("hh:mm:ss.fff") + " isin=" +
             *    sc.Isin + " bid=" + sc.StockListBids[0][0].Price + " ask=" + sc.StockListAsks[0][0].Price  +
             *    " dtBefUnpack=" + dtBefUnpack.ToString("hh:mm:ss.fff") + " dtAftUnpack=" + dtAftUnpack.ToString("hh:mm:ss.fff") +
             *     " dt=" + _dtStockUpdate);*/

            Log("[StockUpadate]  DtBeforePack=" + sc.DtBeforePack.ToString("hh:mm:ss.fff") + " isin=" + sc.Isin);



            //  DBGPrintStock(sc);
            //  if (sc.Isin == "IOTUSD")
            //    Thread.Sleep(0);

            if (_outpStockClass.ContainsKey(sc.Isin))
            {
                // sc.Copy(sc.Isin, _outpStockClass[sc.Isin]);
                sc.RebuildStock(sc.Isin, _outpStockClass[sc.Isin]);
            }

            //    _kernelTerminal.ViewModelDispatcher.GetMarketViewModel(sc.Isin).ControlMarket.ControlStockInstance.ForceRepaint();

            _dbg.PrintData(sc, _outpStockClass[sc.Isin]);
        }
Esempio n. 8
0
        /// <summary>
        ///
        /// Create structures - list for deals and stocks
        /// for  instrument
        ///
        /// Call from -
        /// 1)CKernetlTerminal.SubscribeTickersFromConfig - on successfull Authorisation
        /// 2)CKernetlTerminal.EditConnectedStock
        /// 3)CKernetlTerminal.EditNonConnectedStock
        ///
        /// </summary>
        /// <param name="instrument"></param>
        public void AddStructuresForSubscribedTicker(string instrument, decimal stepPrice)
        {
            //if (isin == null)
            //  return;


            lock (OutpListAggrDeals)
                if (!OutpListAggrDeals.ContainsKey(instrument))
                {
                    OutpListAggrDeals[instrument] = new List <CDealClass>();
                }

            lock (OutpStockClass)
                if (!OutpStockClass.ContainsKey(instrument))
                {
                    OutpStockClass[instrument] = new CStockClass();
                }

            //TODO get from GUI

            int parPeriod = 30;


            if (!_dictDealsAggr.ContainsKey(instrument))
            {
                _dictDealsAggr[instrument] = new CDealsAgregator(parPeriod, stepPrice);
            }



            lock (OutpListRawDeals)
                if (!OutpListRawDeals.ContainsKey(instrument))
                {
                    OutpListRawDeals[instrument] = new List <CDealClass>();
                }
        }
Esempio n. 9
0
        public TestBinaryCopy()
        {
            CStockClass sc = new CStockClass("Si-6.15", new List <int> {
                0
            });

            Random        rnd = new Random();
            List <CStock> lst = new List <CStock>();

            for (int i = 0; i < 100; i++)
            {
                //  sc.StockList[0].Add(new CStock(rnd.Next(80000,85000), rnd.Next(0,1000)));
                // sc.StockList[1].Add(new CStock(rnd.Next(80000,85000), rnd.Next(0,1000)));
                // lst.Add(new CStock(rnd.Next(80000,85000), rnd.Next(0,1000)));
            }


            object obj = sc;

            Stopwatch sw1 = new System.Diagnostics.Stopwatch();
            Stopwatch sw2 = new System.Diagnostics.Stopwatch();
            Stopwatch sw3 = new System.Diagnostics.Stopwatch();

            MemoryStream ms  = new MemoryStream();
            const int    num = 1000;

            long[] arrTicks = new long[num];
            long[] arrMs    = new long[num];


            for (int i = 0; i < num; i++)
            {
                sw1.Reset(); sw1.Start();
                sw2.Reset(); sw2.Start();
                sw3.Reset(); sw3.Start();



                sw3.Stop();
                try
                {
                    BinaryFormatter formatter = new BinaryFormatter();

                    sw2.Stop();
                    formatter.Serialize(ms, obj);

                    // ms.Seek(0, SeekOrigin.Begin);
                    //  BinaryFormatter formatter2 = new BinaryFormatter();
                    //  object obout = formatter2.Deserialize(ms);

                    sw1.Stop();
                    arrTicks[i] = sw1.ElapsedTicks;
                    arrMs[i]    = sw1.ElapsedMilliseconds;
                    if (sw1.ElapsedMilliseconds > 1)
                    {
                        //    System.Threading.Thread.Sleep(1);
                    }

                    // System.Threading.Thread.Sleep(10);
                }
                catch (Exception e)
                {
                    throw new ApplicationException("SerializeBinary");
                }
            }
        }
Esempio n. 10
0
        public void PrintData(CStockClass source, CStockClass dest)
        {
            if (!_isOn)
            {
                return;
            }

            string instr = source.Isin;

            Log(instr, "[SOURCESTOCK]");
            PrintOneStock(instr, source);

            Log(instr, "instr++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");


            foreach (var kvp in source.QueueCMDStockChng[Direction.Down])
            {
                int    prec = kvp.Key;
                string st   = String.Format("prec={0} =>", prec);


                if (kvp.Value == null)
                {
                    continue;
                }


                foreach (var el in kvp.Value)
                {
                    st += String.Format("{0} p={1} v={2}|", el.Code, el.Price, el.Volume);
                }

                Log(instr, st);
            }



            Log(instr, "[DSTSTOCK]");
            PrintOneStock(instr, dest);
            Log(instr, "______________________________________________________________________________________________________________________________________________________________________________");



            foreach (var kvp in source.StockListBids)
            {
                int prec = kvp.Key;

                if (source.StockListBids[prec] == null)
                {
                    continue;
                }

                int cntDest = dest.StockListBids.Count == 0 || dest.StockListBids[prec] == null ? 0 : dest.StockListBids[prec].Count;

                for (int i = 0; i < Math.Min(source.StockListBids[prec].Count, cntDest); i++)
                {
                    if (source.StockListBids[prec][i].Price != dest.StockListBids[prec][i].Price ||
                        source.StockListBids[prec][i].Volume != dest.StockListBids[prec][i].Volume)
                    {
                        Log(instr, String.Format("ERROR ! prec={0} i={1} Src.Price={2} Src.Volume={3} dstPrice={4} dstVolume={5} ",
                                                 prec,                                 //0
                                                 i,                                    //1
                                                 source.StockListBids[prec][i].Price,  //2
                                                 source.StockListBids[prec][i].Volume, //3
                                                 dest.StockListBids[prec][i].Price,    //4
                                                 dest.StockListBids[prec][i].Volume)   //5
                            );
                    }
                }
            }

            //2018-07-09
            //check consitance
            foreach (var kvp in source.StockListBids)
            {
                int prec = kvp.Key;


                if (dest.StockListBids[prec] == null)
                {
                    continue;
                }

                //tempo for FORTS

                /*
                 * decimal maxBidPrice = dest.StockListBids[prec][0].Price;
                 *
                 * for (int i = 0; i < dest.StockListAsks[prec].Count; i++)
                 *  if (dest.StockListAsks[prec][i].Price <= maxBidPrice)
                 *      Log(instr, String.Format("ERROR ! ask<=maxBidPrice  prec={0} bid={1} ask={2}",
                 *                                         prec,
                 *                                         maxBidPrice,
                 *                                         dest.StockListAsks[prec][i].Price));
                 *
                 * decimal minAskPrice = dest.StockListAsks[prec][0].Price;
                 *
                 *
                 * for (int i = 0; i < dest.StockListBids[prec].Count; i++)
                 *  if (dest.StockListBids[prec][i].Price >= minAskPrice)
                 *      Log(instr, String.Format("ERROR ! bid >= minAskPrice prec={0} bid={1} ask={2}",
                 *                                         prec,
                 *                                         maxBidPrice,
                 *                                         dest.StockListAsks[prec][i].Price));
                 */
            }

            Log(instr, "==============================================================================================================================================================================================");
        }