function Initialize() { IndicatorName = "MinMAXPD"; AddInput("Input", Inputs.Candle); PriceStudy = true; AddSeries("TodayOp", DrawAs.Custom, Color.Silver, true); // открытие ТЕКУЩЕГО дня AddSeries("Hi", DrawAs.Custom, Color.Magenta, false); // максимум предыдущего дня AddSeries("Lo", DrawAs.Custom, Color.Magenta, false); // минимум предыдущего дня AddSeries("Cl", DrawAs.Custom, Color.Blue, false); // закрытие предыдущего дня AddSeries("ATRu", DrawAs.Custom, Color.MediumPurple, false); // PrevClose+ATR AddSeries("ATRl", DrawAs.Custom, Color.MediumPurple, false); // PrevClose-ATR AddParameter("PeriodATR", 5, 900); // Период усреднения ATR AddGlobalVariable("PrevDayHigh", Types.Double, 0); AddGlobalVariable("PrevDayLow", Types.Double, 0); AddGlobalVariable("PrevDayATR", Types.Double, 0); AddLevel(0, Color.Magenta, LineStyles.DashBig, 1, "4bondLevels"); AddLevel(0, Color.Magenta, LineStyles.DashBig, 1, "4bondLevels"); AddLevel(0, Color.MediumPurple, LineStyles.DashSmall, 1, "4bondLevels"); AddLevel(0, Color.MediumPurple, LineStyles.DashSmall, 1, "4bondLevels"); } function Evaluate() { /* 08.2020 by Maks * PrevDayHL + ATR Channel + TodayOpen * * На графиках с периодичностью 1 день и менее рисуются уровни предыдущего дня * На графиках с периодичностью 1 день и более рисуются уровни предыдущей свечи */ if (CurrentIndex > 0) { if (BarDate() > BarDate(-1)) { if (BarDate() == DateTime.Today) TodayOp[0] = Input.Open[0]; Hi[0] = PrevDayHigh; Lo[0] = PrevDayLow; Cl[0] = Input.Close[-1]; double _TR = Math.Max(Hi[0], Cl[-1]) - Math.Min(Lo[0], Cl[-1]); PrevDayATR = ((PeriodATR-1.0)*PrevDayATR + _TR)/PeriodATR; ATRu[0] = Cl[0] + PrevDayATR; ATRl[0] = Cl[0] - PrevDayATR; PrevDayHigh = Input.High[0]; PrevDayLow = Input.Low[0]; } else { if (BarDate() == DateTime.Today) TodayOp[0] = TodayOp[-1]; Hi[0] = Hi[-1]; Lo[0] = Lo[-1]; Cl[0] = Cl[-1]; ATRu[0] = ATRu[-1]; ATRl[0] = ATRl[-1]; if (PrevDayHigh < Input.High[0]) PrevDayHigh = Input.High[0]; if (PrevDayLow > Input.Low[0]) PrevDayLow = Input.Low[0]; } if (BarDate() == DateTime.Today) { TodayOp.DrawDash(); Levels[0].Level = Hi; Levels[1].Level = Lo; Levels[2].Level = ATRu; Levels[3].Level = ATRl; } } else { TodayOp[0] = Input.Open[0]; PrevDayHigh = Input.High[0]; PrevDayLow = Input.Low[0]; PrevDayATR = Input.High[0]-Input.Low[0]; } }