Пользовательские индикаторы > Вывод числовых значений на график.

Дополнительные индикаторы от пользователей Альфа-Директ 4. Готовые решения от пользователей.
Максим
Сообщения: 16
Зарегистрирован: 07 апр 2019, 11:01
Благодарил (а): 14 раз

Вывод числовых значений на график.

Непрочитанное сообщение Максим » 28 мар 2021, 19:02

Здравствуйте. Хотел, чтобы индикатор показывал в окне графика (например, в его левой верхней части), расчетную ширину ценового канала на текущий момент: MY.PriceChannel4(Input1, Period).GetValue("Upper", 0)-MY.PriceChannel4(Input1, Period).GetValue("Lower", 0) , но не понял, как это можно сделать.
Скрипт индикатора:

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

function Initialize()
{
// Определение параметров индикатора
  IndicatorName = "PriceChannel4";                  
  AddInput("Input", Inputs.Candle);                  
  AddParameter("Period", 50, 1);                     
  PriceStudy = true;                                 
  AddSeries("Upper", DrawAs.Line, Color.Blue);   
  AddSeries("Lower", DrawAs.Line, Color.Red);      
  AddGlobalVariable("Uppers", Types.DoubleList);
  AddGlobalVariable("Lowers", Types.DoubleList);
}

function Evaluate()
{
// AlfaDirect. 2015. 
// Верхняя линия "Upper" - максимальная цена за Period
// Нижняя линия "Lower" - минимальная цена за Period
   var high = Input.High[0];
   var low = Input.Low[0];
   Uppers.Add(high);
   Lowers.Add(low);
   if ( CurrentIndex > Period )
   {
       Uppers.RemoveAt(0);
       for (var i = 0; i < Uppers.Count-1; i++)
          high = Math.Max(Uppers[i], high);
       Lowers.RemoveAt(0);
       for (var i = 0; i < Lowers.Count-1; i++)
          low = Math.Min(Lowers[i], low);
   }
   Upper = high;
   Lower = low;
}

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

Re: Вывод числовых значений на график.

Непрочитанное сообщение evge » 28 мар 2021, 19:13

Здравствуйте!

Текст выводить индикаторы не умеют на данный момент.

Решить можно выводом в отдельную область и отображением последнего значения.

вот так:

PriceChannel-01.png
PriceChannel-01.png (31.99 КБ) 8168 просмотров


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

function Initialize()
{
// Определение параметров индикатора
  IndicatorName = "PriceChannel4";                 
  AddInput("Input", Inputs.Candle);                 
  AddParameter("Period", 50, 1);                     
  PriceStudy = true;                                 
  AddSeries("ChannelWidth", DrawAs.Histogram, Color.Black, true, Axes.New);     
  AddSeries("Upper", DrawAs.Line, Color.Blue);   
  AddSeries("Lower", DrawAs.Line, Color.Red);     
  AddGlobalVariable("Uppers", Types.DoubleList);
  AddGlobalVariable("Lowers", Types.DoubleList);
}

function Evaluate()
{
// AlfaDirect. 2015.
// Верхняя линия "Upper" - максимальная цена за Period
// Нижняя линия "Lower" - минимальная цена за Period

// evge 28.03.2021 https://alfadirect4.ru
// добавлено отображение ширины канала в отдельной области

   var high = Input.High[0];
   var low = Input.Low[0];
   Uppers.Add(high);
   Lowers.Add(low);
   if ( CurrentIndex > Period )
   {
       Uppers.RemoveAt(0);
       for (var i = 0; i < Uppers.Count-1; i++)
          high = Math.Max(Uppers[i], high);
       Lowers.RemoveAt(0);
       for (var i = 0; i < Lowers.Count-1; i++)
          low = Math.Min(Lowers[i], low);
   }
   Upper = high;
   Lower = low;
   ChannelWidth = high - low;
}
никогда такого не было и вот опять

Максим
Сообщения: 16
Зарегистрирован: 07 апр 2019, 11:01
Благодарил (а): 14 раз

Re: Вывод числовых значений на график.

Непрочитанное сообщение Максим » 28 мар 2021, 19:30

Спасибо, оригинальное решение )


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

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

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