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