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

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Gemin
Сообщения: 23
Зарегистрирован: 06 сен 2016, 18:02

Вопрос по графике

Непрочитанное сообщение Gemin » 07 окт 2016, 17:25

Добрый вечер, Evge.
Если не сложно, подскажите как прописать в скрипте, чтобы отображение индикатора на текущем баре было бы с прозрачностью цвета 100, а сместившись стала 50 на примере Macd.
Спасибо!

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

function Initialize()
{   
IndicatorName = "MACD";
PriceStudy = false;         
AddInput("Input", Inputs.Price);               
AddParameter("PFast", 10);                        
AddParameter("PSlow", 20, 2);
AddParameter("PSig", 10);                        
AddSeries("Line", DrawAs.Custom, Color.Gray);   
AddSeries("Signal", DrawAs.Custom, Color.Red);   
AddLevel(0, Color.Gray, "Line");

AddGlobalVariable("EMA1", Types.Double,  0.0);
AddGlobalVariable("EMA2", Types.Double,  0.0);
AddGlobalVariable("KC1", Types.Double, 0.0);
AddGlobalVariable("KC2", Types.Double, 0.0);
AddGlobalVariable("KC", Types.Double, 0.0);
}

function Evaluate()
{
// AlfaDirect. 2015. 
// Схождение и расхождение скользящих средних
// (MACD - Moving Average convergence & divergence).
// Автор -  Джеральд Аппель (Gerald Appel).
   if( CurrentIndex < 1 )
   {   
      EMA1 = Input[0];                                      
      EMA2 = Input[0];                                      
     Line = 0.0;
     Signal = 0.0;
       KC1 = 2.0 /  ((double) PFast + 1.0);
       KC2 = 2.0 / ((double) PSlow + 1.0);
       KC  = 2.0 / ((double) PSig  + 1.0);
   }
   else
   {
       EMA1 = (1.0 - KC1)*EMA1 + KC1*Input[0];
       EMA2 = (1.0 - KC2)*EMA2 + KC2*Input[0];
      Line  = EMA1 - EMA2;
      Signal  = (1.0 - KC)*Signal[-1] + KC*Line;
   }
  if (Line > Signal)
       Line.DrawChannel(Signal, Color.Blue, 100);
  else
      Line.DrawChannel(Signal, Color.Red, 100);
}

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

Re: Вопрос по графике

Непрочитанное сообщение evge » 07 окт 2016, 20:36

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

Например вот так. Если правильно понял вопрос.

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

function Initialize()
{   
IndicatorName = "MACD";
PriceStudy = false;         
AddInput("Input", Inputs.Price);               
AddParameter("PFast", 10);                       
AddParameter("PSlow", 20, 2);
AddParameter("PSig", 10);                       
AddSeries("Line", DrawAs.Custom, Color.Gray);   
AddSeries("Signal", DrawAs.Custom, Color.Red);   
AddLevel(0, Color.Gray, "Line");

AddGlobalVariable("EMA1", Types.Double,  0.0);
AddGlobalVariable("EMA2", Types.Double,  0.0);
AddGlobalVariable("KC1", Types.Double, 0.0);
AddGlobalVariable("KC2", Types.Double, 0.0);
AddGlobalVariable("KC", Types.Double, 0.0);
}

function Evaluate()
{
// AlfaDirect. 2015. 
// Схождение и расхождение скользящих средних
// (MACD - Moving Average convergence & divergence).
// Автор -  Джеральд Аппель (Gerald Appel).
   if( CurrentIndex < 1 )
   {   
      EMA1 = Input[0];                                     
      EMA2 = Input[0];                                     
     Line = 0.0;
     Signal = 0.0;
       KC1 = 2.0 /  ((double) PFast + 1.0);
       KC2 = 2.0 / ((double) PSlow + 1.0);
       KC  = 2.0 / ((double) PSig  + 1.0);
   }
   else
   {
       EMA1 = (1.0 - KC1)*EMA1 + KC1*Input[0];
       EMA2 = (1.0 - KC2)*EMA2 + KC2*Input[0];
      Line  = EMA1 - EMA2;
      Signal  = (1.0 - KC)*Signal[-1] + KC*Line;
   }

var A = 50;
if (CurrentIndex == MaxIndex) A = 100;

if (Line > Signal)
Line.DrawChannel(Signal, Color.Blue, A);
else
Line.DrawChannel(Signal, Color.Red, A);

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

Gemin
Сообщения: 23
Зарегистрирован: 06 сен 2016, 18:02

Re: Вопрос по графике

Непрочитанное сообщение Gemin » 09 окт 2016, 20:31

Добрый вечер!
Спасибо!!!

Gemin
Сообщения: 23
Зарегистрирован: 06 сен 2016, 18:02

Re: Вопрос по графике

Непрочитанное сообщение Gemin » 09 ноя 2016, 21:34

Добрый вечер, Evge!
Посмотрел справочники по индикаторам и скриптам, но так и не нашел, как изменить цвет и толщину уровня на примере простого индикатора Last при условиях:

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

        if (Input[0] > Input.Close[-1])  // то зеленый цвет, толщиной …
        if (Input[0] < Input.Close[-1])  // то красный цвет, толщиной …
Спасибо!
P.s. Пробовал два уровня задать в области инициализации, но в случае исполнения в течении бара обоих условий отражаются два уровня, только правильный динамичный с ценой, а другой статичен…

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

Re: Вопрос по графике

Непрочитанное сообщение evge » 09 ноя 2016, 21:53

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

if (...)
{
Levels[0].Level = 12.0;  // уровень
Levels[0].Color = Color.Red; // цвет
Levels[0].Style = Line.Dot; // стиль линии: Line.Solid, Line.DashBig, Line.DashSmall, Line.Dot;
Levels[0].Width = 3; // толщина линии
}
никогда такого не было и вот опять

Gemin
Сообщения: 23
Зарегистрирован: 06 сен 2016, 18:02

Re: Вопрос по графике

Непрочитанное сообщение Gemin » 10 ноя 2016, 09:55

Спасибо!
Работает!


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

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

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