public void SaveInXML(XmlElement parentNode, CandleChartControl owner) { var newNode = parentNode.AppendChild(parentNode.OwnerDocument.CreateElement("SpanWithText")); newNode.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("magic")).Value = Magic.ToString(); var atr = newNode.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("start")); atr.Value = StartIndex.ToString(); atr = newNode.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("end")); atr.Value = EndIndex.ToString(); atr = newNode.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("price")); atr.Value = Price.ToStringUniform(); atr = newNode.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("tstLeft")); atr.Value = TextLeft; atr = newNode.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("tstRight")); atr.Value = TextRight; if (!string.IsNullOrEmpty(Name)) { atr = newNode.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("name")); atr.Value = Name; } }
public void LoadFromXML(XmlElement itemNode, CandleChartControl owner) { if (itemNode.Attributes["magic"] != null) { Magic = itemNode.Attributes["magic"].Value.ToIntSafe() ?? 0; } if (itemNode.Attributes["start"] != null) { StartIndex = itemNode.Attributes["start"].Value.ToInt(); } if (itemNode.Attributes["end"] != null) { EndIndex = itemNode.Attributes["end"].Value.ToInt(); } if (itemNode.Attributes["price"] != null) { Price = itemNode.Attributes["price"].Value.ToFloatUniform(); } if (itemNode.Attributes["tstLeft"] != null) { TextLeft = itemNode.Attributes["tstLeft"].Value; } if (itemNode.Attributes["tstRight"] != null) { TextRight = itemNode.Attributes["TextRight"].Value; } }
public override string ActivateScript(CandleChartControl chart, PointD worldCoords) { this.chart = chart; startTime = chart.chart.StockSeries.GetCandleOpenTimeByIndex((int)worldCoords.X); CalcStatistics(); return(string.Empty); }
public ChartCommentEditDialog(ChartComment obj, CandleChartControl chart) : this() { comment = obj;//new ChartComment(); ChartComment.Copy(comment, obj); // отобразить содержание полей tbText.Text = comment.Text; btnColorPicker.BackColor = comment.ColorText; tbText.ForeColor = comment.ColorText; tbText.BackColor = chart.chart.BackColor; cbShowArrow.Checked = !comment.HideArrow; cbShowFrame.Checked = comment.DrawFrame; btnColorLine.ForeColor = comment.Color; btnColorFill.ForeColor = comment.ColorFill; tbMagic.Text = comment.Magic.ToString(); transparencyControl.Transparency = comment.FillTransparency; // настройки выпадающих списков //cbTextStyle.SelectedIndex = SeriesComment.FontBold var patterns = new CommentaryPatternsList().GetStandardValues(); if (patterns == null) { return; } var items = new object[patterns.Count]; patterns.CopyTo(items, 0); cbTemplates.Items.AddRange(items); }
public void SaveInXML(XmlElement parentNode, CandleChartControl owner) { var node = parentNode.AppendChild(parentNode.OwnerDocument.CreateElement("Asterisk")); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Name")).Value = Name; node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Text")).Value = Text; node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Sign")).Value = Sign; node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("magic")).Value = Magic.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("ColorLine")).Value = ColorLine.ToArgb().ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("ColorFill")).Value = ColorFill.ToArgb().ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("ColorText")).Value = ColorText.ToArgb().ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Price")).Value = Price.ToString(CultureProvider.Common); if (DateStart.HasValue) { node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("PivotTime")).Value = DateStart.Value.ToString("ddMMyyyy HHmmss", CultureProvider.Common); } node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Shape")).Value = Shape.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Transparency")).Value = Transparency.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("TransparencyText")).Value = TransparencyText.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Radius")).Value = Radius.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("magic")).Value = Magic.ToString(); }
public override string ActivateScript(CandleChartControl chart, PointD worldCoords) { this.chart = chart; scriptActivatedCoords = worldCoords; // найти робота / роботов на данный тикер / ТФ var robots = MainForm.Instance.RobotFarm.GetRobotCopies(); robots = robots.Where(r => r.Graphics.Any(g => g.a == chart.chart.Symbol && g.b == chart.chart.Timeframe)) .ToList(); if (robots.Count == 0) { return("Нет роботов для " + chart.Symbol + ":" + chart.Timeframe); } selectedBot = robots[0]; // если роботов несколько - предложить пользователю выбрать интересующего if (robots.Count > 1) { object selectedRobot; string inputText; if (!Dialogs.ShowComboDialog("Укажите робота", robots.Cast <object>().ToList(), out selectedRobot, out inputText)) { return("робот не выбран из списка"); } selectedBot = (BaseRobot)selectedRobot; } ShowRobotDataOnChart(); return(""); }
/// <summary> /// поставить отметку на графике /// </summary> private void ShowPriceOnChart(CandleChartControl chart, PointD worldCoords) { var text = PricePoint == PricePointType.A ? "A" : "B"; var name = "ScriptSetFiboMark" + text; // удалить старую отметку с графика int index; chart.seriesAsteriks.FindObject(a => a.Name == name, out index); if (index >= 0) { chart.seriesAsteriks.RemoveObjectByNum(index); } // добавить новую отметку var mark = new AsteriskTooltip(name, text) { Price = (float)worldCoords.Y, CandleIndex = (int)(Math.Round(worldCoords.X)), ColorLine = chart.chart.visualSettings.SeriesForeColor, Sign = text }; mark.ColorText = mark.ColorLine; mark.ColorFill = chart.chart.visualSettings.ChartBackColor; mark.Shape = AsteriskTooltip.ShapeType.Звезда; chart.seriesAsteriks.data.Add(mark); }
public override void AdjustColorScheme(CandleChartControl chart) { foreach (var obj in data) { obj.AjustColorScheme(chart); } }
public ChooseIndicatorDialog(CandleChartControl owner) : this() { this.owner = owner; SetupTreeGrid(); ChangeView(true); }
private void BtnUpdateSeriesClick(object sender, EventArgs e) { if (panelSeriesParams.Controls.Count == 0) { return; } var node = treeSeries.SelectedNode; if (node == null) { return; } // изменить настройки для серии foreach (GenericObjectEditor ctrl in panelSeriesParams.Controls) { var propInf = (PropertyInfo)ctrl.Tag; try { propInf.SetValue(null, ctrl.PropertyValue, null); } catch (Exception ex) { Logger.ErrorFormat("Update series value ({0}) error: {1}", ctrl.Title, ex); MessageBox.Show(string.Format(Localizer.GetString("MessageValueNotRecognizedFmt"), ctrl.Title)); } } // сохранить настройки var nodeXml = ToolSettingsStorageFile.LoadOrCreateNode(ToolSettingsStorageFile.NodeNameSeries); CandleChartControl.SaveSeriesSettingsInXml(nodeXml); ToolSettingsStorageFile.SaveXml(nodeXml.OwnerDocument); }
public SaveChartTemplate(CandleChartControl chart) { InitializeComponent(); Localizer.LocalizeControl(this); this.chart = chart; }
private static Series.Series GetOuterSeries(CandleChartControl chart, string seriesFullName) { if (string.IsNullOrEmpty(seriesFullName)) { return(null); } // получить серии от графика if (seriesFullName == Localizer.GetString("TitleCourse")) { return(chart.chart.StockSeries); } var nameParts = seriesFullName.Split(new[] { Separators.IndiNameDelimiter[0] }, StringSplitOptions.RemoveEmptyEntries); if (nameParts.Length < 2) { Logger.InfoFormat("GetOuterSeries (chart {0}, {1}): series \"{0}\" is bad-formatted", chart.Symbol, chart.Timeframe.ToString(), seriesFullName); return(null); } var indiName = nameParts[0]; var seriesName = nameParts[1]; var indi = chart.indicators.FirstOrDefault(i => i.UniqueName == indiName); if (indi == null) { return(null); } // найти серию return(indi.SeriesResult.FirstOrDefault(s => s.Name == seriesName)); }
/// <summary> /// уточнить цену /// </summary> private float RefinePrice(CandleChartControl chart, PointD worldCoords) { var price = (float)worldCoords.Y; if (RefineType == PriceRefineType.КакЕсть) { return(price); } var candleIndex = (int)(worldCoords.X + 0.5); if (candleIndex < 0 || candleIndex >= chart.chart.StockSeries.DataCount) { return(price); } var candle = chart.chart.StockSeries.Data.Candles[candleIndex]; if (RefineType == PriceRefineType.Закрытия) { return(candle.close); } var deltas = new [] { Math.Abs(candle.open - price), Math.Abs(candle.high - price), Math.Abs(candle.low - price), Math.Abs(candle.close - price) }; var minIndex = deltas.IndexOfMin(); return(minIndex == 0 ? candle.open : minIndex == 1 ? candle.high : minIndex == 2 ? candle.low : candle.close); }
public override string ActivateScript(CandleChartControl chart, PointD worldCoords) { if (!AccountStatus.Instance.isAuthorized) { MessageBox.Show("Не авторизован"); return("Не авторизован"); } var accountId = AccountStatus.Instance.accountID; var numStepsMax = (VolumeMax - VolumeMin) / VolumeStep; var rand = new Random(); var sb = new StringBuilder(); // закрытые сделки var closedOrders = MakeClosedOrders(chart, accountId, rand, numStepsMax); // SQL по закрытым сделкам MakeClosedOrdersSQL(closedOrders, accountId, sb); // найти все отметки на графике // и по ним сбацать "сделки" var positions = MakeMarketOrders(chart, accountId, rand, numStepsMax); // слепить SQL по открытым позам MakeMarketOrdersSQL(positions, accountId, sb); if (sb.Length > 0) { Clipboard.SetText(sb.ToString()); } return((positions.Count + closedOrders.Count) + " сделок скопировано в буфер обмена"); }
private List <MarketOrder> MakeMarketOrders(CandleChartControl chart, int accountId, Random rand, int numStepsMax) { var positions = new List <MarketOrder>(); foreach (var mark in chart.seriesAsteriks.data) { var side = mark.Shape == AsteriskTooltip.ShapeType.СтрелкаВниз ? -1 : mark.Shape == AsteriskTooltip.ShapeType.СтрелкаВверх ? 1 : 0; if (side == 0) { continue; } var pos = new MarketOrder { AccountID = accountId, Side = side, TimeEnter = mark.DateStart.Value, State = PositionState.Opened, PriceEnter = mark.Price, Symbol = chart.Symbol, Volume = VolumeMin }; // посчитать объем if (numStepsMax > 0) { pos.Volume += rand.Next(numStepsMax + 1) * VolumeStep; } positions.Add(pos); } return(positions); }
public override string ActivateScript(CandleChartControl chart, PointD worldCoords) { var dlg = new CalculatorForm(chart, worldCoords); dlg.ShowDialog(); return(string.Empty); }
public void AjustColorScheme(CandleChartControl chart) { var clBack = chart.chart.visualSettings.ChartBackColor; color = ChartControl.ChartVisualSettings.AdjustColor(color, clBack); colorText = ChartControl.ChartVisualSettings.AdjustColor(colorText, clBack); }
public void SaveInXML(XmlElement parentNode, CandleChartControl owner) { var node = parentNode.AppendChild(parentNode.OwnerDocument.CreateElement("ProjectionPair")); var attrName = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Name")); attrName.Value = Name; node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("isCorrection")).Value = isCorrection.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("isExtension")).Value = isExtension.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("hideFarParts")).Value = hideFarParts.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("markers")).Value = ((int)Markers).ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("magic")).Value = Magic.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Color")).Value = color.ToArgb().ToString(); // расширение - коррекция node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("LevelsProj")).Value = LevelsProj; node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("LevelsCorr")).Value = LevelsCorr; node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("HideLine")).Value = HideLine.ToString(); foreach (var point in points) { var nodePoint = node.AppendChild(parentNode.OwnerDocument.CreateElement("Point")); var time = owner.chart.StockSeries.GetCandleOpenTimeByIndex(point.a); var attrIndex = nodePoint.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Time")); attrIndex.Value = time.ToString("ddMMyyyy HHmmss", CultureProvider.Common); var attrPrice = nodePoint.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Price")); attrPrice.Value = point.b.ToString(CultureProvider.Common); } }
public ChartCommentEditDialog(ChartComment obj, CandleChartControl chart) : this() { comment = obj;//new ChartComment(); ChartComment.Copy(comment, obj); // отобразить содержание полей tbText.Text = comment.Text; btnColorPicker.BackColor = comment.ColorText; tbText.ForeColor = comment.ColorText; tbText.BackColor = chart.chart.BackColor; cbShowArrow.Checked = !comment.HideArrow; cbShowFrame.Checked = comment.DrawFrame; btnColorLine.ForeColor = comment.Color; btnColorFill.ForeColor = comment.ColorFill; tbMagic.Text = comment.Magic.ToString(); transparencyControl.Transparency = comment.FillTransparency; // настройки выпадающих списков //cbTextStyle.SelectedIndex = SeriesComment.FontBold var patterns = new CommentaryPatternsList().GetStandardValues(); if (patterns == null) return; var items = new object[patterns.Count]; patterns.CopyTo(items, 0); cbTemplates.Items.AddRange(items); }
public void LoadFromXML(XmlElement itemNode, CandleChartControl owner) { if (itemNode.Attributes["Name"] != null) { Name = itemNode.Attributes["Name"].Value; } if (itemNode.Attributes["Color"] != null) { color = Color.FromArgb(int.Parse(itemNode.Attributes["Color"].Value)); } if (itemNode.Attributes["isCorrection"] != null) { isCorrection = bool.Parse(itemNode.Attributes["isCorrection"].Value); } if (itemNode.Attributes["isExtension"] != null) { isExtension = bool.Parse(itemNode.Attributes["isExtension"].Value); } if (itemNode.Attributes["hideFarParts"] != null) { hideFarParts = bool.Parse(itemNode.Attributes["hideFarParts"].Value); } if (itemNode.Attributes["magic"] != null) { Magic = itemNode.Attributes["magic"].Value.ToIntSafe() ?? 0; } if (itemNode.Attributes["markers"] != null) { Markers = (MarkerPlacement)(itemNode.Attributes["hideFarParts"].Value.ToIntSafe() ?? 0); } // расширение - коррекция if (itemNode.Attributes["LevelsProj"] != null) { LevelsProj = itemNode.Attributes["LevelsProj"].Value; } if (itemNode.Attributes["LevelsCorr"] != null) { LevelsCorr = itemNode.Attributes["LevelsCorr"].Value; } if (itemNode.Attributes["HideLine"] != null) { HideLine = itemNode.Attributes["HideLine"].Value.ToBoolSafe() ?? false; } foreach (XmlElement pointNode in itemNode.ChildNodes) { var timeStr = pointNode.Attributes["Time"].Value; var time = DateTime.ParseExact(timeStr, "ddMMyyyy HHmmss", CultureProvider.Common); var index = owner.chart.StockSeries.GetIndexByCandleOpen(time); var price = pointNode.Attributes["Price"].Value.ToFloatUniform(); points.Add(new Cortege2 <int, float> { a = index, b = price }); } CalculateProjections(); }
public override IChartInteractiveObject LoadObject(XmlElement objectNode, CandleChartControl owner, bool trimObjectsOutOfHistory = false) { var obj = new FiboSpan(this); obj.LoadFromXML(objectNode, owner); data.Add(obj); return(obj); }
public override IChartInteractiveObject LoadObject(XmlElement objectNode, CandleChartControl owner, bool trimObjectsOutOfHistory = false) { var obj = new TurnBar(new List <int>(), true, Chart); obj.LoadFromXML(objectNode, owner); barsKey.Add(obj); return(obj); }
public ApplyChartTemplate(CandleChartControl candleChartControl) { InitializeComponent(); Localizer.LocalizeControl(this); candleChart = candleChartControl; symbol = candleChartControl.Symbol; LoadTemplateNames(); }
public CandleMenuWindow(CandleChartControl ownerChart, int candleIndex) { InitializeComponent(); this.ownerChart = ownerChart; this.candleIndex = candleIndex; SetupChart(); ShowCandleData(); }
public void AjustColorScheme(CandleChartControl chart) { var clBack = chart.chart.visualSettings.ChartBackColor; colorLine = ChartControl.ChartVisualSettings.AdjustColor(colorLine, clBack); colorText = ChartControl.ChartVisualSettings.AdjustColor(colorText, clBack); colorFill = ChartControl.ChartVisualSettings.AdjustColor(colorFill, chart.chart.visualSettings.SeriesForeColor); }
private void AddScriptsToChart(CandleChartControl chart) { var allScripts = ScriptManager.Instance.GetScripts(); var chartScripts = allScripts.Where(s => s.ScriptTarget == TerminalScript.TerminalScriptTarget.График || s.ScriptTarget == TerminalScript.TerminalScriptTarget.Тикер); var menuTitles = chartScripts.Select(s => s.Title).ToList(); var menuTags = chartScripts.Cast <object>().ToList(); chart.SetupScriptMenu(menuTitles, menuTags); }
public ChartForm() { InitializeComponent(); Localizer.LocalizeControl(this); CandleChartControl.ResetControlTags(this); chart.UniqueId = Guid.NewGuid().ToString(); chart.updateTickersCacheForRobots = MainForm.Instance.UpdateTickersCacheForRobots; panesTabCtrl.Show(); }
private List <MarketOrder> MakeClosedOrders(CandleChartControl chart, int accountId, Random rand, int numStepsMax) { var positions = new List <MarketOrder>(); foreach (var mark in chart.seriesMarker.data) { var side = (int)mark.Side; if (mark.exitPair == null) { continue; } var pos = new MarketOrder { AccountID = accountId, Side = side, TimeEnter = mark.DateStart.Value, State = PositionState.Closed, ExitReason = PositionExitReason.Closed, PriceEnter = (float)mark.Price, Symbol = chart.Symbol, Volume = VolumeMin }; // посчитать объем if (numStepsMax > 0) { pos.Volume += rand.Next(numStepsMax + 1) * VolumeStep; } // найти отметку выхода var exitMarkId = mark.exitPair.Value; var exitMarker = chart.seriesMarker.data.First(m => m.id == exitMarkId); pos.PriceExit = (float)exitMarker.Price - DalSpot.Instance.GetDefaultSpread(pos.Symbol) * pos.Side; pos.TimeExit = exitMarker.DateStart.Value; // посчитать результат в пунктах, валюте депозита и тд. var profitCounter = pos.Side * (pos.PriceExit.Value - pos.PriceEnter) * pos.Volume; var profitDepo = profitCounter; if (pos.Symbol.StartsWith("USD")) { profitDepo = profitCounter / pos.PriceExit.Value; } var profitPoints = DalSpot.Instance.GetPointsValue(pos.Symbol, pos.Side * (pos.PriceExit.Value - pos.PriceEnter)); pos.ResultDepo = profitDepo; pos.ResultPoints = profitPoints; pos.ResultDepo = profitDepo; pos.ResultBase = profitCounter; positions.Add(pos); } return(positions); }
private DateTime?GetTimeByWorldCoord(CandleChartControl chart, PointD worldCoords) { var candleIndex = (int)(worldCoords.X + 0.5); if (candleIndex < 0 || candleIndex >= chart.chart.StockSeries.DataCount) { return(null); } var candle = chart.chart.StockSeries.Data.Candles[candleIndex]; return(candle.timeClose.AddMinutes(2)); }
public CalculatorForm(CandleChartControl chart, PointD worldCoords) : this() { this.chart = chart; this.worldCoords = worldCoords; var time = chart.chart.StockSeries.GetCandleOpenTimeByIndex((int)worldCoords.X); var price = worldCoords.Y; dpTimeCalc.Value = time; dpTimeExpires.Value = time.AddMinutes(chart.Timeframe.TotalMinutes * 200); tbPriceAtTime.Text = price.ToStringUniformPriceFormat(true); tbStrikePrice.Text = tbPriceAtTime.Text; }
public override string ActivateScript(CandleChartControl chart, PointD worldCoords) { this.chart = chart; pointsSum.Clear(); pointCost = DalSpot.Instance.GetPointsValue(chart.Symbol, 1f); PlaceMarkers(); // подбить результат var avgPoints = pointsSum.Count == 0 ? 0 : pointsSum.Average(); var sumPoints = pointsSum.Sum(); return($"{sumPoints:F1} пунктов всего, в среднем {avgPoints:F1}"); }
public void GetIndexByCandleOpen() { var candleChartControl = new CandleChartControl { Timeframe = new BarSettings { Intervals = new List <int> { 1 }, Title = "M1" } }; var chartControl = new ChartControl { Owner = candleChartControl, Timeframe = new BarSettings { Intervals = new List <int> { 1 }, Title = "M1" } }; stockSeries.Owner = new Pane("Pane", chartControl); foreach (var date in trueDate) { Assert.AreEqual(date.Key, stockSeries.GetIndexByCandleOpen(date.Value), "not a correct value for " + date.Value); } foreach (var date in fallDate) { Assert.AreNotEqual(date.Key, stockSeries.GetIndexByCandleOpen(date.Value), "not a correct value for " + date.Value); } stockSeries.Data.Clear(); Assert.AreEqual(0, stockSeries.GetIndexByCandleOpen(new DateTime(2013, 9, 30, 1, 8, 0)), "must be 0 for 2013/9/30 01:08:00 after 'Clear()'"); stockSeries.Data.Add(0, 0, 0, 0, new DateTime(2013, 10, 30, 1, 8, 0)); Assert.AreEqual(0, stockSeries.GetIndexByCandleOpen(new DateTime(2013, 9, 30, 1, 8, 0)), "must be 0 for 2013/9/30 01:08:00"); Assert.AreNotEqual(0, stockSeries.GetIndexByCandleOpen(new DateTime(2014, 11, 30, 1, 8, 0)), "must be !0 for 2013/11/30 01:08:00"); // У первой свечи время закрытия сейчас не задано. stockSeries.Data.Add(0, 0, 0, 0, new DateTime(2013, 10, 30, 1, 9, 0)); stockSeries.Data.Candles.Last().timeClose = new DateTime(2013, 10, 30, 1, 10, 0); stockSeries.Data.Add(0, 0, 0, 0, new DateTime(2013, 10, 30, 1, 10, 0)); stockSeries.Data.Candles.Last().timeClose = new DateTime(2013, 10, 30, 1, 11, 0); Assert.AreEqual(1, stockSeries.GetIndexByCandleOpen(new DateTime(2013, 10, 30, 1, 9, 0))); Assert.AreEqual(0, stockSeries.GetIndexByCandleOpen(new DateTime(2013, 10, 30, 1, 8, 30))); stockSeries.Owner.Owner.Owner = null; Assert.AreEqual(0, stockSeries.GetIndexByCandleOpen(new DateTime(2013, 11, 30, 1, 8, 0))); }
public bool OnMouseUp(List<SeriesEditParameter> parameters, MouseEventArgs e, CandleChartControl.ChartTool activeChartTool, Keys modifierKeys, out IChartInteractiveObject objectToEdit) { if (activeChartTool != linkedChartTool) { objectToEdit = null; return false; } return OnMouseUp(parameters, e, modifierKeys, out objectToEdit); }
public bool OnMouseDown(MouseEventArgs e, List<SeriesEditParameter> parameters, CandleChartControl.ChartTool activeChartTool, Keys modifierKeys, out IChartInteractiveObject objectToEdit) { if (activeChartTool == linkedChartTool) { OnMouseDown(parameters, e, modifierKeys, out objectToEdit); return true; } objectToEdit = null; return false; }
public override void ProcessLoadingCompleted(CandleChartControl owner) { // построить по ключевым барам разворотные бары CountTurnBars(); }
public override void ProcessLoadingCompleted(CandleChartControl owner) { }
public void LoadFromXML(XmlElement itemNode, CandleChartControl owner) { if (itemNode.Attributes["Name"] != null) Name = itemNode.Attributes["Name"].Value; if (itemNode.Attributes["Color"] != null) color = Color.FromArgb(int.Parse(itemNode.Attributes["Color"].Value)); if (itemNode.Attributes["isCorrection"] != null) isCorrection = bool.Parse(itemNode.Attributes["isCorrection"].Value); if (itemNode.Attributes["isExtension"] != null) isExtension = bool.Parse(itemNode.Attributes["isExtension"].Value); if (itemNode.Attributes["hideFarParts"] != null) hideFarParts = bool.Parse(itemNode.Attributes["hideFarParts"].Value); if (itemNode.Attributes["magic"] != null) Magic = itemNode.Attributes["magic"].Value.ToIntSafe() ?? 0; if (itemNode.Attributes["markers"] != null) Markers = (MarkerPlacement)(itemNode.Attributes["hideFarParts"].Value.ToIntSafe() ?? 0); // расширение - коррекция if (itemNode.Attributes["LevelsProj"] != null) LevelsProj = itemNode.Attributes["LevelsProj"].Value; if (itemNode.Attributes["LevelsCorr"] != null) LevelsCorr = itemNode.Attributes["LevelsCorr"].Value; if (itemNode.Attributes["HideLine"] != null) HideLine = itemNode.Attributes["HideLine"].Value.ToBoolSafe() ?? false; foreach (XmlElement pointNode in itemNode.ChildNodes) { var timeStr = pointNode.Attributes["Time"].Value; var time = DateTime.ParseExact(timeStr, "ddMMyyyy HHmmss", CultureProvider.Common); var index = owner.chart.StockSeries.GetIndexByCandleOpen(time); var price = pointNode.Attributes["Price"].Value.ToFloatUniform(); points.Add(new Cortege2<int, float> { a = index, b = price }); } CalculateProjections(); }
public void SaveInXML(XmlElement parentNode, CandleChartControl owner) { var node = parentNode.AppendChild(parentNode.OwnerDocument.CreateElement("ProjectionPair")); var attrName = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Name")); attrName.Value = Name; node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("isCorrection")).Value = isCorrection.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("isExtension")).Value = isExtension.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("hideFarParts")).Value = hideFarParts.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("markers")).Value = ((int) Markers).ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("magic")).Value = Magic.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Color")).Value = color.ToArgb().ToString(); // расширение - коррекция node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("LevelsProj")).Value = LevelsProj; node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("LevelsCorr")).Value = LevelsCorr; node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("HideLine")).Value = HideLine.ToString(); foreach (var point in points) { var nodePoint = node.AppendChild(parentNode.OwnerDocument.CreateElement("Point")); var time = owner.chart.StockSeries.GetCandleOpenTimeByIndex(point.a); var attrIndex = nodePoint.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Time")); attrIndex.Value = time.ToString("ddMMyyyy HHmmss", CultureProvider.Common); var attrPrice = nodePoint.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Price")); attrPrice.Value = point.b.ToString(CultureProvider.Common); } }
public override void ProcessLoadingCompleted(CandleChartControl owner) { MakeProjections(); }
public void LoadFromXML(XmlElement itemNode, CandleChartControl owner) { if (itemNode.Attributes["name"] != null) Name = itemNode.Attributes["name"].Value; if (itemNode.Attributes["magic"] != null) Magic = itemNode.Attributes["magic"].Value.ToIntSafe() ?? 0; if (itemNode.Attributes["color"] != null) Color = Color.FromArgb(int.Parse(itemNode.Attributes["color"].Value)); if (itemNode.Attributes["brushColor"] != null) BrushColor = Color.FromArgb(int.Parse(itemNode.Attributes["brushColor"].Value)); BrushAlpha = itemNode.GetAttributeString("brushAlpha").ToIntSafe() ?? 192; if (itemNode.Attributes["BuildTangent"] != null) BuildTangent = itemNode.Attributes["BuildTangent"].Value.ToBool(); foreach (XmlElement child in itemNode.ChildNodes) { var timeStr = child.Attributes["time"].Value; if (string.IsNullOrEmpty(timeStr)) continue; var time = DateTime.ParseExact(timeStr, "ddMMyyyy HHmmss", CultureProvider.Common); var index = owner.chart.StockSeries.GetIndexByCandleOpen(time); var price = float.Parse(child.Attributes["price"].Value, CultureProvider.Common); // порядок не нарушится? points.Add(new PointF(index, price)); } }
public void SaveInXML(XmlElement parentNode, CandleChartControl owner) { var node = parentNode.AppendChild(parentNode.OwnerDocument.CreateElement("Ellipse")); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("name")).Value = Name; node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("magic")).Value = Magic.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("color")).Value = Color.ToArgb().ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("brushColor")).Value = BrushColor.ToArgb().ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("brushAlpha")).Value = BrushAlpha.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("BuildTangent")).Value = BuildTangent.ToString(); for (int i = 0; i < points.Count; i++) { var nodePoint = node.AppendChild(parentNode.OwnerDocument.CreateElement(string.Format("point{0}", i))); var time = owner.chart.StockSeries.GetCandleOpenTimeByIndex((int)Math.Round(points[i].X)); nodePoint.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("time")).Value = time.ToString("ddMMyyyy HHmmss", CultureProvider.Common); nodePoint.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("price")).Value = points[i].Y.ToString(CultureProvider.Common); } }
public void SaveInXML(XmlElement parentNode, CandleChartControl owner) { var node = parentNode.AppendChild(parentNode.OwnerDocument.CreateElement("Marker")); var attrName = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("name")); attrName.Value = Name; node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("magic")).Value = Magic.ToString(); var attrPrice = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("price")); attrPrice.Value = Price.ToString(CultureProvider.Common); var attrComment = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("comment")); attrComment.Value = Comment; var attrType = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("type")); attrType.Value = MarkerType.ToString(); var attrSide = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("side")); attrSide.Value = Side.ToString(); var time = dateStart == new DateTime() ? owner.chart.StockSeries.GetCandleOpenTimeByIndex((int)candleIndex) : dateStart; var attrStart = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("time")); attrStart.Value = time.ToString("ddMMyyyy HHmmss", CultureProvider.Common); var attrId = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("id")); attrId.Value = id.ToString(); if (exitPair.HasValue) { var attrExitId = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("exitId")); attrExitId.Value = exitPair.ToString(); } }
public override void LoadFromXML(XmlElement itemNode, CandleChartControl owner) { base.LoadFromXML(itemNode, owner); if (itemNode.Attributes["series"] != null) Series = itemNode.Attributes["series"].Value; if (itemNode.Attributes["time"] != null) { var timeStr = itemNode.Attributes["time"].Value; var time = DateTime.ParseExact(timeStr, "ddMMyyyy HHmmss", CultureProvider.Common); var index = owner.chart.StockSeries.GetIndexByCandleOpen(time); Point3 = new PointD(index, double.Parse(itemNode.Attributes["y"].Value, CultureProvider.Common)); } }
public override IChartInteractiveObject LoadObject(XmlElement objectNode, CandleChartControl owner, bool trimObjectsOutOfHistory = false) { var obj = new TurnBar(new List<int>(), true, Chart); obj.LoadFromXML(objectNode, owner); barsKey.Add(obj); return obj; }
public SummaryPositionDropWindow(CandleChartControl chart) : this() { this.chart = chart; SetupGrid(); }
public override void SaveInXML(XmlElement parentNode, CandleChartControl owner) { base.SaveInXML(parentNode, owner); var node = parentNode.ChildNodes[parentNode.ChildNodes.Count - 1]; var seriesAttr = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("series")); seriesAttr.Value = Series; if (Point3.HasValue) { var pointXAttr = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("time")); var time = owner.chart.StockSeries.GetCandleOpenTimeByIndex((int)Point3.Value.X); pointXAttr.Value = time.ToString("ddMMyyyy HHmmss", CultureProvider.Common); var pointYAttr = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("y")); pointYAttr.Value = Point3.Value.Y.ToString(CultureProvider.Common); } }
private static Series.Series GetOuterSeries(CandleChartControl chart, string seriesFullName) { if (string.IsNullOrEmpty(seriesFullName)) return null; // получить серии от графика if (seriesFullName == Localizer.GetString("TitleCourse")) return chart.chart.StockSeries; var nameParts = seriesFullName.Split(new[] { Separators.IndiNameDelimiter[0] }, StringSplitOptions.RemoveEmptyEntries); if (nameParts.Length < 2) { Logger.InfoFormat("GetOuterSeries (chart {0}, {1}): series \"{0}\" is bad-formatted", chart.Symbol, chart.Timeframe.ToString(), seriesFullName); return null; } var indiName = nameParts[0]; var seriesName = nameParts[1]; var indi = chart.indicators.FirstOrDefault(i => i.UniqueName == indiName); if (indi == null) return null; // найти серию return indi.SeriesResult.FirstOrDefault(s => s.Name == seriesName); }
public void LoadFromXML(XmlElement itemNode, CandleChartControl owner) { if (itemNode.Attributes["name"] != null) Name = itemNode.Attributes["name"].Value; if (itemNode.Attributes["magic"] != null) Magic = itemNode.Attributes["magic"].Value.ToIntSafe() ?? 0; if (itemNode.Attributes["series"] != null) if (!string.IsNullOrEmpty(itemNode.Attributes["series"].Value)) Series = itemNode.Attributes["series"].Value.ToDecimalArrayUniform().ToList(); if (itemNode.Attributes["color"] != null) Color = Color.FromArgb(int.Parse(itemNode.Attributes["color"].Value)); if (itemNode.Attributes["firstTimeStamp"] != null) { var timeStr = itemNode.Attributes["firstTimeStamp"].Value; var time = DateTime.ParseExact(timeStr, "ddMMyyyy HHmmss", CultureProvider.Common); var index = owner.chart.StockSeries.GetIndexByCandleOpen(time); points.Add(new PointD(index, double.Parse(itemNode.Attributes["firstY"].Value, CultureProvider.Common))); } if (itemNode.Attributes["secondTimeStamp"] != null) { var timeStr = itemNode.Attributes["secondTimeStamp"].Value; var time = DateTime.ParseExact(timeStr, "ddMMyyyy HHmmss", CultureProvider.Common); var index = owner.chart.StockSeries.GetIndexByCandleOpen(time); points.Add(new PointD(index, double.Parse(itemNode.Attributes["secondY"].Value, CultureProvider.Common))); } }
public override void AdjustColorScheme(CandleChartControl chart) { foreach (var obj in data) obj.AjustColorScheme(chart); }
public void LoadFromXML(XmlElement itemNode, CandleChartControl owner) { if (itemNode.Attributes["Name"] != null) Name = itemNode.Attributes["Name"].Value; if (itemNode.Attributes["magic"] != null) Magic = itemNode.Attributes["magic"].Value.ToIntSafe() ?? 0; if (itemNode.Attributes["Text"] != null) Text = itemNode.Attributes["Text"].Value; if (itemNode.Attributes["TextCustom"] != null) TextCustom = itemNode.Attributes["TextCustom"].Value; if (itemNode.Attributes["Color"] != null) color = Color.FromArgb(int.Parse(itemNode.Attributes["Color"].Value)); if (itemNode.Attributes["ColorText"] != null) ColorText = Color.FromArgb(int.Parse(itemNode.Attributes["ColorText"].Value)); if (itemNode.Attributes["PivotPrice"] != null) PivotPrice = double.Parse(itemNode.Attributes["PivotPrice"].Value, CultureProvider.Common); if (itemNode.Attributes["PivotTime"] != null) { var timeStr = itemNode.Attributes["PivotTime"].Value; var time = DateTime.ParseExact(timeStr, "ddMMyyyy HHmmss", CultureProvider.Common); var index = owner.chart.StockSeries.GetIndexByCandleOpen(time); PivotIndex = index; } if (itemNode.Attributes["ArrowLength"] != null) ArrowLength = int.Parse(itemNode.Attributes["ArrowLength"].Value); if (itemNode.Attributes["ArrowAngle"] != null) ArrowAngle = double.Parse(itemNode.Attributes["ArrowAngle"].Value, CultureProvider.Common); if (itemNode.Attributes["HideArrow"] != null) HideArrow = bool.Parse(itemNode.Attributes["HideArrow"].Value); if (itemNode.Attributes["HideBox"] != null) HideBox = bool.Parse(itemNode.Attributes["HideBox"].Value); if (itemNode.Attributes["DrawFrame"] != null) DrawFrame = bool.Parse(itemNode.Attributes["DrawFrame"].Value); if (itemNode.Attributes["ColorFill"] != null) ColorFill = Color.FromArgb(int.Parse(itemNode.Attributes["ColorFill"].Value)); if (itemNode.Attributes["FillTransparency"] != null) FillTransparency = int.Parse(itemNode.Attributes["FillTransparency"].Value); }
public void LoadFromXML(XmlElement itemNode, CandleChartControl owner) { if (itemNode.Attributes["name"] != null) Name = itemNode.Attributes["name"].Value; if (itemNode.Attributes["magic"] != null) Magic = itemNode.Attributes["magic"].Value.ToIntSafe() ?? 0; if (itemNode.Attributes["price"] != null) Price = double.Parse(itemNode.Attributes["price"].Value, CultureProvider.Common); if (itemNode.Attributes["comment"] != null) Name = itemNode.Attributes["comment"].Value; if (itemNode.Attributes["type"] != null) MarkerType = (DealMarkerType)Enum.Parse(typeof(DealMarkerType), itemNode.Attributes["type"].Value); if (itemNode.Attributes["side"] != null) Side = (DealType)Enum.Parse(typeof(DealType), itemNode.Attributes["side"].Value); if (itemNode.Attributes["time"] != null) { dateStart = DateTime.ParseExact(itemNode.Attributes["time"].Value, "ddMMyyyy HHmmss", CultureProvider.Common); candleIndex = owner.chart.StockSeries.GetIndexByCandleOpen(dateStart); } if (itemNode.Attributes["id"] != null) id = int.Parse(itemNode.Attributes["id"].Value); if (itemNode.Attributes["exitId"] != null) exitPair = int.Parse(itemNode.Attributes["exitId"].Value); }
public void AjustColorScheme(CandleChartControl chart) { var clBack = chart.chart.visualSettings.ChartBackColor; Color = ChartControl.ChartVisualSettings.AdjustColor(Color, clBack); }
public void SaveInXML(XmlElement parentNode, CandleChartControl owner) { var node = parentNode.AppendChild(parentNode.OwnerDocument.CreateElement("Comment")); var attrName = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Name")); attrName.Value = Name; var attrText = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Text")); attrText.Value = Text; var attrColor = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Color")); attrColor.Value = color.ToArgb().ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("ColorText")).Value = ColorText.ToArgb().ToString(); var attrPivotPrice = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("PivotPrice")); attrPivotPrice.Value = PivotPrice.ToString(CultureProvider.Common); var attrPivotTime = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("PivotTime")); attrPivotTime.Value = owner.chart.StockSeries.GetCandleOpenTimeByIndex((int)Math.Round(PivotIndex)).ToString( "ddMMyyyy HHmmss", CultureProvider.Common); var attrArrowLength = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("ArrowLength")); attrArrowLength.Value = ArrowLength.ToString(); var attrArrowAngle = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("ArrowAngle")); attrArrowAngle.Value = ArrowAngle.ToString(CultureProvider.Common); var attrHideArrow = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("HideArrow")); attrHideArrow.Value = HideArrow.ToString(); var attrHideBox = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("HideBox")); attrHideBox.Value = HideBox.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("DrawFrame")).Value = DrawFrame.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("ColorFill")).Value = ColorFill.ToArgb().ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("FillTransparency")).Value = FillTransparency.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("TextCustom")).Value = TextCustom; node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("magic")).Value = Magic.ToString(); }
public void SaveInXML(XmlElement parentNode, CandleChartControl owner) { var node = parentNode.AppendChild(parentNode.OwnerDocument.CreateElement("FiboSpan")); var nameAttr = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("name")); nameAttr.Value = Name; node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("magic")).Value = Magic.ToString(); var seriesAttr = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("series")); seriesAttr.Value = SeriesHumanReadable; var colorAttr = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("color")); colorAttr.Value = Color.ToArgb().ToString(); if (points.Count > 0) { var time = owner.chart.StockSeries.GetCandleOpenTimeByIndex((int) points[0].X); var axAttr = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("firstTimeStamp")); axAttr.Value = time.ToString("ddMMyyyy HHmmss", CultureProvider.Common); var ayAttr = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("firstY")); ayAttr.Value = points[0].Y.ToString(CultureProvider.Common); } if (points.Count > 1) { var time = owner.chart.StockSeries.GetCandleOpenTimeByIndex((int)points[1].X); var axAttr = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("secondTimeStamp")); axAttr.Value = time.ToString("ddMMyyyy HHmmss", CultureProvider.Common); var ayAttr = node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("secondY")); ayAttr.Value = points[1].Y.ToString(CultureProvider.Common); } }
public void SaveInXML(XmlElement parentNode, CandleChartControl owner) { var node = parentNode.AppendChild(parentNode.OwnerDocument.CreateElement("TurnBar")); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("magic")).Value = Magic.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("KeyBar")).Value = IsKeyBar.ToString(); node.Attributes.Append(parentNode.OwnerDocument.CreateAttribute("Name")).Value = Name; foreach (var candle in candleIndexes) { node.AppendChild(parentNode.OwnerDocument.CreateElement("index")).Attributes.Append( parentNode.OwnerDocument.CreateAttribute("value")).Value = candle.ToString(); } }
public override IChartInteractiveObject LoadObject(XmlElement objectNode, CandleChartControl owner, bool trimObjectsOutOfHistory = false) { var obj = new FiboSpan(this); obj.LoadFromXML(objectNode, owner); data.Add(obj); return obj; }
public void LoadFromXML(XmlElement itemNode, CandleChartControl owner) { IsKeyBar = bool.Parse(itemNode.Attributes["KeyBar"].Value); Name = itemNode.Attributes["Name"].Value; if (itemNode.Attributes["magic"] != null) Magic = itemNode.Attributes["magic"].Value.ToIntSafe() ?? 0; if (itemNode.Attributes["magic"] != null) Magic = itemNode.Attributes["magic"].Value.ToIntSafe() ?? 0; foreach (XmlElement node in itemNode.ChildNodes) { candleIndexes.Add(node.Attributes["value"].Value.ToInt()); } }
public CandleChartControlTag(CandleChartControl chart) { this.chart = chart; }
public void AjustColorScheme(CandleChartControl chart) { }