using crossabove and crossbelow within if and else statements, when the price reaches a certain level of the external channel, is it possible?
what I have achieved so far:
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Description = NinjaTrader.Custom.Resource.NinjaScriptIndicatorDe scriptionKeltnerChannel;
Name = "KeltnerChannelEMAwColorAndHalfline";
Period = 52;
IsOverlay = true;
IsSuspendedWhileInactive = true;
OffsetMultiplier = 3.5;
RegionBrush = Brushes.WhiteSmoke;
Opacity = 20;
AddPlot(Brushes.White, NinjaTrader.Custom.Resource.KeltnerChannelMidline) ;
AddPlot(Brushes.White, NinjaTrader.Custom.Resource.NinjaScriptIndicatorUp per);
AddPlot(Brushes.White, NinjaTrader.Custom.Resource.NinjaScriptIndicatorLo wer);
AddPlot(new Stroke(Brushes.Black, DashStyleHelper.Dash, 1, 70), PlotStyle.Hash, "UpperHalfline");
AddPlot(new Stroke(Brushes.Black, DashStyleHelper.Dash, 1, 70), PlotStyle.Hash, "LowerHalfline");
}
else if (State == State.DataLoaded)
{
diff = new Series<double>(this);
EMADiff = EMA(diff, Period);
EMATypical = EMA(Typical, Period);
}
}
protected override void OnBarUpdate()
{
diff[0] = High[0] - Low[0];
double middle = EMATypical[0];
double offset = EMADiff[0] * OffsetMultiplier;
double offset1 = EMADiff[0] * OffsetMultiplier*0.5;
double upper = middle + offset;
double lower = middle - offset;
double upperhalfline = middle + offset1;
double lowerhalfline = middle - offset1;
double bspread = upper - lower;
Midline[0] = middle;
Upper[0] = upper;
Lower[0] = lower;
Values[3][0] = upperhalfline;
Values[4][0] = lowerhalfline;
Draw.Region(this, "KeltnerChannelwColor", CurrentBar, 0, Upper, Lower, null, RegionBrush, Opacity, 0);
// Draws text Band Spread in the lower right corner of panel 1
Draw.TextFixed(this, "tag1", "B. Sp "+bspread.ToString("N2"), TextPosition.BottomRight, Brushes.Black, new NinjaTrader.Gui.Tools.SimpleFont ("Arial", 11), Brushes.Black, Brushes.Silver, 10);
}

Comment