Страница 1 из 1

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

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

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

Добавлено: 30 янв 2022, 20:24
evge
Приветствую!

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

Считывание других инструменты в индикаторах АД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 КБ) 17464 просмотра

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

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

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

Добавлено: 02 фев 2022, 18:03
vlad195050
Большое спасибо

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

Добавлено: 03 дек 2022, 22:57
DoTiger
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);

}