Пользовательские индикаторы > RangeOfHours - экстремумы предыдущих часов

Дополнительные индикаторы от пользователей Альфа-Директ 4. Готовые решения от пользователей.
Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

RangeOfHours - экстремумы предыдущих часов

Непрочитанное сообщение evge » 27 апр 2020, 19:16

Индикатор RangeOfHours отображает уровни минимальной, средней, максимальной цены предыдущих часов.
2 варианта расчета экстремумов текущего часа:
  • В текущий час рисуются уровни предыдущего часа. В начале текущего часа, на первом баре, уровни предыдущего часа перерисовываются в соответствии с его экстремумами;
  • Экстремумы определяются динамически.
Параметры

MinScan - необходимая история в барах. Загружаемая история = MinScan * 2
CDType - Current Data Type - тип определения экстремумов текущего часа. 0 - продолжение экстремумов предыдущего часа, 1 - динамическое определение экстремумов текущего часа.

Примеры работы

RangeOfHours-01.png
RangeOfHours-01.png (27.12 КБ) 2901 просмотр

RangeOfHours-02.png
RangeOfHours-02.png (28.44 КБ) 2901 просмотр


Исходный текст индикатора:

Код: Выделить всё

function Initialize()
{
  IndicatorName = "RangeOfHours";   
  AddInput("Input", Inputs.Candle);   
  PriceStudy = true;
  AddSeries("Hi", DrawAs.Custom, Color.Green); // максимум предыдущего часа
  AddSeries("Lo", DrawAs.Custom, Color.Red);   // минимум предыдущего часа
  AddSeries("Mid", DrawAs.Custom, Color.Silver);  // средняя цена
  AddParameter("MinScan", 163, 2); // подзагрузка истории количество 5-минутных баров
  AddParameter("CDType", 1);  // Current Data Type - тип текущего часа, 0 - продолжать отображение экстремумов предыдущего часа, 1 - экстремумы текущего часа (будут меняться динамически в течение часа)
  AddGlobalVariable("High", Types.Double, 0);
  AddGlobalVariable("Low", Types.Double, 0);
  AddGlobalVariable("LastHigh", Types.Double, 0);
  AddGlobalVariable("LastLow", Types.Double, 0);
  AddGlobalVariable("SI", Types.Int, 0);
  AddGlobalVariable("SIO", Types.Int, 0);
}

function Evaluate()
{
// evge 27.04.2020 https://alfadirect4.ru
//   RangeOfHours - Индикатор рисует экстремумы предыдущих часов и текущего часа, в зависимости от параметров, продолжая экстремумы предыдущего часа или расчитывая в текущем часе динамически.

//первая свечка часа
//сохранаем текущий индекс и последние найденные High, Low
if ( BarTime().Hours != BarTime(1).Hours)
   {
   SIO = SI;
   SI = CurrentIndex;
   LastHigh = High;
   LastLow = Low;

   //перерисовываем
   if (SIO != 0)
   for (var x=0; x <= CurrentIndex - SIO; x++)
   {
   Hi[x] = High;
   Lo[x] = Low;
   Mid[x] = (Low + High) * 0.5;     
   }
   }

if (((BarTime().Hours != DateTime.Today.Hour) || CDType != 0) && BarTime().Hours != BarTime(1).Hours)
  {
    High = Input.High[0];
    Low = Input.Low[0];   
  }
  else if (((BarTime().Hours != DateTime.Today.Hour) || CDType != 0) && BarTime() > AsTime(0, 0, 0))
  {
    if ( Input.High[0] > High) High = Input.High[0];
    if ( Input.Low[0] < Low) Low = Input.Low[0];
  }

if (CDType == 0)
{
   if (LastHigh !=0 && LastLow !=0)
   {
   Hi[0] = LastHigh;
   Lo[0] = LastLow;
   Mid[0] = (LastLow + LastHigh) * 0.5;
   
   Hi.DrawDash();
   Lo.DrawDash();
   Mid.DrawDash();
   }
} else
{

if (SI != 0)
for (var x=0; x <= CurrentIndex - SI; x++)
{
Hi[x] = High;
Lo[x] = Low;
Mid[x] = (Low + High) * 0.5;     
}

Hi.DrawDash();
Lo.DrawDash();
Mid.DrawDash();
}

}


