private void Form1_Load(object sender, EventArgs e) { StreamReader fileReader = new StreamReader(".\\Indicators.csv"); String line = null; while (!fileReader.EndOfStream) { line = fileReader.ReadLine(); String[] tokens = line.Split(','); IndicatorNode indNode = new IndicatorNode(); indNode.indicator = tokens[0].Trim(); indNode.word = tokens[1].Trim(); indicatorList.Add(indNode); } fileReader.Close(); }
private void InitializeTreeView() { StockNode treeNode1; foreach (string entry in this.theme.Keys) { if (entry.ToUpper().EndsWith("GRAPH")) { GraphNode treeNode = new GraphNode(entry, this.graphMenuStrip, Color.White, Color.LightGray, true, Color.LightGray, GraphChartMode.BarChart); if (entry.ToUpper().Contains("VOLUME")) { treeNode.ImageKey = "VH"; treeNode.SelectedImageKey = "VH"; } this.treeView1.Nodes.Add(treeNode); foreach (string line in this.theme[entry]) { try { string[] fields = line.Split('|'); switch (fields[0].ToUpper()) { case "GRAPH": string[] colorItem = fields[1].Split(':'); treeNode.GraphBackgroundColor = Color.FromArgb(int.Parse(colorItem[0]), int.Parse(colorItem[1]), int.Parse(colorItem[2]), int.Parse(colorItem[3])); colorItem = fields[2].Split(':'); treeNode.GraphTextBackgroundColor = Color.FromArgb(int.Parse(colorItem[0]), int.Parse(colorItem[1]), int.Parse(colorItem[2]), int.Parse(colorItem[3])); treeNode.GraphShowGrid = bool.Parse(fields[3]); colorItem = fields[4].Split(':'); treeNode.GraphGridColor = Color.FromArgb(int.Parse(colorItem[0]), int.Parse(colorItem[1]), int.Parse(colorItem[2]), int.Parse(colorItem[3])); treeNode.GraphMode = (GraphChartMode)Enum.Parse(typeof(GraphChartMode), fields[5]); if (treeNode.Text.ToUpper() == "CLOSEGRAPH") { if (fields.Length >= 7) { treeNode.SecondaryPen = GraphCurveType.PenFromString(fields[6]); } else { treeNode.SecondaryPen = new Pen(Color.DarkGoldenrod, 1); } } break; case "DATA": if (treeNode.Text.ToUpper() == "CLOSEGRAPH") { if (fields[1] == "CLOSE") { treeNode1 = new CurveNode(fields[1], null, GraphCurveType.PenFromString(fields[2]), bool.Parse(fields[3])); treeNode.Nodes.Add(treeNode1); } else { if (bool.Parse(fields[3])) // Normaly Other than close is not visible... { treeNode1 = new CurveNode(fields[1], null, GraphCurveType.PenFromString(fields[2]), bool.Parse(fields[3])); treeNode.Nodes.Add(treeNode1); } } } else { if (fields[1] != "VOLUME" && bool.Parse(fields[3])) // Normaly Other than close is not visible... { treeNode1 = new CurveNode(fields[1], null, GraphCurveType.PenFromString(fields[2]), bool.Parse(fields[3])); treeNode.Nodes.Add(treeNode1); } } break; case "INDICATOR": { IStockIndicator stockIndicator = (IStockIndicator)StockViewableItemsManager.GetViewableItem(line); treeNode1 = new IndicatorNode(stockIndicator.Name, this.indicatorMenuStrip, stockIndicator); for (int i = 0; i < stockIndicator.SeriesCount; i++) { CurveNode curveNode = new CurveNode(stockIndicator.SerieNames[i], null, stockIndicator.SeriePens[i], true, stockIndicator.SerieVisibility[i]); treeNode1.Nodes.Add(curveNode); curveNode.ImageKey = treeNode1.ImageKey; curveNode.SelectedImageKey = treeNode1.SelectedImageKey; } treeNode.Nodes.Add(treeNode1); } break; case "PAINTBAR": { IStockPaintBar stockPaintBar = (IStockPaintBar)StockViewableItemsManager.GetViewableItem(line); treeNode1 = new PaintBarsNode(stockPaintBar.Name, this.indicatorMenuStrip, stockPaintBar); for (int i = 0; i < stockPaintBar.SeriesCount; i++) { CurveNode curveNode = new CurveNode(stockPaintBar.SerieNames[i], null, stockPaintBar.SeriePens[i], true, stockPaintBar.SerieVisibility[i]); treeNode1.Nodes.Add(curveNode); curveNode.ImageKey = treeNode1.ImageKey; curveNode.SelectedImageKey = treeNode1.SelectedImageKey; } treeNode.Nodes.Add(treeNode1); } break; case "TRAILSTOP": { IStockTrailStop stockTrailStop = (IStockTrailStop)StockViewableItemsManager.GetViewableItem(line); treeNode1 = new TrailStopsNode(stockTrailStop.Name, this.indicatorMenuStrip, stockTrailStop); for (int i = 0; i < stockTrailStop.SeriesCount; i++) { CurveNode curveNode = new CurveNode(stockTrailStop.SerieNames[i], null, stockTrailStop.SeriePens[i], false, true); treeNode1.Nodes.Add(curveNode); curveNode.ImageKey = treeNode1.ImageKey; curveNode.SelectedImageKey = treeNode1.SelectedImageKey; } treeNode.Nodes.Add(treeNode1); } break; case "DECORATOR": { IStockDecorator stockDecorator = (IStockDecorator)StockViewableItemsManager.GetViewableItem(line); treeNode1 = new DecoratorNode(stockDecorator.Name, this.indicatorMenuStrip, stockDecorator); for (int i = 0; i < stockDecorator.SeriesCount; i++) { treeNode1.Nodes.Add(new CurveNode(stockDecorator.SerieNames[i], null, stockDecorator.SeriePens[i], true, stockDecorator.SerieVisibility[i])); } for (int i = 0; i < stockDecorator.EventCount; i++) { treeNode1.Nodes.Add(new EventNode(stockDecorator.EventNames[i], null, stockDecorator.EventPens[i], true, stockDecorator.EventVisibility[i])); } foreach (TreeNode childNode in treeNode.Nodes) { if (childNode.Text == stockDecorator.DecoratedItem) { childNode.Nodes.Add(treeNode1); break; } } } break; case "TRAIL": { IStockTrail stockTrail = (IStockTrail)StockViewableItemsManager.GetViewableItem(line); treeNode1 = new TrailNode(stockTrail.Name, this.indicatorMenuStrip, stockTrail); for (int i = 0; i < stockTrail.SeriesCount; i++) { treeNode1.Nodes.Add(new CurveNode(stockTrail.SerieNames[i], null, stockTrail.SeriePens[i], true, true)); } foreach (TreeNode childNode in treeNode.Nodes) { if (childNode.Text == stockTrail.TrailedItem) { childNode.Nodes.Add(treeNode1); break; } } } break; case "LINE": treeNode.Nodes.Add(new LineNode("LINE_" + fields[1], this.indicatorMenuStrip, GraphCurveType.PenFromString(fields[2]), float.Parse(fields[1]))); break; default: continue; } } catch (System.Exception e) { StockLog.Write(e); } } } } foreach (TreeNode node in this.treeView1.Nodes) { node.Expand(); } this.treeView1.SelectedNode = treeView1.Nodes[0]; }
void addIndicatorToolStripMenuItem_Click(object sender, System.EventArgs e) { AddIndicatorDlg addDlg; StockNode treeNode = (StockNode)this.treeView1.SelectedNode; switch (treeNode.Text) { case "CloseGraph": addDlg = new AddIndicatorDlg(true); break; case "VolumeGraph": return; default: addDlg = new AddIndicatorDlg(false); break; } if (addDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { StockNode stockNode = (StockNode)this.treeView1.SelectedNode; IStockIndicator stockIndicator = StockIndicatorManager.CreateIndicator(addDlg.IndicatorName); if (stockIndicator == null) { return; } if (stockIndicator.DisplayTarget != IndicatorDisplayTarget.PriceIndicator) { // Only one indicator1Name per graph (except data serie) (multiple ema, BB, ....) List<StockNode> nodeList = new List<StockNode>(); foreach (StockNode node in stockNode.Nodes) { if (node.Type == NodeType.Indicator || node.Type == NodeType.Line) { nodeList.Add(node); } } foreach (StockNode node in nodeList) { stockNode.Nodes.Remove(node); } } StockNode indicatorNode = new IndicatorNode(stockIndicator.Name, this.indicatorMenuStrip, stockIndicator); stockNode.Nodes.Add(indicatorNode); int i = 0; foreach (string curveName in stockIndicator.SerieNames) { indicatorNode.Nodes.Add(new CurveNode(curveName, null, stockIndicator.SeriePens[i], true)); i++; } indicatorNode.Expand(); if (stockIndicator.HorizontalLines != null) { foreach (HLine line in stockIndicator.HorizontalLines) { string lineName = "LINE_" + line.Level; bool alreadyExist = false; foreach (TreeNode node in stockNode.Nodes) { if (node.Text == lineName) { alreadyExist = true; break; } } if (!alreadyExist) { stockNode.Nodes.Add(new LineNode(lineName, this.indicatorMenuStrip, line.LinePen, line.Level)); } } } this.treeView1.SelectedNode = indicatorNode; } }
public void ScoreUpdate(RoundScoreUpdatedEvent e, RoundNode node, [JoinByBattle] BattleWithoutLimitNode battleWithoutLimit, [JoinByBattle] IndicatorNode indicator, [JoinByBattle] ICollection <TeamNode> teams) { int redScore = 0; int blueScore = 0; foreach (TeamNode node2 in teams) { TeamColor teamColor = node2.teamColor.TeamColor; if (teamColor == TeamColor.RED) { redScore = node2.teamScore.Score; continue; } if (teamColor == TeamColor.BLUE) { blueScore = node2.teamScore.Score; } } indicator.teamBattleScoreIndicator.UpdateScore(blueScore, redScore, Mathf.Max(blueScore, redScore)); }
public void InitIndicator(NodeAddedEvent e, BattleWithoutLimitNode battleWithoutLimit, [Context, JoinByBattle] RoundNode round, [Context, JoinByBattle] IndicatorNode indicator) { int scoreRed = battleWithoutLimit.battleScore.ScoreRed; int scoreBlue = battleWithoutLimit.battleScore.ScoreBlue; indicator.teamBattleScoreIndicator.UpdateScore(scoreBlue, scoreRed, Mathf.Max(scoreRed, scoreBlue)); }
public void InitIndicator(NodeAddedEvent e, BattleWithLimitNode battleWithLimit, [Context, JoinByBattle] RoundNode round, [Context, JoinByBattle] IndicatorNode indicator) { indicator.teamBattleScoreIndicator.UpdateScore(battleWithLimit.battleScore.ScoreBlue, battleWithLimit.battleScore.ScoreRed, battleWithLimit.scoreLimit.ScoreLimit); }