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