Скачать исходный текст

RangeOfHours.zip
(49.29 КБ) 159 скачиваний
никогда такого не было и вот опять

Velper
Сообщения: 3
Зарегистрирован: 28 мар 2020, 06:48

Re: RangeOfHours - экстремумы предыдущих часов

Непрочитанное сообщение Velper » 28 апр 2020, 05:48

Супер! Огромная благодарность!

George69
Сообщения: 2
Зарегистрирован: 13 авг 2020, 15:32
Благодарил (а): 2 раза

Re: RangeOfHours - экстремумы предыдущих часов

Непрочитанное сообщение George69 » 14 авг 2020, 13:41

Скажите, пожалуйста, а есть ли такой же индикатор, только не для одного последнего часа, а для двух последних часов?

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: RangeOfHours - экстремумы предыдущих часов

Непрочитанное сообщение evge » 14 авг 2020, 14:41

Сделал универсально, теперь можно задать нужное кол-во часов в параметрах

добавил параметр Hours

George69 писал(а):Скажите, пожалуйста, а есть ли такой же индикатор, только не для одного последнего часа, а для двух последних часов?


в этом случае задаем Hours = 2

RangeHours-01.png
RangeHours, параметр Hours = 2
RangeHours-01.png (37.47 КБ) 1502 просмотра


Код: Выделить всё

function Initialize()
{
  IndicatorName = "RangeHours";
  AddInput("Input", Inputs.Candle);   
  PriceStudy = true;
  AddSeries("Hi", DrawAs.Custom, Color.Green); // максимум предыдущего часа
  AddSeries("Lo", DrawAs.Custom, Color.Red);   // минимум предыдущего часа
  AddSeries("Mid", DrawAs.Custom, Color.Silver);  // средняя цена
  AddParameter("MinScan", 163, 2); // подзагрузка истории количество 5-минутных баров
  AddParameter("CDType", 1);  // Current Data Type - тип текущего часа, 0 - продолжать отображение экстремумов предыдущего часа, 1 - экстремумы текущего часа (будут меняться динамически в течение часа)
  AddParameter("Hours", 1); // кол-во часов
  AddGlobalVariable("High", Types.Double, 0);
  AddGlobalVariable("Low", Types.Double, 0);
  AddGlobalVariable("LastHigh", Types.Double, 0);
  AddGlobalVariable("LastLow", Types.Double, 0);
  AddGlobalVariable("SI", Types.Int, 0);
  AddGlobalVariable("SIO", Types.Int, 0);
  AddGlobalVariable("HRS", Types.Double, 0);
}

function Evaluate()
{
// evge 27.04.2020 https://alfadirect4.ru
//   RangeHours - Индикатор рисует экстремумы предыдущих часов и текущего часа, в зависимости от параметров, продолжая экстремумы предыдущего часа (кол-ва часов Hours) или расчитывая в текущем часе динамически.
//   14.08.2020 - добавлен параметр Hours, где можно задать количество часов для вычисления диапазона.

var isH = false;

//первая свечка часа
//сохранаем текущий индекс и последние найденные High, Low
if ( BarTime().Hours != BarTime(1).Hours)
   {
   HRS += BarTime(0).Hours > BarTime(1).Hours ? BarTime(0).Hours - BarTime(1).Hours : BarTime(0).Hours;
   if (HRS >= Hours)
      {
         isH = true;
      HRS = 0;
      SIO = SI;
      SI = CurrentIndex;
      LastHigh = High;
      LastLow = Low;
   
      //перерисовываем
      if (SIO != 0)
      for (var x=0; x <= CurrentIndex - SIO; x++)
      {
      Hi[x] = High;
      Lo[x] = Low;
      Mid[x] = (Low + High) * 0.5;     
      }
      }
   }

if ((BarTime().Hours != DateTime.Today.Hour) || CDType != 0)
if (isH)
  {
    High = Input.High[0];
    Low = Input.Low[0];   
  }
  else if (BarTime() > AsTime(0, 0, 0))
  {
    if ( Input.High[0] > High) High = Input.High[0];
    if ( Input.Low[0] < Low) Low = Input.Low[0];
  }

if (CDType == 0)
{
   if (LastHigh !=0 && LastLow !=0)
   {
   Hi[0] = LastHigh;
   Lo[0] = LastLow;
   Mid[0] = (LastLow + LastHigh) * 0.5;
   
   Hi.DrawDash();
   Lo.DrawDash();
   Mid.DrawDash();
   }
} else
{

if (SI != 0)
for (var x=0; x <= CurrentIndex - SI; x++)
{
Hi[x] = High;
Lo[x] = Low;
Mid[x] = (Low + High) * 0.5;     
}

Hi.DrawDash();
Lo.DrawDash();
Mid.DrawDash();
}

}
никогда такого не было и вот опять

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: RangeOfHours - экстремумы предыдущих часов

