コード例 #1
0
        /// <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]);
        }
コード例 #2
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);
                }
            }
        }