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