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

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

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 КБ) 34381 просмотр

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


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

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

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 КБ) 1383 скачивания
никогда такого не было и вот опять

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
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 363 раза
Контактная информация:

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

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

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

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

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


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

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


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

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
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 363 раза
Контактная информация:

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 КБ) 32941 просмотр

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


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

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
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 363 раза
Контактная информация:

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

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

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

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

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

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

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

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
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 363 раза
Контактная информация:

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

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

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

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


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

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

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

Аватара пользователя
Pavelkor
Сообщения: 21
Зарегистрирован: 05 фев 2016, 10:57
Откуда: Москва
Благодарил (а): 3 раза

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

Непрочитанное сообщение Pavelkor » 25 мар 2021, 22:23

Здравствуйте!
Классный индикатор, спасибо! Очень удобно, что можно задать любое значение "Hours".
При значении "Hours" 24 вообще получаются дневные свечи поверх любых других младших таймфреймов.
А теперь замечания-пожелания и просто пожелания.
1. Евгений, это не очень критично, но если исправить некоторые вещи, о которых я сбивчиво рассказал в ролике https://take.ms/6U8hz, то будет совсем красиво.
2. Можно сделать индикатор по такому принципу, чтобы он строил НЕДЕЛЬНЫЕ свечи поверх свечей младших таймфреймов?
3. Можно сделать индикатор по такому принципу, чтобы он строил МЕСЯЧНЫЕ свечи поверх свечей младших таймфреймов?

Аватара пользователя
Pavelkor
Сообщения: 21
Зарегистрирован: 05 фев 2016, 10:57
Откуда: Москва
Благодарил (а): 3 раза

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

Непрочитанное сообщение Pavelkor » 21 окт 2021, 21:54

Здравствуйте!
Евгений, можно ли в индикаторе (индикаторах) сделать так, чтобы индикатор(ы) можно было убирать/визуализировать по горячей клавише.

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

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

Непрочитанное сообщение evge » 22 окт 2021, 22:20

Программно в индикаторе - нет.
никогда такого не было и вот опять


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей