my indicator does not plot. I get the following error message when i try to plot it :
Error on calling the 'OnBarUpdate' method for indicator 'test2' on bar 10 : Object reference not set to an instance of an object.
Here is the code :
[Description("Enter the description of your new custom indicator here")]
public class test2 : Indicator
{
#region Variables
// Wizard generated variables
private int period = 10; // Default setting for Period
// User defined variables (add any user defined variables below)
private DataSeries Var50;
private DataSeries Var51;
private int Var49 = 1;
private int Var52 =10;
private int Var53 =10;
private double Var54 = 0.0;
private double Var55 = 0.0;
private double Var56 = 0.0;
private double Var57 = 0.0;
#endregion
/// <summary>
/// This method is used to configure the indicator and is called once before any bar data is loaded.
/// </summary>
protected override void Initialize()
{
Add(new Plot(Color.FromKnownColor(KnownColor.Red), PlotStyle.Hash, "Var38"));
Add(new Plot(Color.FromKnownColor(KnownColor.LimeGreen), PlotStyle.Hash, "Var39"));
Add(new Plot(Color.FromKnownColor(KnownColor.Red), PlotStyle.Hash, "Var40"));
Add(new Plot(Color.FromKnownColor(KnownColor.LimeGreen), PlotStyle.Hash, "Var41"));
Add(new Plot(Color.FromKnownColor(KnownColor.Magenta), PlotStyle.Hash, "Var59"));
CalculateOnBarClose = true;
Overlay = true;
PriceTypeSupported = false;
}
/// <summary>
/// Called on each bar update event (incoming tick)
/// </summary>
protected override void OnBarUpdate()
{
if (CurrentBar<period)
return;
Var50.Set(AverageFC(Low,period)[0]);
Var51.Set(AverageFC(High,period)[0]);
if (Var49 == -1 && CrossAbove(Close,Var51[0],1)) {Var49 = 1;}
if (Var49 == 1 && CrossBelow(Close,Var50[0],1)) {Var49 = -1;}
if (CurrentBar>150) {
double Var37 = MAX(High,150)[0];
double Var36 = MIN(Low,150)[0];
if (Var37 != Var54 && Var52 >= 10)
{
Var54 = Var37;
Var52=0;
Var56= ATR(Close,period)[0];
}
if (Var36 != Var55 && Var53 >= 10)
{
Var55 = Var37;
Var53=0;
Var57= ATR(Close,period)[0];
}
Var52++;
Var53++;
Var38.Set(Var54-Var56*0.50);
Var39.Set(Var54+Var56*0.50);
Var40.Set(Var55-Var57*0.50);
Var41.Set(Var55+Var57*0.50);
if (Var49 ==1) { Var59[0]=Var50[0]; }
if (Var49 ==-1) { Var59[0]=Var51[0]; }
}
}
May someone help ?
Another question : I would like to plot only the last value on the right of the chart (some kind of S/R but not overlaid on the price). Is there a way to set a right margin to the chart ? If so, I would really appreciate some advice I can start from.
Comment