Exemplo n.º 1
0
        protected override void OnBarUpdate()
        {
            PatternFound[0] = (logic.Evaluate(Pattern) ? 1 : 0);

            if (PatternFound[0] == 1)
            {
                bool   isBearish = false;
                string text      = string.Empty;

                switch (Pattern)
                {
                case ChartPattern.BearishBeltHold:              text = "Bearish Belt Hold";     isBearish = true;       break;

                case ChartPattern.BearishEngulfing:     text = "Bearish Engulfing";     isBearish = true;       break;

                case ChartPattern.BearishHarami:                text = "Bearish Harami";                isBearish = true;       break;

                case ChartPattern.BearishHaramiCross:   text = "Bearish Harami Cross";  isBearish = true;       break;

                case ChartPattern.BullishBeltHold:              text = "Bullish Belt Hold";                                             break;

                case ChartPattern.BullishEngulfing:     text = "Bullish Engulfing";                                             break;

                case ChartPattern.BullishHarami:                text = "Bullish Harami";                                                        break;

                case ChartPattern.BullishHaramiCross:   text = "Bullish Harami Cross";                                          break;
                }

                if (!string.IsNullOrEmpty(text))
                {
                    BarBrushes[1]           = isBearish                                                             ? upBrush       : downBrush;
                    BarBrushes[0]           = isBearish                                                             ? downBrush : upBrush;
                    CandleOutlineBrushes[1] = Pattern == ChartPattern.BearishBeltHold       ? downBrush : CandleOutlineBrushes[1];
                    CandleOutlineBrushes[0] = !isBearish                                                            ? downBrush : CandleOutlineBrushes[0];
                    DrawText(text, 0, isBearish ? Math.Max(High[0], High[1]) : Math.Min(Low[0], Low[1]), isBearish ? 40 : 10);
                }

                switch (Pattern)
                {
                case ChartPattern.DarkCloudCover:
                    BarBrushes[1]           = upBrush;
                    BarBrushes[0]           = downBrush;
                    CandleOutlineBrushes[1] = downBrush;
                    DrawText("Dark Cloud Cover", 1, Math.Max(High[0], High[1]), 50);
                    break;

                case ChartPattern.Doji:
                    BarBrushes[0]           = upBrush;
                    CandleOutlineBrushes[0] = downBrush;
                    int yOffset = Close[0] > Close[Math.Min(1, CurrentBar)] ? 20 : -20;
                    DrawText("Doji", 0, (yOffset > 0 ? High[0] : Low[0]), yOffset);
                    break;

                case ChartPattern.DownsideTasukiGap:
                    BarBrushes[2]           = downBrush;
                    BarBrushes[1]           = downBrush;
                    BarBrushes[0]           = upBrush;
                    CandleOutlineBrushes[0] = downBrush;
                    DrawText("Downside Tasuki Gap", 1, MAX(High, 3)[0], 10);
                    break;

                case ChartPattern.EveningStar:
                    BarBrushes[2]           = Close[2] > Open[2] ? upBrush : downBrush;
                    BarBrushes[1]           = Close[1] > Open[1] ? upBrush : downBrush;
                    BarBrushes[0]           = Close[0] > Open[0] ? upBrush : downBrush;
                    CandleOutlineBrushes[2] = Close[2] > Open[2] ? downBrush : CandleOutlineBrushes[2];
                    CandleOutlineBrushes[1] = Close[1] > Open[1] ? downBrush : CandleOutlineBrushes[1];
                    CandleOutlineBrushes[0] = Close[0] > Open[0] ? downBrush : CandleOutlineBrushes[0];
                    DrawText("Evening Star", 1, MAX(High, 3)[0], 40);
                    break;

                case ChartPattern.FallingThreeMethods:
                    BarBrushes[4] = downBrush;
                    BarBrushes[0] = downBrush;
                    for (int i = 1; i < 4; i++)
                    {
                        BarBrushes[i]           = Close[i] > Open[i] ? upBrush : downBrush;
                        CandleOutlineBrushes[i] = Close[i] > Open[i] ? downBrush : CandleOutlineBrushes[i];
                    }
                    DrawText("Falling Three Methods", 2, Math.Max(High[0], High[4]), 40);
                    break;

                case ChartPattern.Hammer:
                    BarBrushes[0]           = Close[0] > Open[0] ? upBrush : downBrush;
                    CandleOutlineBrushes[0] = Close[0] > Open[0] ? downBrush : CandleOutlineBrushes[0];
                    DrawText("Hammer", 0, Low[0], -20);
                    break;

                case ChartPattern.HangingMan:
                    BarBrushes[0]           = Close[0] > Open[0] ? upBrush : downBrush;
                    CandleOutlineBrushes[0] = Close[0] > Open[0] ? downBrush : CandleOutlineBrushes[0];
                    DrawText("Hanging Man", 0, Low[0], -20);
                    break;

                case ChartPattern.InvertedHammer:
                    BarBrushes[0]           = Close[0] > Open[0] ? upBrush : downBrush;
                    CandleOutlineBrushes[0] = Close[0] > Open[0] ? downBrush : CandleOutlineBrushes[0];
                    DrawText("Inverted Hammer", 0, Low[0] - 2 * TickSize, 20);
                    break;

                case ChartPattern.MorningStar:
                    BarBrushes[2]           = Close[2] > Open[2] ? upBrush : downBrush;
                    BarBrushes[1]           = Close[1] > Open[1] ? upBrush : downBrush;
                    BarBrushes[0]           = Close[0] > Open[0] ? upBrush : downBrush;
                    CandleOutlineBrushes[2] = Close[2] > Open[2] ? downBrush : CandleOutlineBrushes[2];
                    CandleOutlineBrushes[1] = Close[1] > Open[1] ? downBrush : CandleOutlineBrushes[1];
                    CandleOutlineBrushes[0] = Close[0] > Open[0] ? downBrush : CandleOutlineBrushes[0];
                    DrawText("Morning Star", 1, MIN(Low, 3)[0], -20);
                    break;

                case ChartPattern.PiercingLine:
                    BarBrushes[1]           = upBrush;
                    BarBrushes[0]           = downBrush;
                    CandleOutlineBrushes[1] = downBrush;
                    DrawText("Piercing Line", 1, Low[0], -10);
                    break;

                case ChartPattern.RisingThreeMethods:
                    BarBrushes[4]           = upBrush;
                    BarBrushes[0]           = upBrush;
                    CandleOutlineBrushes[4] = downBrush;
                    CandleOutlineBrushes[0] = downBrush;
                    for (int i = 1; i < 4; i++)
                    {
                        BarBrushes[i]           = Close[i] > Open[i] ? upBrush : downBrush;
                        CandleOutlineBrushes[i] = Close[i] > Open[i] ? downBrush : CandleOutlineBrushes[i];
                    }
                    DrawText("Rising Three Methods", 2, MIN(Low, 5)[0], -10);
                    break;

                case ChartPattern.ShootingStar:
                    BarBrushes[0] = downBrush;
                    DrawText("Shooting Star", 0, High[0], 30);
                    break;

                case ChartPattern.StickSandwich:
                    BarBrushes[2]           = downBrush;
                    BarBrushes[1]           = upBrush;
                    BarBrushes[0]           = downBrush;
                    CandleOutlineBrushes[1] = downBrush;
                    DrawText("Stick Sandwich", 1, MAX(High, 3)[0], 50);
                    break;

                case ChartPattern.ThreeBlackCrows:
                    BarBrushes[2] = downBrush;
                    BarBrushes[1] = downBrush;
                    BarBrushes[0] = downBrush;
                    DrawText("Three Black Crows", 1, MAX(High, 3)[0], 50);
                    break;

                case ChartPattern.ThreeWhiteSoldiers:
                    BarBrushes[2]           = upBrush;
                    BarBrushes[1]           = upBrush;
                    BarBrushes[0]           = upBrush;
                    CandleOutlineBrushes[2] = downBrush;
                    CandleOutlineBrushes[1] = downBrush;
                    CandleOutlineBrushes[0] = downBrush;
                    DrawText("Three White Soldiers", 1, Low[2], -10);
                    break;

                case ChartPattern.UpsideGapTwoCrows:
                    BarBrushes[2]           = upBrush;
                    BarBrushes[1]           = downBrush;
                    BarBrushes[0]           = downBrush;
                    CandleOutlineBrushes[2] = downBrush;
                    DrawText("Upside Gap Two Crows", 1, Math.Max(High[0], High[1]), 10);
                    break;

                case ChartPattern.UpsideTasukiGap:
                    BarBrushes[2]           = upBrush;
                    BarBrushes[1]           = upBrush;
                    BarBrushes[0]           = downBrush;
                    CandleOutlineBrushes[2] = downBrush;
                    CandleOutlineBrushes[1] = downBrush;
                    DrawText("Upide Tasuki Gap", 1, MIN(Low, 3)[0], -20);
                    break;
                }

                if (ShowAlerts)
                {
                    Alert("myAlert", Priority.Low, string.Format("Pattern(s) found: {0} {1} on {2} {3} {4} Chart", numPatternsFound, Pattern,
                                                                 Instrument.FullName, BarsPeriod.Value, BarsPeriod.BarsPeriodType), "Alert3.wav", 10, Brushes.DimGray, Brushes.DimGray);
                }
            }

            if (ShowPatternCount)
            {
                Draw.TextFixed(this, "Count", string.Format("{0} {1}\n patterns found", numPatternsFound, Pattern), textBoxPosition, textBrush, TextFont,
                               Brushes.Transparent, Brushes.Transparent, 0);
            }
        }
