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; } }
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); } } } }