/// <summary> /// Called on each bar update event (incoming tick) /// </summary> protected override void OnBarUpdate() { // Code for SMA 100 line if (CurrentBar == 0) { Trend.Set(Input[0]); } else { double last = Trend[1] * Math.Min(CurrentBar, smaPeriod); if (CurrentBar >= smaPeriod) { Trend.Set((last + Input[0] - Input[smaPeriod]) / Math.Min(CurrentBar, smaPeriod)); if (CountIf(delegate { return(Trend[0] > Trend[1]); }, 15) == 15) //if (Rising(Trend)) { PlotColors[6][0] = upColor; } else if (CountIf(delegate { return(Trend[0] < Trend[1]); }, 15) == 15) { PlotColors[6][0] = downColor; } } else { Trend.Set((last + Input[0]) / (Math.Min(CurrentBar, smaPeriod) + 1)); } } // Code for other indicators if (CurrentBar < 5) { return; } if (High[0] < High[2] && High[1] < High[2] && High[3] < High[2] && High[4] < High[2]) { double halfStdDevValue = (StdDev(period)[2]) / 2; //Plots[0].Pen = new Pen(Color.Green); Values[0][2] = High[2] + halfStdDevValue; if (High[2] > Close[HighestBar(Close, donchianPeriod)]) { UpperTarget.Set(2, High[2] * 1.1); // 10% above } // else // { // Print(Time + " CurrentBar: " + CurrentBar + " HighestBar(High, 22): " + HighestBar(High, 22)); // } } if (Low[0] > Low[2] && Low[1] > Low[2] && Low[3] > Low[2] && Low[4] > Low[2]) { double halfStdDevValue = (StdDev(period)[2]) / 2; //Values[1][2] = Low[2] - halfStdDevValue; Lower.Set(2, Low[2] - halfStdDevValue); if (Low[2] < Close[LowestBar(Close, donchianPeriod)]) { LowerTarget.Set(2, Low[2] * 0.9); // 10% below low } } //UpperDonchian.Set(MAX(Close, donchianPeriod)[0]); //LowerDonchian.Set(MIN(Close, donchianPeriod)[0]); }
protected override void OnBarUpdate()///////////////////////////////////////////////////////// { switch (mAType1) { case DMAType.EMA: ma1Series.Set(EMA(Input, mAPeriod1)[0]); break; case DMAType.HMA: ma1Series.Set(HMA(Input, mAPeriod1)[0]); break; case DMAType.WMA: ma1Series.Set(WMA(Input, mAPeriod1)[0]); break; case DMAType.SMA: ma1Series.Set(SMA(Input, mAPeriod1)[0]); break; case DMAType.MIN: ma1Series.Set(MIN(Input, mAPeriod1)[0]); break; case DMAType.MAX: ma1Series.Set(MAX(Input, mAPeriod1)[0]); break; case DMAType.Wilder: ma1Series.Set(Wilder(Input, mAPeriod1)[0]); break; case DMAType.EhlersFilter: ma1Series.Set(EhlersFilter(Input, mAPeriod1)[0]); break; case DMAType.ADXVMA: ma1Series.Set(ADXVMA(Input, mAPeriod1)[0]); break; case DMAType.ZeroLagEMA: ma1Series.Set(ZeroLagEMA(Input, mAPeriod1)[0]); break; case DMAType.TMA: ma1Series.Set(TMA(Input, mAPeriod1)[0]); break; case DMAType.VWMA: ma1Series.Set(VWMA(Input, mAPeriod1)[0]); break; case DMAType.SMMA: ma1Series.Set(SMMA(Input, mAPeriod1)[0]); break; case DMAType.LLMA: ma1Series.Set(LLMA(Input, mAPeriod1, 0)[0]); break; case DMAType.None: ma1Series.Set(Input[0]); break; } switch (mAType2) { case DMAType.EMA: ma2Series.Set(EMA(Input, mAPeriod2)[0]); break; case DMAType.HMA: ma2Series.Set(HMA(Input, mAPeriod2)[0]); break; case DMAType.WMA: ma2Series.Set(WMA(Input, mAPeriod2)[0]); break; case DMAType.SMA: ma2Series.Set(SMA(Input, mAPeriod2)[0]); break; case DMAType.MIN: ma2Series.Set(MIN(Input, mAPeriod2)[0]); break; case DMAType.MAX: ma2Series.Set(MAX(Input, mAPeriod2)[0]); break; case DMAType.Wilder: ma2Series.Set(Wilder(Input, mAPeriod2)[0]); break; case DMAType.EhlersFilter: ma2Series.Set(EhlersFilter(Input, mAPeriod2)[0]); break; case DMAType.ADXVMA: ma2Series.Set(ADXVMA(Input, mAPeriod2)[0]); break; case DMAType.ZeroLagEMA: ma2Series.Set(ZeroLagEMA(Input, mAPeriod2)[0]); break; case DMAType.TMA: ma2Series.Set(TMA(Input, mAPeriod2)[0]); break; case DMAType.VWMA: ma2Series.Set(VWMA(Input, mAPeriod2)[0]); break; case DMAType.SMMA: ma2Series.Set(SMMA(Input, mAPeriod2)[0]); break; case DMAType.LLMA: ma2Series.Set(LLMA(Input, mAPeriod2, 0)[0]); break; case DMAType.None: ma2Series.Set(Input[0]); break; } switch (mAType3) { case DMAType.EMA: ma3Series.Set(EMA(Input, mAPeriod3)[0]); break; case DMAType.HMA: ma3Series.Set(HMA(Input, mAPeriod3)[0]); break; case DMAType.WMA: ma3Series.Set(WMA(Input, mAPeriod3)[0]); break; case DMAType.SMA: ma3Series.Set(SMA(Input, mAPeriod3)[0]); break; case DMAType.MIN: ma3Series.Set(MIN(Input, mAPeriod3)[0]); break; case DMAType.MAX: ma3Series.Set(MAX(Input, mAPeriod3)[0]); break; case DMAType.Wilder: ma3Series.Set(Wilder(Input, mAPeriod3)[0]); break; case DMAType.EhlersFilter: ma3Series.Set(EhlersFilter(Input, mAPeriod3)[0]); break; case DMAType.ADXVMA: ma3Series.Set(ADXVMA(Input, mAPeriod3)[0]); break; case DMAType.ZeroLagEMA: ma3Series.Set(ZeroLagEMA(Input, mAPeriod3)[0]); break; case DMAType.TMA: ma3Series.Set(TMA(Input, mAPeriod3)[0]); break; case DMAType.VWMA: ma3Series.Set(VWMA(Input, mAPeriod3)[0]); break; case DMAType.SMMA: ma3Series.Set(SMMA(Input, mAPeriod3)[0]); break; case DMAType.LLMA: ma3Series.Set(LLMA(Input, mAPeriod3, 0)[0]); break; case DMAType.None: ma3Series.Set(Input[0]); break; } if (Drawline) { BarColor = Color.Transparent; CandleOutlineColor = Color.Transparent; } Fast.Set(ma1Series[0]); Slow.Set(ma2Series[0]); Trend.Set(ma3Series[0]); if (Drawdots) { Dot.Set(Close[0]); if (Input[0] > Fast[0] && Input[0] > Slow[0] && Input[0] > Trend[0]) { PlotColors[0][0] = UpColor; } else if (Input[0] < Fast[0] && Input[0] < Slow[0] && Input[0] < Trend[0]) { PlotColors[0][0] = DownColor; } else { PlotColors[0][0] = FlatColor; } } if (Drawdots == false) { Dot.Set(Close[0]); if (Close[0] > Open[0]) { PlotColors[0][0] = UpColor; } else if (Close[0] < Open[0]) { PlotColors[0][0] = DownColor; } else { PlotColors[0][0] = FlatColor; } } if (Drawline) { if (Input[0] > Fast[0] && Input[0] > Slow[0] && Input[0] > Trend[0]) { Line.Set(Close[0]); PlotColors[1][0] = UpColor; } else if (Input[0] < Fast[0] && Input[0] < Slow[0] && Input[0] < Trend[0]) { Line.Set(Close[0]); PlotColors[1][0] = DownColor; } else { Line.Set(Close[0]); PlotColors[1][0] = FlatColor; } } if (colorbackground) { if (colorbackgroundall) { if (Input[0] > Fast[0] && Input[0] > Slow[0] && Input[0] > Trend[0]) { BackColorAll = Color.FromArgb(Opacity, BgColorUp); } else if (Input[0] < Fast[0] && Input[0] < Slow[0] && Input[0] < Trend[0]) { BackColorAll = Color.FromArgb(Opacity, BgColorDown); } else { BackColorAll = Color.Empty; } } else { if (Input[0] > Fast[0] && Input[0] > Slow[0] && Input[0] > Trend[0]) { BackColor = Color.FromArgb(Opacity, BgColorUp); } else if (Input[0] < Fast[0] && Input[0] < Slow[0] && Input[0] < Trend[0]) { BackColor = Color.FromArgb(Opacity, BgColorDown); } else { BackColor = Color.Empty; } } } if (Values[2][0] > Values[3][0]) { PlotColors[2][0] = UpColorMA1; PlotColors[3][0] = UpColorMA2; } else { PlotColors[2][0] = DownColorMA1; PlotColors[3][0] = DownColorMA2; } if (Values[2][0] > Values[4][0] && Values[3][0] > Values[4][0]) { PlotColors[4][0] = UpColorMA3; } else if (Values[2][0] < Values[4][0] && Values[3][0] < Values[4][0]) { PlotColors[4][0] = DownColorMA3; } else { PlotColors[4][0] = FlatColorMA3; } if (soundAlert) { if (CrossAbove(Fast, Slow, 1)) { Alert("UpAlert", NinjaTrader.Cbi.Priority.Medium, "UpAlert", upAlertFile, 60, Color.Navy, Color.Magenta); } if (CrossBelow(Fast, Slow, 1)) { Alert("DownAlert", NinjaTrader.Cbi.Priority.Medium, "DownAlert", downAlertFile, 60, Color.Navy, Color.Yellow); } } if (CurrentBar < 2) { return; } if (Colorzone) { if (Fast[0] > Slow[0]) { DrawRegion("MABands" + CurrentBar, 1, 0, ma1Series, ma2Series, Color.Transparent, UpColor, Zopacity); } else { DrawRegion("MABands" + CurrentBar, 1, 0, ma1Series, ma2Series, Color.Transparent, DownColor, Zopacity); } } }