Exemplo n.º 2
0
        protected override void OnBarUpdate()
        {
            PatternFound[0] = (logic.Evaluate(Pattern) ? 1 : 0);

            switch (Pattern)
            {
            case ChartPattern.BearishBeltHold:
            {
                #region Bearish Belt Hold
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrushes[1]           = upColor;
                        CandleOutlineBrushes[1] = downColor;
                        BarBrush = downColor;
                    }

                    Draw.Text(this, "Bearish Belt Hold" + CurrentBar, false, " Bearish Belt\nHold # " + ++numPatternsFound, 0, Math.Max(High[0], High[1]), 40, textColor,
                              TextFont, TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.BearishEngulfing:
            {
                #region Bearish Engulfing
                if (PatternFound[0] == 1)
                {
                    BarBrushes[1] = upColor;
                    BarBrush      = downColor;

                    Draw.Text(this, "Bearish Engulfing" + CurrentBar, false, " Bearish\nEngulfing # " + ++numPatternsFound, 0, Math.Max(High[0], High[1]), 50, textColor,
                              TextFont, TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.BearishHarami:
            {
                #region Bearish Harami
                if (PatternFound[0] == 1)
                {
                    BarBrushes[1] = upColor;
                    BarBrush      = downColor;

                    Draw.Text(this, "Bearish Harami" + CurrentBar, false, "Bearish\nHarami # " + ++numPatternsFound, 0, Math.Max(High[0], High[1]), 40, textColor,
                              TextFont, TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.BearishHaramiCross:
            {
                #region Bearish Harami Cross
                if (PatternFound[0] == 1)
                {
                    BarBrush      = downColor;
                    BarBrushes[1] = upColor;

                    Draw.Text(this, "Bearish Harami Cross" + CurrentBar, false, "Bearish Harami\nCross # " + ++numPatternsFound, 0, Math.Max(High[0], High[1]), 40, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.BullishBeltHold:
            {
                #region Bullish Belt Hold
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrushes[1]           = downColor;
                        BarBrush                = upColor;
                        CandleOutlineBrushes[0] = downColor;
                    }

                    Draw.Text(this, "Bullish Belt Hold" + CurrentBar, false, "Bullish Belt\nHold # " + ++numPatternsFound, 0, Math.Min(Low[0], Low[1]), -10, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.BullishEngulfing:
            {
                #region Bullish Engulfing
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrushes[1]           = downColor;
                        BarBrush                = upColor;
                        CandleOutlineBrushes[0] = downColor;
                    }

                    Draw.Text(this, "Bullish Engulfing" + CurrentBar, false, "Bullish\nEngulfing # " + ++numPatternsFound, 0, Math.Min(Low[0], Low[1]), -10, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.BullishHarami:
            {
                #region Bullish Harami
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrushes[1]           = downColor;
                        BarBrush                = upColor;
                        CandleOutlineBrushes[0] = downColor;
                    }

                    Draw.Text(this, "Bullish Harami" + CurrentBar, false, "Bullish\nHarami # " + ++numPatternsFound, 0, Math.Min(Low[0], Low[1]), -10, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.BullishHaramiCross:
            {
                #region Bullish Harami Cross
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrushes[1]           = downColor;
                        BarBrush                = upColor;
                        CandleOutlineBrushes[0] = downColor;
                    }

                    Draw.Text(this, "Bullish Harami Cross" + CurrentBar, false, "Bullish\nHarami\nCross # " + ++numPatternsFound, 0, Math.Min(Low[0], Low[1]), -10, textColor,
                              TextFont, TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.DarkCloudCover:
            {
                #region Dark Cloud Cover
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrushes[1]           = upColor;
                        CandleOutlineBrushes[1] = downColor;
                        BarBrush = downColor;
                    }

                    Draw.Text(this, "Dark Cloud Cover" + CurrentBar, false, "Dark Cloud\nCover # " + ++numPatternsFound, 1, Math.Max(High[0], High[1]), 50, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.Doji:
            {
                #region Doji
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrush = upColor;
                        CandleOutlineBrushes[0] = downColor;
                    }

                    int yOffset = Close[0] > Close[Math.Min(1, CurrentBar)] ? 20 : -20;

                    Draw.Text(this, "Doji Text" + CurrentBar, true, "Doji\n# " + ++numPatternsFound, 0, (yOffset > 0 ? High[0] : Low[0]), yOffset, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.DownsideTasukiGap:
            {
                #region Downside Tasuki Gap
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrush = upColor;
                        CandleOutlineBrushes[0] = downColor;
                        BarBrushes[1]           = downColor;
                        BarBrushes[2]           = downColor;
                    }

                    Draw.Text(this, "Downside Tasuki Gap" + CurrentBar, false, "Downside Tasuki\n Gap # " + ++numPatternsFound, 1, MAX(High, 3)[0], 10, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.EveningStar:
            {
                #region Evening Star
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        if (Close[0] > Open[0])
                        {
                            BarBrush = upColor;
                            CandleOutlineBrushes[0] = downColor;
                        }
                        else
                        {
                            BarBrush = downColor;
                        }

                        if (Close[1] > Open[1])
                        {
                            BarBrushes[1]           = upColor;
                            CandleOutlineBrushes[1] = downColor;
                        }
                        else
                        {
                            BarBrushes[1] = downColor;
                        }

                        if (Close[2] > Open[2])
                        {
                            BarBrushes[2]           = upColor;
                            CandleOutlineBrushes[2] = downColor;
                        }
                        else
                        {
                            BarBrushes[2] = downColor;
                        }
                    }

                    Draw.Text(this, "Evening Star Text" + CurrentBar, false, "Evening\nStar # " + ++numPatternsFound, 1, MAX(High, 3)[0], 40, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.FallingThreeMethods:
            {
                #region Falling Three Methods
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrush      = downColor;
                        BarBrushes[4] = downColor;

                        int x = 1;
                        while (x < 4)
                        {
                            if (Close[x] > Open[x])
                            {
                                BarBrushes[x]           = upColor;
                                CandleOutlineBrushes[x] = downColor;
                            }
                            else
                            {
                                BarBrushes[x] = downColor;
                            }
                            x++;
                        }
                    }

                    Draw.Text(this, "Falling Three Methods" + CurrentBar, false, "Falling Three\nMethods # " + ++numPatternsFound, 2, Math.Max(High[0], High[4]), 40, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.Hammer:
            {
                #region Hammer
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        if (Close[0] > Open[0])
                        {
                            BarBrush = upColor;
                            CandleOutlineBrushes[0] = downColor;
                        }
                        else
                        {
                            BarBrush = downColor;
                        }
                    }

                    Draw.Text(this, "Hammer" + CurrentBar, false, "Hammer\n # " + ++numPatternsFound, 0, Low[0], -20, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.HangingMan:
            {
                #region Hanging Man
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        if (Close[0] > Open[0])
                        {
                            BarBrush = upColor;
                            CandleOutlineBrushes[0] = downColor;
                        }
                        else
                        {
                            BarBrush = downColor;
                        }
                    }

                    Draw.Text(this, "Hanging Man" + CurrentBar, false, "Hanging\nMan # " + ++numPatternsFound, 0, Low[0], -20, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.InvertedHammer:
            {
                #region Inverted Hammer
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        if (Close[0] > Open[0])
                        {
                            BarBrush = upColor;
                            CandleOutlineBrushes[0] = downColor;
                        }
                        else
                        {
                            BarBrush = downColor;
                        }
                    }

                    Draw.Text(this, "Inverted Hammer" + CurrentBar, false, "Inverted\nHammer\n # " + ++numPatternsFound, 0, Low[0] - 2 * TickSize, 20, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.MorningStar:
            {
                #region Morning Star
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        if (Close[0] > Open[0])
                        {
                            BarBrush = upColor;
                            CandleOutlineBrushes[0] = downColor;
                        }
                        else
                        {
                            BarBrush = downColor;
                        }

                        if (Close[1] > Open[1])
                        {
                            BarBrushes[1]           = upColor;
                            CandleOutlineBrushes[1] = downColor;
                        }
                        else
                        {
                            BarBrushes[1] = downColor;
                        }


                        if (Close[2] > Open[2])
                        {
                            BarBrushes[2]           = upColor;
                            CandleOutlineBrushes[2] = downColor;
                        }
                        else
                        {
                            BarBrushes[2] = downColor;
                        }
                    }

                    Draw.Text(this, "Morning Star Text" + CurrentBar, false, "Morning\nStar # " + ++numPatternsFound, 1, MIN(Low, 3)[0], -20, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.PiercingLine:
            {
                #region Piercing Line
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        CandleOutlineBrushes[1] = downColor;
                        BarBrushes[1]           = upColor;
                        BarBrush = downColor;
                    }

                    Draw.Text(this, "Piercing Line" + CurrentBar, false, "Piercing\nLine # " + ++numPatternsFound, 1, Low[0], -10, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }

                #endregion
                break;
            }

            case ChartPattern.RisingThreeMethods:
            {
                #region Rising Three Methods
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrush = upColor;
                        CandleOutlineBrushes[0] = downColor;
                        BarBrushes[4]           = upColor;
                        CandleOutlineBrushes[4] = downColor;

                        int x = 1;
                        while (x < 4)
                        {
                            if (Close[x] > Open[x])
                            {
                                BarBrushes[x]           = upColor;
                                CandleOutlineBrushes[x] = downColor;
                            }
                            else
                            {
                                BarBrushes[x] = downColor;
                            }
                            x++;
                        }
                    }

                    Draw.Text(this, "Rising Three Methods" + CurrentBar, false, " Rising Three\nMethods #" + ++numPatternsFound, 2, MIN(Low, 5)[0], -10, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.ShootingStar:
            {
                #region Shooting Star
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrush = downColor;
                    }

                    Draw.Text(this, "Shooting Star" + CurrentBar, false, "Shooting\nStar # " + ++numPatternsFound, 0, High[0], 30, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.StickSandwich:
            {
                #region Stick Sandwich
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrush                = downColor;
                        BarBrushes[1]           = upColor;
                        CandleOutlineBrushes[1] = downColor;
                        BarBrushes[2]           = downColor;
                    }

                    Draw.Text(this, "Stick Sandwich" + CurrentBar, false, "Stick\nSandwich\n  # " + ++numPatternsFound, 1, MAX(High, 3)[0], 50, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.ThreeBlackCrows:
            {
                #region Three Black Crows
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrush      = downColor;
                        BarBrushes[1] = downColor;
                        BarBrushes[2] = downColor;
                    }

                    Draw.Text(this, "Three Black Crows" + CurrentBar, false, "Three Black\nCrows # " + ++numPatternsFound, 1, MAX(High, 3)[0], 50, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.ThreeWhiteSoldiers:
            {
                #region Three White Soldiers
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrush = upColor;
                        CandleOutlineBrushes[0] = downColor;
                        BarBrushes[1]           = upColor;
                        CandleOutlineBrushes[1] = downColor;
                        BarBrushes[2]           = upColor;
                        CandleOutlineBrushes[2] = downColor;
                    }

                    Draw.Text(this, "Three White Soldiers" + CurrentBar, false, "Three White\nSoldiers # " + ++numPatternsFound, 1, Low[2], -10, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.UpsideGapTwoCrows:
            {
                #region Upside Gap Two Crows
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrush                = downColor;
                        BarBrushes[1]           = downColor;
                        BarBrushes[2]           = upColor;
                        CandleOutlineBrushes[2] = downColor;
                    }

                    Draw.Text(this, "Upside Gap Two Crows" + CurrentBar, false, "Upside Gap\nTwo Crows # " + ++numPatternsFound, 1, Math.Max(High[0], High[1]), 10, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }

            case ChartPattern.UpsideTasukiGap:
            {
                #region Upside Tasuki Gap
                if (PatternFound[0] == 1)
                {
                    if (ChartBars != null)
                    {
                        BarBrush                = downColor;
                        BarBrushes[1]           = upColor;
                        CandleOutlineBrushes[1] = downColor;
                        BarBrushes[2]           = upColor;
                        CandleOutlineBrushes[2] = downColor;
                    }

                    Draw.Text(this, "Upside Tasuki Gap" + CurrentBar, false, "Upside\nTasuki\nGap # " + ++numPatternsFound, 1, MIN(Low, 3)[0], -20, textColor, TextFont,
                              TextAlignment.Center, Brushes.Transparent, Brushes.Transparent, 0);
                }
                #endregion
                break;
            }
            }

            if (ShowPatternCount)
            {
                Draw.TextFixed(this, "Count", numPatternsFound + " " + Pattern + "\n  patterns found", textBoxPosition, textColor, TextFont, Brushes.Transparent, Brushes.Transparent, 0);
            }


            if (PatternFound[0] == 1 && ShowAlerts)
            {
                Alert("myAlert", Priority.Low, "Pattern(s) found: " + numPatternsFound + " " + Pattern + " on " + Instrument.FullName + " " + BarsPeriod.Value + " " +
                      BarsPeriod.BarsPeriodType + " Chart", "Alert3.wav", 10, Brushes.DimGray, Brushes.DimGray);
            }
        }