I have this code:
public class BackGroundGradient : Indicator { #region Variables public Color CL_1 = Color.DimGray; //Color.Lavender; public Color CL_2 = Color.Black; //Color.LightSkyBlue; private Rectangle bounds; private int max; private int min; private Graphics graphics; internal Color Color1; internal Color Color2; private DataSeries MAHolder; private int Period = 42; #endregion #region Initialize & OnBarUpdate protected override void Initialize() { Overlay = true; CalculateOnBarClose = true; MAHolder = new DataSeries(this); public override void Plot(Graphics graphics, Rectangle bounds, double min, double max) { if (Bars == null) return; { base.Plot(graphics,bounds,min,max); /* if(High[0] > MAHolder[0] && Low[0] > MAHolder[0]) { Color2 = FadeColour ;//Color.PaleGoldenrod; Color1 = LongColour;// Color.DodgerBlue; } else if(Low[0] < MAHolder[0] && High[0] < MAHolder[0]) { Color2 = FadeColour ;// Color.PaleGoldenrod; Color1 = ShortColour;// Color.Firebrick; } else { Color2 = Color.Transparent; Color1 = Color.Yellow; }*/ Color1 = CL_1; Color2 = CL_2; /* For full explanation of below please see http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.blend.aspx */ //float[] relativeIntensities = { 0.7f, 0.5f, 0.7f, 0.5f, 0.1f };//original float[] relativeIntensities = { 0.2f, 0.4f, 0.8f, 0.8f, 0.4f,0.2f };//top to bottom - higher nos = higher amt of Color2 float[] relativePositions = { 0.0f, 0.2f, 0.4f, 0.6f,0.8f, 1.0f };// change these to alter 'mix'NB must match array number above Blend myBlend = new Blend(); myBlend.Factors = relativeIntensities; myBlend.Positions = relativePositions; LinearGradientBrush linGrBrush = new LinearGradientBrush ( new Point(0, bounds.X), new Point(0,bounds.Width), Color1, Color2); linGrBrush.Blend = myBlend; Pen pen = new Pen(linGrBrush); graphics.FillRectangle(linGrBrush,bounds);// simplified this.ZOrder = -1; } } } protected override void OnBarUpdate() { //MAHolder.Set(EMA(Period)[0]); } #endregion #region Plot Override public override void Plot(Graphics graphics, Rectangle bounds, double min, double max) { if (Bars == null) return; { base.Plot(graphics,bounds,min,max); /* if(High[0] > MAHolder[0] && Low[0] > MAHolder[0]) { Color2 = FadeColour ;//Color.PaleGoldenrod; Color1 = LongColour;// Color.DodgerBlue; } else if(Low[0] < MAHolder[0] && High[0] < MAHolder[0]) { Color2 = FadeColour ;// Color.PaleGoldenrod; Color1 = ShortColour;// Color.Firebrick; } else { Color2 = Color.Transparent; Color1 = Color.Yellow; } */ Color1 = CL_1; Color2 = CL_2; /* For full explanation of below please see http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.blend.aspx */ //float[] relativeIntensities = { 0.7f, 0.5f, 0.7f, 0.5f, 0.1f };//original float[] relativeIntensities = { 0.2f, 0.4f, 0.8f, 0.8f, 0.4f,0.2f };//top to bottom - higher nos = higher amt of Color2 float[] relativePositions = { 0.0f, 0.2f, 0.4f, 0.6f,0.8f, 1.0f };// change these to alter 'mix'NB must match array number above Blend myBlend = new Blend(); myBlend.Factors = relativeIntensities; myBlend.Positions = relativePositions; LinearGradientBrush linGrBrush = new LinearGradientBrush ( new Point(0, bounds.X), new Point(0,bounds.Width), Color1, Color2); linGrBrush.Blend = myBlend; Pen pen = new Pen(linGrBrush); graphics.FillRectangle(linGrBrush,bounds);// simplified this.ZOrder = -1; } } #endregion #region Properties [Description("EMA Period")] [NinjaTrader.Gui.Design.DisplayName("EMA length")] [Category ("Parameters")] public int period { get {return Period;} set {Period = value;} } [XmlIgnore]// very important [Category("Text & Colors")] public Color longColour { get { return CL_1; } set { CL_1 = value; } } [XmlIgnore] [Browsable(false)] public string longColourSerialize { get { return NinjaTrader.Gui.Design.SerializableColor.ToString(CL_1); } set { CL_1 = NinjaTrader.Gui.Design.SerializableColor.FromString(value); } } [XmlIgnore] [Category("Text & Colors")] public Color fadeColour { get { return CL_2; } set { CL_2 = value; } } [XmlIgnore] [Browsable(false)] public string FadeColourSerialize { get { return NinjaTrader.Gui.Design.SerializableColor.ToString(CL_2); } set { CL_2 = NinjaTrader.Gui.Design.SerializableColor.FromString(value); } } /* [XmlIgnore] [Category("Text & Colors")] public Color shortColour { get { return ShortColour; } set { ShortColour = value; } } [XmlIgnore] [Browsable(false)] public string ShortColourSerialize { get { return NinjaTrader.Gui.Design.SerializableColor.ToString(ShortColour); } set { ShortColour = NinjaTrader.Gui.Design.SerializableColor.FromString(value); } } */ #endregion }
Situation is:
1. I save workspace, exit from NT
2. I start NT and i see charts, which is in saved workspace and this indicator on chart, but Plot doesn't override after starting terminal - why?
Comment