Непрочитанное сообщение evge » 14 авг 2020, 21:44

// 14.08.2020 добавлен пересчет часов под реальный таймфрейм. Для совпадения показаний индикатора с данными графика в указанном таймфрейме (в часах) H1, H2, H3, H4, H6, H8, H12

т.е. теперь должно быть соответствие значений High, Low от таймфрейма значениям Hi, Lo серий для аналогичного таймфрейму значения параметра Hours

RangeHours-02.png
RangeHours-02.png (58.31 КБ) 1460 просмотров

RangeHours-03.png
RangeHours-03.png (34.54 КБ) 1460 просмотров


Код: Выделить всё

function Initialize()
{
  IndicatorName = "RangeHours";
  AddInput("Input", Inputs.Candle);   
  PriceStudy = true;
  AddSeries("Hi", DrawAs.Custom, Color.Green); // максимум предыдущего часа
  AddSeries("Lo", DrawAs.Custom, Color.Red);   // минимум предыдущего часа
  AddSeries("Mid", DrawAs.Custom, Color.Silver);  // средняя цена
  AddParameter("MinScan", 163, 2); // подзагрузка истории количество 5-минутных баров
  AddParameter("CDType", 1);  // Current Data Type - тип текущего часа, 0 - продолжать отображение экстремумов предыдущего часа, 1 - экстремумы текущего часа (будут меняться динамически в течение часа)
  AddParameter("Hours", 4); // кол-во часов
  AddGlobalVariable("High", Types.Double, 0);
  AddGlobalVariable("Low", Types.Double, 0);
  AddGlobalVariable("Open", Types.Double, 0);
  AddGlobalVariable("Close", Types.Double, 0); 
  AddGlobalVariable("LastHigh", Types.Double, 0);
  AddGlobalVariable("LastLow", Types.Double, 0);
  AddGlobalVariable("SI", Types.Int, 0);
  AddGlobalVariable("SIO", Types.Int, 0);
  AddGlobalVariable("HRS", Types.Double, 0);
}

function Evaluate()
{
// evge 27.04.2020 https://alfadirect4.ru
//   RangeHours - Индикатор рисует экстремумы предыдущих часов и текущего часа, в зависимости от параметров, продолжая экстремумы предыдущего часа (кол-ва часов Hours) или расчитывая в текущем часе динамически.
//   14.08.2020 добавлен параметр Hours, где можно задать количество часов для вычисления диапазона.
//   14.08.2020 добавлен пересчет часов под реальный таймфрейм. Для совпадения показаний индикатора с данными графика в указанном таймфрейме (в часах) H1, H2, H3, H4, H6, H8, H12

bool isH = false;

int[] HH = {0,0,0,1,2,0,4,0,2,0,0,0,10};

//первая свечка часа
//сохранаем текущий индекс и последние найденные High, Low
if ( BarTime().Hours != BarTime(1).Hours)
   {
   bool NewDay = BarTime(0).Hours < BarTime(1).Hours;
   HRS = BarTime(0).Hours > BarTime(1).Hours ? HRS + BarTime(0).Hours - BarTime(1).Hours : Hours > 0 && Hours <= 12 ? HH[(int)Hours] : BarTime(0).Hours;
   if (HRS >= Hours || NewDay)
      {
         isH = true;
      if (!NewDay) HRS = 0;
      SIO = SI;
      SI = CurrentIndex;
      LastHigh = High;
      LastLow = Low;
   
      //перерисовываем
      if (SIO != 0)
      for (var x=0; x <= CurrentIndex - SIO; x++)
      {
      Hi[x] = High;
      Lo[x] = Low;
      Mid[x] = (Low + High) * 0.5;
      }
      }
   }

if ((BarTime().Hours != DateTime.Today.Hour) || CDType != 0)
if (isH)
  {
    High = Input.High[0];
    Low = Input.Low[0];
    Open = Input.Open[0];
    Close = Input.Close[0]; 
  }
  else if (BarTime() > AsTime(0, 0, 0))
  {
    if ( Input.High[0] > High) High = Input.High[0];
    if ( Input.Low[0] < Low) Low = Input.Low[0];
    Close = Input.Close[0];
  }

if (CDType == 0)
{
   if (LastHigh !=0 && LastLow !=0)
   {
   Hi[0] = LastHigh;
   Lo[0] = LastLow;
   Mid[0] = (LastLow + LastHigh) * 0.5;
   
   Hi.DrawDash();
   Lo.DrawDash();
   Mid.DrawDash();
   }
} else
{

if (SI != 0)
for (var x=0; x <= CurrentIndex - SI; x++)
{
Hi[x] = High;
Lo[x] = Low;
Mid[x] = (Low + High) * 0.5;     
}

Hi.DrawDash();
Lo.DrawDash();
Mid.DrawDash();

}

}
никогда такого не было и вот опять

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: RangeOfHours - экстремумы предыдущих часов

