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; }
/// <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; }
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"); }
/// <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); } }
/// <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; }
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; }
/// <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; }
/// <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 ""; }