protected override void OnCalculate()
        {
            //Check if peridocity is valid for this script
            if (this.IsProcessingBarIndexLast && !DatafeedPeriodicityIsValid(Bars.TimeFrame))
            {
                GlobalUtilities.DrawWarningTextOnChart(this, Const.DefaultStringDatafeedPeriodicity);
            }

            switch (SeasonalDateType)
            {
            case SeasonalDateType.SellInMay:
                this.calculate_Sell_in_May();
                break;

            case SeasonalDateType.SantaClausRally:
                this.calculate_Santa_Claus_Rally();
                break;

            case SeasonalDateType.fourthofjuly:
                this.calculate_4th_of_July_Rally();
                break;

            case SeasonalDateType.manual:
                this.calculate_manual();
                break;

            default:
                break;
            }
        }
示例#2
0
        protected override void OnCalculate()
        {
            //MyPlot1.Set(InSeries[0]);

            if (Bars != null && Bars.Count > 0 && IsProcessingBarIndexLast)
            {
                //Check if peridocity is valid for this script
                if (!DatafeedPeriodicityIsValid(Bars.TimeFrame))
                {
                    GlobalUtilities.DrawWarningTextOnChart(this, Const.DefaultStringDatafeedPeriodicity);
                    return;
                }

                DateTime start      = Bars.Where(x => x.Time.Date == Bars[0].Time.Date).FirstOrDefault().Time;
                DateTime start_date = start.Date;
                DateTime end        = Bars[0].Time;

                //Selektiere alle g�ltigen Kurse und finde low und high.
                IEnumerable <IBar> list = Bars.Where(x => x.Time >= start).Where(x => x.Time <= end);
                if (list != null && !list.IsEmpty())
                {
                    double minvalue = list.Where(x => x.Low == list.Min(y => y.Low)).LastOrDefault().Low;
                    double maxvalue = list.Where(x => x.High == list.Max(y => y.High)).LastOrDefault().High;
                    double range    = maxvalue - minvalue;

                    DateTime enddrawing_string = end.AddSeconds(this.TimeFrame.GetSeconds() + this.TimeFrame.GetSeconds() * 0.15);
                    DateTime enddrawing_line   = end.AddSeconds(this.TimeFrame.GetSeconds());

                    string[] arr_WhichLinesShouldWeUse = this.WhichLinesShouldWeUse.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                    //Dictionary<string, string> dict = arr_WhichLinesShouldWeUse.ToDictionary<string, string>(x => x.ToString(), x => x.ToString());

                    if (Array.IndexOf(arr_WhichLinesShouldWeUse, "100") != -1)
                    {
                        AddChartText("Fibonacci_Session_LowLine_String", true, minvalue.ToString("N2") + " (100%)", enddrawing_string, minvalue, 0, this.Color_Text, new Font("Arial", 7.5f), StringAlignment.Far, Color.Transparent, Color.Transparent, 100);
                        AddChartLine("Fibonacci_Session_LowLine", true, start, minvalue, enddrawing_line, minvalue, this.Color_Fibo_Level_100, DashStyle.Solid, this.Fibo_100_LineWidth);
                    }

                    if (Array.IndexOf(arr_WhichLinesShouldWeUse, "0") != -1)
                    {
                        AddChartText("Fibonacci_Session_HighLine_String", true, maxvalue.ToString("N2") + " (0%)", enddrawing_string, maxvalue, 0, this.Color_Text, new Font("Arial", 7.5f), StringAlignment.Far, Color.Transparent, Color.Transparent, 100);
                        AddChartLine("Fibonacci_Session_HighLine", true, start, maxvalue, enddrawing_line, maxvalue, this.Color_Fibo_Level_0, DashStyle.Solid, this.Fibo_0_LineWidth);
                    }

                    if (Array.IndexOf(arr_WhichLinesShouldWeUse, "23") != -1)
                    {
                        double _fibo_lv_2361 = maxvalue - ((range / 100) * 23.61);
                        AddChartText("Fibonacci_Session_23.61_String", true, _fibo_lv_2361.ToString("N2") + " (23.61%)", enddrawing_string, _fibo_lv_2361, 0, this.Color_Text, new Font("Arial", 7.5f), StringAlignment.Far, Color.Transparent, Color.Transparent, 100);
                        AddChartLine("Fibonacci_Session_23.61_Line", true, start, _fibo_lv_2361, enddrawing_line, _fibo_lv_2361, this.Color_Fibo_Level_0_100, DashStyle.Solid, this.Fibo_0_100_LineWidth);
                    }
                    if (Array.IndexOf(arr_WhichLinesShouldWeUse, "38") != -1)
                    {
                        double _fibo_lv_382 = maxvalue - ((range / 100) * 38.2);
                        AddChartText("Fibonacci_Session_38.2_String", true, _fibo_lv_382.ToString("N2") + " (38.2%)", enddrawing_string, _fibo_lv_382, 0, this.Color_Text, new Font("Arial", 7.5f), StringAlignment.Far, Color.Transparent, Color.Transparent, 100);
                        AddChartLine("Fibonacci_Session_38.2", true, start, _fibo_lv_382, enddrawing_line, _fibo_lv_382, this.Color_Fibo_Level_0_100, DashStyle.Solid, this.Fibo_0_100_LineWidth);
                    }
                    if (Array.IndexOf(arr_WhichLinesShouldWeUse, "50") != -1)
                    {
                        double _fibo_lv_500 = maxvalue - ((range / 100) * 50.0);
                        AddChartText("Fibonacci_Session_50.0_String", true, _fibo_lv_500.ToString("N2") + " (50.0%)", enddrawing_string, _fibo_lv_500, 0, this.Color_Text, new Font("Arial", 7.5f), StringAlignment.Far, Color.Transparent, Color.Transparent, 100);
                        AddChartLine("Fibonacci_Session_50.0", true, start, _fibo_lv_500, enddrawing_line, _fibo_lv_500, this.Color_Fibo_Level_0_100, DashStyle.Solid, this.Fibo_0_100_LineWidth);
                    }

                    if (Array.IndexOf(arr_WhichLinesShouldWeUse, "61") != -1)
                    {
                        double _fibo_lv_618 = maxvalue - ((range / 100) * 61.8);
                        AddChartText("Fibonacci_Session_61.8_String", true, _fibo_lv_618.ToString("N2") + " (61.8%)", enddrawing_string, _fibo_lv_618, 0, this.Color_Text, new Font("Arial", 7.5f), StringAlignment.Far, Color.Transparent, Color.Transparent, 100);
                        AddChartLine("Fibonacci_Session_61.8", true, start, _fibo_lv_618, enddrawing_line, _fibo_lv_618, this.Color_Fibo_Level_0_100, DashStyle.Solid, this.Fibo_0_100_LineWidth);
                    }
                    if (Array.IndexOf(arr_WhichLinesShouldWeUse, "76") != -1)
                    {
                        double _fibo_lv_7640 = maxvalue - ((range / 100) * 76.4);
                        AddChartText("Fibonacci_Session_76.40_String", true, _fibo_lv_7640.ToString("N2") + " (76.4%)", enddrawing_string, _fibo_lv_7640, 0, this.Color_Text, new Font("Arial", 7.5f), StringAlignment.Far, Color.Transparent, Color.Transparent, 100);
                        AddChartLine("Fibonacci_Session_76.40", true, start, _fibo_lv_7640, enddrawing_line, _fibo_lv_7640, this.Color_Fibo_Level_0_100, DashStyle.Solid, this.Fibo_0_100_LineWidth);
                    }
                    if (Array.IndexOf(arr_WhichLinesShouldWeUse, "78") != -1)
                    {
                        double _fibo_lv_7862 = maxvalue - ((range / 100) * 78.62);
                        AddChartText("Fibonacci_Session_78.62_String", true, _fibo_lv_7862.ToString("N2") + " (78.62%)", enddrawing_string, _fibo_lv_7862, 0, this.Color_Text, new Font("Arial", 7.5f), StringAlignment.Far, Color.Transparent, Color.Transparent, 100);
                        AddChartLine("Fibonacci_Session_78.62", true, start, _fibo_lv_7862, enddrawing_line, _fibo_lv_7862, this.Color_Fibo_Level_0_100, DashStyle.Solid, this.Fibo_0_100_LineWidth);
                    }
                }
            }
        }