Непрочитанное сообщение evge » 15 авг 2020, 09:22

Вариация с отображением в виде баров на графике от таймфрейма Hours

RangeHours-04.png
GZU0, RangeHoursBars, Hours = 1, Таймфрейм M5
RangeHours-04.png (42.99 КБ) 1421 просмотр

RangeHours-05.png
GZU0, RangeHoursBars, Hours = 1, Таймфрейм M5
RangeHours-05.png (40.91 КБ) 1420 просмотров

RangeHours-06.png
GZU0, График с таймфреймом H1
RangeHours-06.png (26.37 КБ) 1420 просмотров

Код: Выделить всё

function Initialize()
{
  IndicatorName = "RangeHoursBars";
  AddInput("Input", Inputs.Candle);   
  PriceStudy = true;
  AddSeries("H", DrawAs.Custom, Color.Black);
  AddSeries("L", DrawAs.Custom, Color.Black);
  AddSeries("Ou", DrawAs.Custom, Color.Green);
  AddSeries("Cu", DrawAs.Custom, Color.Green);   
  AddSeries("Od", DrawAs.Custom, Color.Red);
  AddSeries("Cd", DrawAs.Custom, Color.Red);   
  AddSeries("Mid", DrawAs.Custom, Color.Silver);  // средняя цена
  AddParameter("MinScan", 163, 2); // подзагрузка истории количество 5-минутных баров
  AddParameter("Hours", 1); // кол-во часов
  AddGlobalVariable("High", Types.Double, 0);
  AddGlobalVariable("Low", Types.Double, 0);
  AddGlobalVariable("Open", Types.Double, 0);
  AddGlobalVariable("Close", Types.Double, 0); 
  AddGlobalVariable("LastHigh", Types.Double, 0);
  AddGlobalVariable("LastLow", Types.Double, 0);
  AddGlobalVariable("SI", Types.Int, 0);
  AddGlobalVariable("SIO", Types.Int, 0);
  AddGlobalVariable("HRS", Types.Double, 0);
}

