Пример #1
0
        KaiTrade.Interfaces.IProduct GetProductFromXML(string xmlData)
        {
            K2DataObjects.Product product = null;
            try
            {
                System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                doc.LoadXml(xmlData);

                product = new K2DataObjects.Product();

                System.Xml.XmlElement productElem = doc.GetElementById("Product");

                foreach (System.Xml.XmlAttribute attribute in doc.DocumentElement.Attributes)
                {
                    SetProductValue(product, attribute);

                }

            }
            catch (Exception myE)
            {
                m_Log.Error("runPlayBack", myE);
            }
            return product;
        }
Пример #2
0
        /// <summary>
        /// Write a file of JSON encoded ProductData
        /// </summary>
        /// <param name="myVenueCode"></param>
        /// <param name="myFilePath"></param>
        public void ToFileJSON(string myVenueCode, string myFilePath)
        {
            FileStream file;
            StreamWriter writer;
            try
            {

                file = new FileStream(myFilePath, FileMode.Create, FileAccess.Write);
                writer = new StreamWriter(file);

                foreach (KaiTrade.Interfaces.IProduct myProd in m_Products.Values)
                {

                    if (myProd.TradeVenue == myVenueCode)
                    {
                        K2DataObjects.Product prodData = new K2DataObjects.Product();
                        prodData.From(myProd);
                        string prodJSON = Newtonsoft.Json.JsonConvert.SerializeObject(prodData);
                        writer.WriteLine(prodJSON);
                        writer.Flush();
                    }
                    else if (myVenueCode=="*")
                    {
                        K2DataObjects.Product prodData = new K2DataObjects.Product();
                        prodData.From(myProd);
                        string prodJSON = Newtonsoft.Json.JsonConvert.SerializeObject(prodData);
                        writer.WriteLine(prodJSON);
                        writer.Flush();
                    }
                }
                writer.Close();
                file.Close();

            }
            catch (Exception myE)
            {
                m_Log.Error("ProductManager.ToFile:JSON", myE);
            }
            writer = null;
            file = null;
        }
Пример #3
0
        private void genSampleConfig()
        {
            SimulatorConfig config = new SimulatorConfig();
            SimulatorProduct mySimProduct = new SimulatorProduct();
            CannedData cannedData = new CannedData();
            K2DataObjects.Product myProduct = new K2DataObjects.Product();

            myProduct.Symbol = "EPZ8";
            myProduct.CFICode = "FXXXXX";
            myProduct.MMY = "20081219";
            myProduct.Exchange = "CME";
            myProduct.TradeVenue = "CQG";
            myProduct.Mnemonic = "EMINI";
            myProduct.LongName = "CME eMini SP500";
            myProduct.SecurityID = "ZPZ8";

            //mySimProduct.InstrDef = myProduct;
            mySimProduct.HighPrice = 99.99M;
            mySimProduct.LowPrice = 98.99M;
            mySimProduct.IsAutoFill = true;
            mySimProduct.IsCannedData = true;
            mySimProduct.RunAsMarket = true;
            mySimProduct.Mnemonic = "EPZ8";

            cannedData.CannedDataFile = "filepath";
            cannedData.RepeatOnEnd = true;
            cannedData.RunInterval = 100;
            cannedData.RunRealTime = true;
            cannedData.PlayOnSubscribe = true;

            mySimProduct.CannedData = cannedData;

            config.SimulatorProduct.Add(mySimProduct);

            string configData = JsonConvert.SerializeObject(config);

            //m_Config.
               // _config.ToXmlFile("KTSimConfigTEMP.xml");
        }
