Общие вопросы по разработке > Как на графике вывести текстовое сообщение

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Владимир
Сообщения: 84
Зарегистрирован: 14 ноя 2016, 02:17
Благодарил (а): 3 раза
Поблагодарили: 5 раз

Как на графике вывести текстовое сообщение

Непрочитанное сообщение Владимир » 10 мар 2017, 04:15

Добрый день! Подскажите как на графике вывести текст сообщения. Индикатор высчитывает среднее значение АТР, за заданный период. Выводить в лог как то неправильно! Поэтому хотелось бы прямо на график.

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

function Initialize()
{
// Обязательные параметры:
   IndicatorName = "ATR-X";   // Задайте название индикатора и сохраните с данным именем
   PriceStudy = true;   // Рисовать в области цены (true – да, false – нет)
   AddInput("Input", Inputs.Candle);   // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
   AddSeries("A", DrawAs.Line, Color.Red);   // Задаем вид линии индикатора A
// Дополнительные параметры:
AddParameter("Scan", 20, 1);      // Сканируемый период
 //AddVariable("Z", 0);   // Задаем имя глобальной переменной и её значение
}

function Evaluate()
//Владимир
{
       double ATRx=0.0;
      double ATRxn=0.0;
      int Scanx = (int)(Scan);
if ((MaxIndex - CurrentIndex) > Scan) return;
{
   if (CurrentIndex == MaxIndex)
      {
         for (var x= Scanx; x>0; x--)
         {// расчёт атр
         ATRx=Input.High[x]-Input.Low[x];
         ATRxn=ATRxn+ATRx;
      //   LogData ("ATRx-" + Convert.ToString(x) +" = " + Convert.ToString(Math.Round(ATRx)) , IndicatorName);
         }
   LogData ("ATR ср = " + Convert.ToString(Math.Round(ATRxn/(Scanx))) , IndicatorName);   
      }// OFF if (CurrentIndex == MaxIndex)
 }  // OFF if ((MaxIndex - CurrentIndex) > Scan) return;
}

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

Re: Как на графике вывести текстовое сообщение

Непрочитанное сообщение evge » 10 мар 2017, 09:29

Пока никак не вывести, т.к. нет таких функций. В новых АД4 может быть реализуют.
Этот вопрос в прошлом или позапрошлом году задавался на офиц. форуме мной.
никогда такого не было и вот опять

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

Re: Как на графике вывести текстовое сообщение

Непрочитанное сообщение evge » 10 мар 2017, 10:20

Есть вариант вывести в виде дополнительной серии

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

 AddSeries("B", DrawAs.Line, Color.Black);


заполнять и выводить её, установив в индикаторе показывать последнее значение (галочка в настройках индикатора после вывода его на график)

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

B[0] = Math.Round(ATRxn/(Scanx));


можно у серии поставить DrawAs.Custom и не рисовать её принудительно, точно не помню, но её последнее значение должно отображаться на вертикальной шкале индикатора справа, после установки галочки "показывать последнее значение".
никогда такого не было и вот опять

Владимир
Сообщения: 84
Зарегистрирован: 14 ноя 2016, 02:17
Благодарил (а): 3 раза
Поблагодарили: 5 раз

Re: Как на графике вывести текстовое сообщение

Непрочитанное сообщение Владимир » 10 мар 2017, 12:56

Спасибо Евгений! Попробовал это конечно не то что хочется но уже пользоваться можно!
Кому интересно

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

function Initialize()
{
// Обязательные параметры:
   IndicatorName = "ATR-X";   // Задайте название индикатора и сохраните с данным именем
   PriceStudy = false;   // Рисовать в области цены (true – да, false – нет)
   AddInput("Input", Inputs.Candle);   // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
 //  AddSeries("A", DrawAs.Line, Color.Red);   // Задаем вид линии индикатора A
   AddSeries("B", DrawAs.Line, Color.Black);
// Дополнительные параметры:
AddParameter("Scan", 20, 1);      // Сканируемый период
}

function Evaluate()
//Владимир
{
       double ATRx=0.0;
      double ATRxn=0.0;
      int Scanx = (int)(Scan);
if ((MaxIndex - CurrentIndex) > Scan) return;
{
   if (CurrentIndex == MaxIndex)
      {
         for (var x= Scanx; x>0; x--)
         {// расчёт атр
         ATRx=Input.High[x]-Input.Low[x];
         ATRxn=ATRxn+ATRx;
      //   LogData ("ATRx-" + Convert.ToString(x) +" = " + Convert.ToString(Math.Round(ATRx)) , IndicatorName);
         }
   // LogData ("ATR ср = " + Convert.ToString(Math.Round(ATRxn/(Scanx))) , IndicatorName);  //строка вывода в лог
   B[0] = Math.Round(ATRxn/(Scanx));
      }// OFF if (CurrentIndex == MaxIndex)
 }  // OFF if ((MaxIndex - CurrentIndex) > Scan) return;
}
Вложения
Знач АТР.jpg


Вернуться в «Общие вопросы по разработке»

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

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