function Evaluate()
{
// evge 27.04.2020 https://alfadirect4.ru
//   RangeHours - Индикатор рисует экстремумы предыдущих часов и текущего часа, в зависимости от параметров, продолжая экстремумы предыдущего часа (кол-ва часов Hours) или расчитывая в текущем часе динамически.
//   14.08.2020 добавлен параметр Hours, где можно задать количество часов для вычисления диапазона.
//   14.08.2020 добавлен пересчет часов под реальный таймфрейм. Для совпадения показаний индикатора с данными графика в указанном таймфрейме (в часах) H1, H2, H3, H4, H6, H8, H12
//   15.08.2020 отрисовка в виде баров часовых таймфремов Hours

bool isH = false;

int[] HH = {0,0,0,1,2,0,4,0,2,0,0,0,10};

//первая свечка часа
//сохранаем текущий индекс и последние найденные High, Low
if ( BarTime().Hours != BarTime(1).Hours)
   {
   bool NewDay = BarTime(0).Hours < BarTime(1).Hours;
   HRS = BarTime(0).Hours > BarTime(1).Hours ? HRS + BarTime(0).Hours - BarTime(1).Hours : Hours > 0 && Hours <= 12 ? HH[(int)Hours] : BarTime(0).Hours;
   if (HRS >= Hours || NewDay)
      {
         isH = true;
      if (!NewDay) HRS = 0;
      SIO = SI;
      SI = CurrentIndex;
      LastHigh = High;
      LastLow = Low;
   
      //перерисовываем
      if (SIO != 0)
      for (var x=0; x <= CurrentIndex - SIO; x++)
      {
       Mid[x] = (Open + Close) * 0.5;
      if (Math.Round((CurrentIndex - SIO) * 0.5) == x)
         {
         H[x] = High;
            L[x] = Low;
         } else
      {
         H[x] = Mid[x];
            L[x] = Mid[x];
         }         
      Ou[x] = Mid[x];
      Cu[x] = Mid[x];
      Od[x] = Mid[x];
      Cd[x] = Mid[x];
       if (Close > Open)
          {
         Ou[x] = Open;
            Cu[x] = Close;
         }
       if (Close < Open)
          {
         Od[x] = Open;
            Cd[x] = Close;
         }
            
      }
      }
   }

if (isH)
  {
    High = Input.High[0];
    Low = Input.Low[0];
    Open = Input.Open[0];
    Close = Input.Close[0]; 
  }
  else if (BarTime() > AsTime(0, 0, 0))
  {
    if ( Input.High[0] > High) High = Input.High[0];
    if ( Input.Low[0] < Low) Low = Input.Low[0];
    Close = Input.Close[0];
  }

if (SI != 0)
for (var x=0; x <= CurrentIndex - SI; x++)
{
Mid[x] = (Open + Close) * 0.5;
if (Math.Round((CurrentIndex - SI) * 0.5) == x)
   {
      H[x] = High;
      L[x] = Low;
   }
   else
   {
   H[x] = Mid[x];
   L[x] = Mid[x];
   }
Ou[x] = Mid[x];
Cu[x] = Mid[x];
Od[x] = Mid[x];
Cd[x] = Mid[x];
if (Close > Open)
   {
      Ou[x] = Open;
      Cu[x] = Close;
   }
if (Close < Open)
   {
      Od[x] = Open;
      Cd[x] = Close;
   }
}

H.DrawVertical(L);
if (!isH)
{
   Ou.DrawChannel(Cu);
   Od.DrawChannel(Cd);   
}

}
никогда такого не было и вот опять

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: RangeOfHours - экстремумы предыдущих часов

Непрочитанное сообщение evge » 15 авг 2020, 09:39

Вариант без рисования "хвостов" внутри баров

RangeHours-07.png
GZU0, RangeHoursBars, Hours = 1, Таймфрейм M5
RangeHours-07.png (40.39 КБ) 1418 просмотров


Код: Выделить всё

function Initialize()
{
  IndicatorName = "RangeHoursBars";
  AddInput("Input", Inputs.Candle);   
  PriceStudy = true;
  AddSeries("Hu", DrawAs.Custom, Color.Black);
  AddSeries("Lu", DrawAs.Custom, Color.Black);
  AddSeries("Hd", DrawAs.Custom, Color.Black);
  AddSeries("Ld", DrawAs.Custom, Color.Black);   
  AddSeries("Ou", DrawAs.Custom, Color.Green);
  AddSeries("Cu", DrawAs.Custom, Color.Green);   
  AddSeries("Od", DrawAs.Custom, Color.Red);
  AddSeries("Cd", DrawAs.Custom, Color.Red);   
  AddSeries("Mid", DrawAs.Custom, Color.Silver);  // средняя цена
  AddParameter("MinScan", 163, 2); // подзагрузка истории количество 5-минутных баров
  AddParameter("Hours", 1); // кол-во часов
  AddGlobalVariable("High", Types.Double, 0);
  AddGlobalVariable("Low", Types.Double, 0);
  AddGlobalVariable("Open", Types.Double, 0);
  AddGlobalVariable("Close", Types.Double, 0); 
  AddGlobalVariable("LastHigh", Types.Double, 0);
  AddGlobalVariable("LastLow", Types.Double, 0);
  AddGlobalVariable("SI", Types.Int, 0);
  AddGlobalVariable("SIO", Types.Int, 0);
  AddGlobalVariable("HRS", Types.Double, 0);
}

