void DrawStopGain(GraphicsWrapper g, ref PointF updatedImageDrawingPoint, Order order, float itemWidth, float itemMargin, float yToXScaling, CandleSignal cs, float lastBarX, bool drawOpening) { Image image = _imageUp; Brush brush = Brushes.Green; Pen dashedPen = _buyDashedPen; Pen pen = Pens.GreenYellow; image = _imageStopGain; //itemWidth += itemMargin; float imageHeight = 2 * (yToXScaling * itemWidth); //float imageHeight = (yToXScaling * itemWidth); //imageHeight =itemWidth; Brush brushx = Brushes.Yellow; // Gain tip should occur on the opposite side of arrow if (cs.Arrow == 1) { g.DrawImage(image, updatedImageDrawingPoint.X, updatedImageDrawingPoint.Y + (float)cs.BarData.High + (yToXScaling * itemWidth) + imageHeight, itemWidth, -imageHeight); updatedImageDrawingPoint.Y += 1.1f * imageHeight; } else { g.DrawImage(image, updatedImageDrawingPoint.X, updatedImageDrawingPoint.Y + (float)cs.BarData.Low - (yToXScaling * itemWidth), itemWidth, -imageHeight); updatedImageDrawingPoint.Y -= 1.1f * imageHeight; } }
void DrawStopLoss(GraphicsWrapper g, ref PointF updatedImageDrawingPoint, Order order, float itemWidth, float itemMargin, float yToXScaling, CandleSignal cs, float lastBarX, bool drawOpening) { Image image = _imageUp; Brush brush = Brushes.Green; Pen dashedPen = _buyDashedPen; Pen pen = Pens.GreenYellow; image = _imageStopLoss; float imageHeight = 2 * (yToXScaling * itemWidth); if (cs.Arrow == -1) { g.DrawImage(image, updatedImageDrawingPoint.X, updatedImageDrawingPoint.Y + (float)cs.BarData.High + (yToXScaling * itemWidth) + imageHeight, itemWidth, -imageHeight); updatedImageDrawingPoint.Y += 1.1f * imageHeight; } else { g.DrawImage(image, updatedImageDrawingPoint.X, updatedImageDrawingPoint.Y + (float)cs.BarData.Low - (yToXScaling * itemWidth), itemWidth, -imageHeight); updatedImageDrawingPoint.Y -= 1.1f * imageHeight; } }
//void DrawSignal(GraphicsWrapper g, ref PointF updatedImageDrawingPoint, Order order, float itemWidth, float itemMargin, // float yToXScaling, BarData orderBarData, float lastBarX, bool drawOpening) void DrawSignal(GraphicsWrapper g, ref PointF updatedImageDrawingPoint, Order order, float itemWidth, float itemMargin, float yToXScaling, CandleSignal cs, float lastBarX, bool drawOpening) { Image image = _imageUp; Brush brush = Brushes.Green; Pen dashedPen = _buyDashedPen; Pen pen = Pens.GreenYellow; if (order.IsBuy == false) { image = _imageDown; brush = Brushes.Red; pen = Pens.Red; dashedPen = _sellDashedPen; } //if (drawOpening == false) //{ if (cs.Arrow == -1) { image = _imageDown; } else { image = _imageUp; } float imageHeight = 4 * (yToXScaling * itemWidth); if (cs.Arrow == -1) { g.DrawImage(image, updatedImageDrawingPoint.X, updatedImageDrawingPoint.Y + (float)cs.BarData.High + (yToXScaling * itemWidth) + imageHeight, itemWidth, -imageHeight); updatedImageDrawingPoint.Y += 1.1f * imageHeight; } else { g.DrawImage(image, updatedImageDrawingPoint.X, updatedImageDrawingPoint.Y + (float)cs.BarData.Low - (yToXScaling * itemWidth), itemWidth, -imageHeight); updatedImageDrawingPoint.Y -= 1.1f * imageHeight; } }
public override void Draw(GraphicsWrapper g, int unitsUnification, RectangleF clippingRectangle, float itemWidth, float itemMargin) { PointF drawingPoint = new PointF(); lock (this) { Image image; foreach (float[] valueSet in ValueSets) { foreach (float value in valueSet) {// Images mode does not apply unit unification if (double.IsNaN(value) == false && drawingPoint.X >= clippingRectangle.X && drawingPoint.X <= clippingRectangle.X + clippingRectangle.Width && _images.ContainsKey((int)value)) { image = _images[(int)value]; g.DrawImage(image, drawingPoint.X + _imagesDisplacement.X - image.Width / 2, drawingPoint.Y + _imagesDisplacement.Y + (float)value); } drawingPoint.X += itemMargin + itemWidth; } } } }
public override void Draw(GraphicsWrapper g, int unitsUnification, RectangleF clippingRectangle, float itemWidth, float itemMargin) { PointF drawingPoint = new PointF(); lock (this) { Image image; foreach (float[] valueSet in ValueSets) { foreach (float value in valueSet) {// Images mode does not apply unit unification if (double.IsNaN(value) == false && drawingPoint.X >= clippingRectangle.X && drawingPoint.X <= clippingRectangle.X + clippingRectangle.Width && _images.ContainsKey((int)value)) { image = _images[(int)value]; g.DrawImage(image, drawingPoint.X + _imagesDisplacement.X - image.Width / 2, drawingPoint.Y + _imagesDisplacement.Y + (float)value); } drawingPoint.X += itemMargin + itemWidth; } } } }
void DrawOrder(GraphicsWrapper g, ref PointF updatedImageDrawingPoint, Order order, float itemWidth, float itemMargin, float yToXScaling, BarData orderBarData, float lastBarX, bool drawOpening) { Image image = _imageUp; Brush brush = Brushes.Green; Pen dashedPen = _buyDashedPen; Pen pen = Pens.GreenYellow; if (order.IsBuy == false) { image = _imageDown; brush = Brushes.Red; pen = Pens.Red; dashedPen = _sellDashedPen; } if (drawOpening == false) { image = _imageCross; } float price = (float)order.OpenPrice; if (drawOpening == false) { price = (float)order.ClosePrice; } if (drawOpening && _showPendingOrdersTracing && order.IsOpen) {// Open orders tracking line. PointF point1 = new PointF(updatedImageDrawingPoint.X + itemWidth / 2f, updatedImageDrawingPoint.Y + price); float sellPrice = (float)_dataProvider.Bid; if (order.IsBuy == false) { sellPrice = (float)_dataProvider.Ask; } PointF point2 = new PointF(lastBarX - itemWidth / 2f, updatedImageDrawingPoint.Y + sellPrice); g.DrawLine(dashedPen, point1, point2); } //if (drawOpening && _showClosedOrdersTracing && order.IsOpen == false) //{// Closed order tracking. // Close order tracing is implemented in main draw function. //} if (_showOrderSpot) { PointF basePoint = new PointF(updatedImageDrawingPoint.X, updatedImageDrawingPoint.Y + price); float height = (yToXScaling * itemWidth); if (order.IsBuy == false) { height = -height; } if (drawOpening) { g.FillPolygon(brush, new PointF[] { basePoint, new PointF(basePoint.X + itemWidth, basePoint.Y), new PointF(basePoint.X + (itemWidth / 2f), basePoint.Y + height) }); g.DrawPolygon(Pens.White, new PointF[] { basePoint, new PointF(basePoint.X + itemWidth, basePoint.Y), new PointF(basePoint.X + (itemWidth / 2f), basePoint.Y + height) }); // Take profit level. if (double.IsInfinity(order.SourceTakeProfit) == false && double.IsNaN(order.SourceTakeProfit) == false && order.SourceTakeProfit != 0) { g.DrawLine(pen, updatedImageDrawingPoint.X, updatedImageDrawingPoint.Y + (float)order.SourceTakeProfit, updatedImageDrawingPoint.X + itemWidth, updatedImageDrawingPoint.Y + (float)order.SourceTakeProfit); g.DrawLine(pen, updatedImageDrawingPoint.X + itemWidth / 2f, updatedImageDrawingPoint.Y + (float)order.SourceTakeProfit, updatedImageDrawingPoint.X + itemWidth / 2f, updatedImageDrawingPoint.Y + (float)order.SourceTakeProfit - height); } // Stop loss level. if (double.IsInfinity(order.SourceStopLoss) == false && double.IsNaN(order.SourceStopLoss) == false && order.SourceStopLoss != 0) { g.DrawLine(pen, updatedImageDrawingPoint.X, updatedImageDrawingPoint.Y + (float)order.SourceStopLoss, updatedImageDrawingPoint.X + itemWidth, updatedImageDrawingPoint.Y + (float)order.SourceStopLoss); g.DrawLine(pen, updatedImageDrawingPoint.X + itemWidth / 2f, updatedImageDrawingPoint.Y + (float)order.SourceStopLoss, updatedImageDrawingPoint.X + itemWidth / 2f, updatedImageDrawingPoint.Y + (float)order.SourceStopLoss + height); } } else { g.DrawRectangle(Pens.White, basePoint.X, basePoint.Y, itemWidth, yToXScaling * itemWidth); } } float imageHeight = 2 * (yToXScaling * itemWidth); if (_showOrderArrow) { // Draw up image. g.DrawImage(image, updatedImageDrawingPoint.X - (itemWidth / 2f), updatedImageDrawingPoint.Y + (float)orderBarData.Low - (yToXScaling * itemWidth), 2 * itemWidth, -imageHeight); updatedImageDrawingPoint.Y -= 1.2f * imageHeight; } }
void DrawOrder(GraphicsWrapper g, ref PointF updatedImageDrawingPoint, Order order, float itemWidth, float itemMargin, float yToXScaling, BarData orderBarData, float lastBarX, bool drawOpening) { Image image = _imageUp; Brush brush = Brushes.Green; Pen dashedPen = _buyDashedPen; Pen pen = Pens.GreenYellow; if (order.IsBuy == false) { image = _imageDown; brush = Brushes.Red; pen = Pens.Red; dashedPen = _sellDashedPen; } if (drawOpening == false) { image = _imageCross; } float price = (float)order.OpenPrice; if (drawOpening == false) { price = (float)order.ClosePrice; } if (drawOpening && _showPendingOrdersTracing && order.IsOpen) {// Open orders tracking line. PointF point1 = new PointF(updatedImageDrawingPoint.X + itemWidth / 2f, updatedImageDrawingPoint.Y + price); float sellPrice = (float)_dataProvider.Bid; if (order.IsBuy == false) { sellPrice = (float)_dataProvider.Ask; } PointF point2 = new PointF(lastBarX - itemWidth / 2f, updatedImageDrawingPoint.Y + sellPrice); g.DrawLine(dashedPen, point1, point2); } //if (drawOpening && _showClosedOrdersTracing && order.IsOpen == false) //{// Closed order tracking. // Close order tracing is implemented in main draw function. //} if (_showOrderSpot) { PointF basePoint = new PointF(updatedImageDrawingPoint.X, updatedImageDrawingPoint.Y + price); float height = (yToXScaling * itemWidth); if (order.IsBuy == false) { height = -height; } if (drawOpening) { g.FillPolygon(brush, new PointF[] { basePoint, new PointF(basePoint.X + itemWidth, basePoint.Y), new PointF(basePoint.X + (itemWidth / 2f), basePoint.Y + height) }); g.DrawPolygon(Pens.White, new PointF[] { basePoint, new PointF(basePoint.X + itemWidth, basePoint.Y), new PointF(basePoint.X + (itemWidth / 2f), basePoint.Y + height) }); // Take profit level. if (double.IsInfinity(order.SourceTakeProfit) == false && double.IsNaN(order.SourceTakeProfit) == false && order.SourceTakeProfit != 0) { g.DrawLine(pen, updatedImageDrawingPoint.X, updatedImageDrawingPoint.Y + (float)order.SourceTakeProfit, updatedImageDrawingPoint.X + itemWidth, updatedImageDrawingPoint.Y + (float)order.SourceTakeProfit); g.DrawLine(pen, updatedImageDrawingPoint.X + itemWidth / 2f, updatedImageDrawingPoint.Y + (float)order.SourceTakeProfit, updatedImageDrawingPoint.X + itemWidth / 2f, updatedImageDrawingPoint.Y + (float)order.SourceTakeProfit - height); } // Stop loss level. if (double.IsInfinity(order.SourceStopLoss) == false && double.IsNaN(order.SourceStopLoss) == false && order.SourceStopLoss != 0) { g.DrawLine(pen, updatedImageDrawingPoint.X, updatedImageDrawingPoint.Y + (float)order.SourceStopLoss, updatedImageDrawingPoint.X + itemWidth, updatedImageDrawingPoint.Y + (float)order.SourceStopLoss); g.DrawLine(pen, updatedImageDrawingPoint.X + itemWidth / 2f, updatedImageDrawingPoint.Y + (float)order.SourceStopLoss, updatedImageDrawingPoint.X + itemWidth / 2f, updatedImageDrawingPoint.Y + (float)order.SourceStopLoss + height); } } else { g.DrawRectangle(Pens.White, basePoint.X, basePoint.Y, itemWidth, yToXScaling * itemWidth); } } float imageHeight = 2 * (yToXScaling * itemWidth); if (_showOrderArrow) { // Draw up image. g.DrawImage(image, updatedImageDrawingPoint.X - (itemWidth / 2f), updatedImageDrawingPoint.Y + (float)orderBarData.Low - (yToXScaling * itemWidth), 2 * itemWidth, -imageHeight); updatedImageDrawingPoint.Y -= 1.2f * imageHeight; } }