Пример #4
0
        /// <summary>
        /// Load products from a CSV file (Venue,Mnemonic,CFI,Exch,Symbol,SecID,MMY,Strk,Curr,TickSize,LotSize,TickValue,LongDescName)
        /// </summary>
        /// <param name="filePath"></param>
        public void LoadProductsCSV(string filePath)
        {
            try
            {
                FileStream prodFile;
                StreamReader prodReader;
                prodFile = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                prodReader = new StreamReader(prodFile);
                string myLine = "";
                KaiTrade.Interfaces.IProduct product = null;
                while (!prodReader.EndOfStream)
                {
                    try
                    {
                        myLine = prodReader.ReadLine();
                        string[] prodData = myLine.Split(',');
                        if (prodData.Length > 8)
                        {
                            if (m_MnemonicProduct.ContainsKey(prodData[1]))
                            {
                                product = m_MnemonicProduct[prodData[1]] as KaiTrade.Interfaces.IProduct;
                            }
                            else
                            {
                                product = new K2DataObjects.Product();
                            }

                            product.TradeVenue = prodData[0];
                            product.Exchange = prodData[3];
                            product.CFICode = prodData[2];
                            product.SecurityID = prodData[5];
                            product.IDSource = prodData[0];
                            product.Mnemonic = prodData[1];
                            product.MMY = prodData[6];
                            if (prodData[7].Length > 0)
                            {
                                product.StrikePrice = decimal.Parse(prodData[7]);
                            }
                            product.Currency = prodData[8];

                            m_Products.Add(product.Identity, product);

                            m_MnemonicProduct.Add(product.Mnemonic, product);

                            if (product != null)
                            {
                                if (prodData.Length > 9)
                                {
                                    product.TickSize = decimal.Parse(prodData[9]);
                                }
                                if (prodData.Length > 10)
                                {
                                    product.PriceFeedQuantityMultiplier = int.Parse(prodData[10]);
                                }
                                if (prodData.Length > 11)
                                {
                                    product.TickValue = decimal.Parse(prodData[11]);
                                }
                                if (prodData.Length > 12)
                                {
                                    product.LongName = prodData[12];
                                }
                            }
                        }
                    }
                    catch (Exception)
                    {
                    }
                }
                //DoUpdate("CREATE", product.Identity);
            }
            catch (Exception myE)
            {
                m_Log.Error("LoadProductsCSV", myE);
            }
        }
Пример #5
0
        /// <summary>
        /// Create a product based on its symbol
        /// </summary>
        /// <param name="myUserName"></param>
        /// <param name="myTradeVenue"></param>
        /// <param name="myExchange"></param>
        /// <param name="mySymbol"></param>
        /// <returns></returns>
        public KaiTrade.Interfaces.IProduct CreateProductWithSymbol(string myUserName, string myTradeVenue, string myExchange, string mySymbol)
        {
            KaiTrade.Interfaces.IProduct myProduct = new K2DataObjects.Product();
            try
            {
                myProduct.TradeVenue = myTradeVenue;
                myProduct.Exchange = myExchange;
                myProduct.Symbol = mySymbol;

                string myMnemonic = myProduct.Mnemonic;
                // if they specify a user name for the product it overrides the mnemonic generated
                if (myUserName.Length > 0)
                {
                    myMnemonic = myUserName;
                }
                m_Products.Add(myProduct.Identity, myProduct);
                myProduct.Mnemonic = myMnemonic;
                m_MnemonicProduct.Add(myMnemonic, myProduct);
                DoUpdate("CREATE", myProduct.Identity);
            }
            catch (Exception myE)
            {
                m_Log.Error("CreateProduct", myE);
            }
            return myProduct;
        }
Пример #6
0
 public KaiTrade.Interfaces.IProduct CreateProduct(string myMnemonic)
 {
     KaiTrade.Interfaces.IProduct myProduct = new K2DataObjects.Product();
     try
     {
         m_Products.Add(myProduct.Identity, myProduct);
         myProduct.Mnemonic = myMnemonic;
         m_MnemonicProduct.Add(myMnemonic, myProduct);
         DoUpdate("CREATE", myProduct.Identity);
     }
     catch (Exception myE)
     {
         m_Log.Error("CreateProduct", myE);
     }
     return myProduct;
 }
Пример #7
0
 /// <summary>
 /// Make a clone of a product
 /// </summary>
 /// <param name="ID">identity of the product we will clone</param>
 /// <returns></returns>
 public KaiTrade.Interfaces.IProduct CloneProduct(string ID)
 {
     KaiTrade.Interfaces.IProduct newProduct = null;
     try
     {
         KaiTrade.Interfaces.IProduct srcProduct = this.GetProduct(ID);
         if (srcProduct != null)
         {
             newProduct = new K2DataObjects.Product();
             string newID = newProduct.Identity;
             newProduct.From(srcProduct);
             newProduct.Identity = newID;
         }
         DoUpdate("CREATE", newProduct.Identity);
     }
     catch (Exception myE)
     {
         m_Log.Error("CreateProduct", myE);
     }
     return newProduct;
 }
Пример #8
0
        /// <summary>
        /// Add a product based on its product data - an exception will be thrown if the product exists
        /// otherwise it return the product added
        /// </summary>
        /// <param name="productData"></param>
        /// <returns></returns>
        public string AddProductX(KaiTrade.Interfaces.IProduct productData)
        {
            try
            {
                // is the product already there?
                if (m_MnemonicProduct.ContainsKey(productData.Mnemonic))
                {
                    throw new Exception("product already exists");
                }

                KaiTrade.Interfaces.IProduct product = new K2DataObjects.Product();
                productData.To(product);
                m_Products.Add(product.Identity, product);
                m_MnemonicProduct.Add(productData.Mnemonic, product);
                DoUpdate("ADD", product.Identity);
                return product.Identity;
            }
            catch(Exception)
            {
            }
            return "";
        }