コード例 #1
0
        private void BuildAlertLevels(float?currPrice)
        {
            alertsList.Clear();
            if (currPrice == null)
            {
                return;
            }
            var prices = AlertLevels.ToFloatArrayUniform();

            foreach (var price in prices)
            {
                alertsList.Add(price > currPrice
                                   ? new AlertLevel()
                {
                    Price = price, LevelType = AlertLevelType.FromDown
                }
                                   : new AlertLevel()
                {
                    Price = price, LevelType = AlertLevelType.FromUp
                });
            }
        }
コード例 #2
0
        public void BuildSeries(ChartControl chart)
        {
            series.data.Clear();
            alertsList.Clear();
            BuildAlertLevels(chart.StockSeries.CurrentPriceString.ToFloatUniformSafe());
            var prices = AlertLevels.ToDecimalArrayUniform();

            foreach (var price in prices)
            {
                // строим линии
                var line = new TrendLine
                {
                    LineStyle      = TrendLine.TrendLineStyle.Линия,
                    LineColor      = clLine,
                    ShapeAlpha     = 192,
                    ShapeFillColor = ClLine
                };
                line.AddPoint(0, (double)price);
                line.AddPoint(owner.StockSeries.DataCount, (double)price);
                series.data.Add(line);
            }
        }
コード例 #3
0
        public void OnCandleUpdated(CandleData updatedCandle, List <CandleData> newCandles)
        {
            if (alertsList.Count == 0)
            {
                BuildAlertLevels(updatedCandle.close);
            }
            if (series.data.Count == 0)
            {
                var prices = AlertLevels.ToDecimalArrayUniform();
                foreach (var level in prices)
                {
                    // строим линии
                    var line = new TrendLine
                    {
                        LineStyle      = TrendLine.TrendLineStyle.Линия,
                        LineColor      = clLine,
                        ShapeAlpha     = 192,
                        ShapeFillColor = ClLine
                    };
                    line.AddPoint(0, (double)level);
                    line.AddPoint(owner.StockSeries.DataCount, (double)level);
                    series.data.Add(line);
                }
            }

            // проверяем срабатывание уровней
            for (var i = 0; i < alertsList.Count; i++)
            {
                if (!alertsList[i].CheckLevel(updatedCandle.close))
                {
                    continue;
                }

                try
                {
                    var wc = new WebClient
                    {
                        Credentials = new NetworkCredential("*****@*****.**", "Br0ker$201!")
                    };
                    var url = AppConfig.GetStringParam("Publish.Url", "http://forexinvest.ru:8095");
                    //wc.Credentials = CredentialCache.DefaultCredentials;
                    var serverRequest = WebRequest.Create(url);
                    serverRequest.Credentials = new NetworkCredential("*****@*****.**", "Br0ker$201!");
                    var serverResponse = serverRequest.GetResponse();
                    serverResponse.Close();

                    // отправляем теперь команду на публикацию
                    var msg    = HttpUtility.UrlEncode(string.Format("Сработал сигнал по {0}: текущая котировка {1}", owner.Symbol, updatedCandle.close), Encoding.GetEncoding(1251));
                    var phones = HttpUtility.UrlEncode(SendSmsPhones, Encoding.GetEncoding(1251));
                    var emails = HttpUtility.UrlEncode(SendEmailList, Encoding.GetEncoding(1251));
                    var qs     = new NameValueCollection {
                        { "command", SendCommandType.Alert.ToString() }, { "msg", msg }, { "sms", SendSmsFlag.ToString() },
                        { "email", SendEmailFlag.ToString() }, { "phones", phones }, { "emails", emails }
                    };
                    wc.QueryString = qs;
                    var bret = wc.UploadString(url, "POST", string.Empty);
                    wc.Dispose();
                }
                catch (Exception ex)
                {
                    Logger.Error("Ошибка отправки алерта на сервер:", ex);
                }
                alertsList.RemoveAt(i);
                AlertLevels = string.Join(" ", alertsList.Select(a => a.Price.ToStringUniform()));
                i--;
            }
        }