Общие вопросы по разработке > Написание индикатора с окраской бара инструмента

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
vlad195050
Сообщения: 16
Зарегистрирован: 03 июн 2017, 17:50

Написание индикатора с окраской бара инструмента

Непрочитанное сообщение vlad195050 » 30 янв 2022, 19:18

Злравствуйте Евгений. Как можно подкрасить бар / свечу/ инструмента при достижении числового значения встроенного индикатора, например: При достижении значении Дельты равным или больше 2000 то бар РТС , соответствующиий этому событию, окрасить в зеленый цвет.

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

Re: Написание индикатора с окраской бара инструмента

Непрочитанное сообщение evge » 30 янв 2022, 20:24

Приветствую!

Пример как окрасить (на всех барах)
Нужное условие отбора нужных для отрисовки баров можно добавить в код.

Считывание других инструменты в индикаторах АД4 почему-то не завезли, в отличие от стратегий.
Поэтому анализ условий рисования можно делать только по текущему инструменту.

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

function Initialize()
{
IndicatorName = "BarColor"; //Оптимистический вариант :)
PriceStudy = true;
AddInput("Input", Inputs.Candle, 1, true, "");

AddSeries("O", DrawAs.Custom, Color.Transparent);
AddSeries("C", DrawAs.Custom, Color.Transparent);   

}

function Evaluate()
{

var I = Input;

var BarColor = Color.Green;

O = I.Open[0];
C = I.Close[0];

O.DrawHistogram(C, BarColor, LineStyles.Solid, 1, BarColor, 100);

}


BarColor-01.png
BarColor-01.png (29.96 КБ) 20335 просмотров
никогда такого не было и вот опять

BugsDigger
Сообщения: 535
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 92 раза

Re: Написание индикатора с окраской бара инструмента

Непрочитанное сообщение BugsDigger » 31 янв 2022, 07:03

Не совсем понятно, зачем вообще красить бар. Самое простое - поставить отметку какую-то (кружок, квадратик, стрелку) обычным методом, т.е. завести специальную серию для этого.


DoTiger
Сообщения: 3
Зарегистрирован: 03 дек 2022, 22:44

Re: Написание индикатора с окраской бара инструмента

Непрочитанное сообщение DoTiger » 03 дек 2022, 22:57

evge писал(а):Пример как окрасить (на всех барах)
Нужное условие отбора нужных для отрисовки баров можно добавить в код.


Добрый вечер!
Подскажите, пож-та, как решить проблему. В продолжение заданного здесь вопроса и выложенного Вами кода, я дописываю условие "раскраски" бара, если Дельта больше ил меньше какого-то порогового значения. Однако получается, что график масштабируется таким образом, чтобы на шкалу справа могло попасть значение Дельты. К примеру, если у инструмента сам график в зоне 2000-2400, но Дельта = 100, то весь график масштабируется в диапазон 100-2400.

UPD:
Кажется удалось решить, добавил сюда false
AddSeries("Delta", DrawAs.Custom, Color.Transparent, false);


Код:

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

function Initialize()
{
IndicatorName = "BarColor2";
PriceStudy = true;
AddInput("Input", Inputs.Candle, 1, true, "");

AddSeries("Delta", DrawAs.Custom, Color.Transparent, false);   
AddSeries("O", DrawAs.Custom, Color.Transparent); 
AddSeries("C", DrawAs.Custom, Color.Transparent);   
AddSeries("H", DrawAs.Custom, Color.Transparent);   
AddSeries("L", DrawAs.Custom, Color.Transparent);   

}

function Evaluate()
{

  var I = Input;

  O = I.Open[0];
  C = I.Close[0];
  H = I.High[0];
  L = I.Low[0];

  // Delta (Дельта) - разница между объемом сделок покупателей  и продавцов
  Delta = Input.VolumeAsk[0] - Input.VolumeBid[0];
 
  if (Delta >= 4000 ) 

      H.DrawHistogram(L, Color.Transparent, LineStyles.Solid, 1, Color.Green, 20);   

  if (Delta <= -4000 )

      L.DrawHistogram(H, Color.Transparent, LineStyles.Solid, 1, Color.Red, 20);

}


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

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

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