private void BtnSaveClick(object sender, EventArgs e) { var doc = new XmlDocument(); var root = (XmlElement)doc.AppendChild(doc.CreateElement("objects")); chart.SaveObjects(root); // подготовить имя файла saveFileDialog.FileName = string.Format("{0} {1} [{2}]", Localizer.GetString("TitleObjectsSmall"), chart.chart.Symbol, chart.chart.Timeframe); // сохранить документ в файл if (saveFileDialog.ShowDialog() != DialogResult.OK) { return; } try { doc.Save(saveFileDialog.FileName); } catch (Exception ex) { Logger.ErrorFormat("Ошибка сохранения объектов графика ({0}): {1}", saveFileDialog.FileName, ex); MessageBox.Show(string.Format(Localizer.GetString("MessageErrorSavingChartObjectsFmt"), ex.Message), Localizer.GetString("TitleError")); } }
private static void OnPublishTradeSignal(CandleChartControl sender) { if (!AccountStatus.Instance.isAuthorized) { return; } // проверить, какие сигналы может рассылать пользователь с указанного акаунта var signals = TradeSharpAccount.Instance.proxy.GetUserOwnedPaidServices(AccountStatus.Instance.Login); if (signals == null || signals.Count == 0) { MessageBox.Show( string.Format(Localizer.GetString("MessageUnableToSendSignalsFromAccountFmt"), AccountStatus.Instance.accountID), Localizer.GetString("TitleWarning"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // открыть форму публикации сигнала object selSignal; string selectedText; if (!Dialogs.ShowComboDialog(Localizer.GetString("MessageSelectTradeSignalCategory"), signals.Cast <object>().ToList(), out selSignal, out selectedText, true)) { return; } if (selSignal == null) { return; } var srvId = ((PaidService)selSignal).Id; var symbol = sender.Symbol; var timeframe = sender.Timeframe; // получить XML прогноза var doc = new XmlDocument(); var docNode = (XmlElement)doc.AppendChild(doc.CreateElement("forecast")); var nodeForecast = (XmlElement)docNode.AppendChild(doc.CreateElement(TradeSignalXml.TagNameForecast)); var nodeObjects = (XmlElement)docNode.AppendChild(doc.CreateElement(TradeSignalXml.TagNameObjects)); nodeForecast.Attributes.Append(doc.CreateAttribute(TradeSignalXml.AttributeUpdateTime)).Value = DateTime.Now.ToStringUniform(); // сохранить объекты sender.SaveObjects(nodeObjects); // всем объектам прописать Magic, равный категории торговых сигналов foreach (XmlElement nodeSeries in nodeObjects.ChildNodes) { foreach (XmlElement nodeObject in nodeSeries.ChildNodes) { //if (nodeObject.Attributes["magic"] != null) nodeObject.Attributes["magic"].Value = srvId.ToString(); } } // сохранить XML в строку var forecastXml = doc.ToStringUniform(TradeSignalXml.DefaultEncoding); // сохранить XML на сервер if (TradeSignalReceiver.PutForecast(srvId, symbol, timeframe, forecastXml)) { MessageBox.Show(Localizer.GetString("MessageTradeSignalIsSaved")); } else { MessageBox.Show(Localizer.GetString("MessageFailedToSaveTradeSignal"), Localizer.GetString("TitleError"), MessageBoxButtons.OK, MessageBoxIcon.Error); } }