function Evaluate()
{
// evge 27.04.2020 https://alfadirect4.ru
//   RangeHours - Индикатор рисует экстремумы предыдущих часов и текущего часа, в зависимости от параметров, продолжая экстремумы предыдущего часа (кол-ва часов Hours) или расчитывая в текущем часе динамически.
//   14.08.2020 добавлен параметр Hours, где можно задать количество часов для вычисления диапазона.
//   14.08.2020 добавлен пересчет часов под реальный таймфрейм. Для совпадения показаний индикатора с данными графика в указанном таймфрейме (в часах) H1, H2, H3, H4, H6, H8, H12
//   15.08.2020 отрисовка в виде баров часовых таймфремов Hours

bool isH = false;

int[] HH = {0,0,0,1,2,0,4,0,2,0,0,0,10};

//первая свечка часа
//сохранаем текущий индекс и последние найденные High, Low
if ( BarTime().Hours != BarTime(1).Hours)
   {
   bool NewDay = BarTime(0).Hours < BarTime(1).Hours;
   HRS = BarTime(0).Hours > BarTime(1).Hours ? HRS + BarTime(0).Hours - BarTime(1).Hours : Hours > 0 && Hours <= 12 ? HH[(int)Hours] : BarTime(0).Hours;
   if (HRS >= Hours || NewDay)
      {
         isH = true;
      if (!NewDay) HRS = 0;
      SIO = SI;
      SI = CurrentIndex;
      LastHigh = High;
      LastLow = Low;
   
      //перерисовываем
      if (SIO != 0)
      for (var x=0; x <= CurrentIndex - SIO; x++)
      {
       Mid[x] = (Open + Close) * 0.5;
      if (Math.Round((CurrentIndex - SIO) * 0.5) == x)
         {
         Hu[x] = High;
            Lu[x] = Math.Max(Open, Close);
         Hd[x] = Math.Min(Open, Close);
            Ld[x] = Low;
         } else
      {
         Hu[x] = Mid[x];
            Lu[x] = Mid[x];
         Hd[x] = Mid[x];
            Ld[x] = Mid[x];
         }         
      Ou[x] = Mid[x];
      Cu[x] = Mid[x];
      Od[x] = Mid[x];
      Cd[x] = Mid[x];
       if (Close > Open)
          {
         Ou[x] = Open;
            Cu[x] = Close;
         }
       if (Close < Open)
          {
         Od[x] = Open;
            Cd[x] = Close;
         }
            
      }
      }
   }

if (isH)
  {
    High = Input.High[0];
    Low = Input.Low[0];
    Open = Input.Open[0];
    Close = Input.Close[0]; 
  }
  else if (BarTime() > AsTime(0, 0, 0))
  {
    if ( Input.High[0] > High) High = Input.High[0];
    if ( Input.Low[0] < Low) Low = Input.Low[0];
    Close = Input.Close[0];
  }

if (SI != 0)
for (var x=0; x <= CurrentIndex - SI; x++)
{
Mid[x] = (Open + Close) * 0.5;
if (Math.Round((CurrentIndex - SI) * 0.5) == x)
   {
         Hu[x] = High;
            Lu[x] = Math.Max(Open, Close);
         Hd[x] = Math.Min(Open, Close);
            Ld[x] = Low;
   }
   else
   {
   Hu[x] = Mid[x];
   Lu[x] = Mid[x];
   Hd[x] = Mid[x];
   Ld[x] = Mid[x];
   }
Ou[x] = Mid[x];
Cu[x] = Mid[x];
Od[x] = Mid[x];
Cd[x] = Mid[x];
if (Close > Open)
   {
      Ou[x] = Open;
      Cu[x] = Close;
   }
if (Close < Open)
   {
      Od[x] = Open;
      Cd[x] = Close;
   }
}

Hu.DrawVertical(Lu);
Hd.DrawVertical(Ld);
if (!isH)
{
   Ou.DrawChannel(Cu);
   Od.DrawChannel(Cd);   
}

}
никогда такого не было и вот опять


Вернуться в «Пользовательские индикаторы»

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и 2 гостя