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"));
            }
        }
Beispiel #2
0
        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);
            }
        }