Общие вопросы по разработке > Заливка *ЛЕНТЫ* цены

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Аватара пользователя
Den
Сообщения: 352
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Заливка *ЛЕНТЫ* цены

Непрочитанное сообщение Den » 10 июн 2020, 14:41

Добрый день, друзья!

Подскажите, как можно залить такую "трёхмерную" ленту индикатора, через DrawArea или DrawChannel?

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

if ( CurrentIndex < Period)
{
D = D + Input[0];
SMA = D / (CurrentIndex + 1);
}
else
{
D = D + Input[0] - Input[(int)(-Period)] ;
SMA = D / Period;
}
if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == lastLVal.Y)

SMA.DrawDash(Color.Cyan, Line.Solid, 3, 5);//SMA.DrawLine(Color.Cyan,Line.Solid,5);



if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == lastHVal.Y )

SMA.DrawDash(Color.Magenta, Line.Solid, 3, 5);//SMA.DrawLine(Color.Magenta,Line.Solid,5);

}
Вложения
лента 1.jpg
Последний раз редактировалось Den 11 июн 2020, 17:40, всего редактировалось 1 раз.

Аватара пользователя
Den
Сообщения: 352
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Заливка *ЛЕНТЫ* цены

Непрочитанное сообщение Den » 10 июн 2020, 22:54

И есть ли возможность соединить концы DrawDash?
Вложения
лента 2.jpg

Аватара пользователя
Den
Сообщения: 352
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Заливка *ЛЕНТЫ* цены

Непрочитанное сообщение Den » 11 июн 2020, 17:10

Почему функция отображения Series.DrawDash(Color color, LineStyles style, int width, int delta = 0); рисуя горизонтальную линию на данном баре шириной delta, делает при этом отступ от [0] на delta баров?
Вложения
линия 4.jpg
линия 4.jpg

Аватара пользователя
Tyler_Durden
Сообщения: 68
Зарегистрирован: 01 дек 2017, 20:42
Благодарил (а): 6 раз

Re: Заливка *ЛЕНТЫ* цены

Непрочитанное сообщение Tyler_Durden » 14 июн 2020, 14:26

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

Series.DrawDash(Color color, LineStyles style, int width, int delta = 0);
от ряда до ряда наверное как-то надо рисовать. Вводить серию

Аватара пользователя
Den
Сообщения: 352
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Заливка *ЛЕНТЫ* цены

Непрочитанное сообщение Den » 16 июн 2020, 15:55

Дмитрий (oxi), может вы подскажете как "залить" эту ленту индикатора?

oxi
Сообщения: 160
Зарегистрирован: 20 сен 2016, 23:20
Благодарил (а): 12 раз
Поблагодарили: 66 раз

Re: Заливка *ЛЕНТЫ* цены

Непрочитанное сообщение oxi » 16 июн 2020, 17:50

У вас sma. Точки на конце полос - это запаздывающая sma.
Снимок.PNG


Так?

Аватара пользователя
Den
Сообщения: 352
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Заливка *ЛЕНТЫ* цены

Непрочитанное сообщение Den » 17 июн 2020, 15:10

Дмитрий, спасибо за ответ.

да, у меня sma, меняющая цвет по сигналу пользовательского индикатора

ДА, ИМЕННО ТАК!

Представьте код, пожалуйста

oxi
Сообщения: 160
Зарегистрирован: 20 сен 2016, 23:20
Благодарил (а): 12 раз
Поблагодарили: 66 раз

Re: Заливка *ЛЕНТЫ* цены

Непрочитанное сообщение oxi » 17 июн 2020, 15:16

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

function Initialize()
{
  IndicatorName = "SMA_III";
  PriceStudy = true ;
  AddInput("Input", Inputs.Price);         
  AddParameter("Period", 20);                   
  AddGlobalVariable("SUM", Types.Double, 0);
  AddSeries("SMA", DrawAs.Custom, Color.Red);   
  AddSeries("D", DrawAs.Custom, Color.Blue);   
  AddSeries("DS", DrawAs.Custom, Color.Blue);   
 
}

function Evaluate()
{


int p = MaxIndex - CurrentIndex;
if( p >= Period)
   p = (int)Period;

if ( CurrentIndex < Period)
{
   SUM = SUM + Input[0];
   SMA = SUM / (CurrentIndex + 1);
}
else
{
   SUM = SUM + Input[0] - Input[(int)(Period)] ;
   SMA = SUM / Period;
}

   if (CurrentIndex >= Period)
   {
          D[p] = SMA;
   }
   else
   {
      D = SMA;
   }
   
   DS = SMA[0];
   DS.DrawDash(Color.Red, Line.Solid, 1, p);
   
   if (SMA < D)
       SMA.DrawChannel(D, Color.Red, 10);
    else
       D.DrawChannel(SMA, Color.Red, 10);
   
}

Аватара пользователя
Den
Сообщения: 352
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Заливка *ЛЕНТЫ* цены

Непрочитанное сообщение Den » 17 июн 2020, 16:14

Дмитрий, БОЛЬШОЕ СПАСИБО !!!
Вложения
лента 4.jpg
лента 3.jpg

Аватара пользователя
Den
Сообщения: 352
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: Заливка *ЛЕНТЫ* цены

Непрочитанное сообщение Den » 17 июн 2020, 17:11

Дмитрий, один нюанс, как видно на вашем скрине лента залита горизонтально, в местах "перегиба" ленты возникают наложения цвета, создающие затемнения, а на моём заливка рисуется параллельно (вертикально) линии SMA

Как сделать, чтобы была горизонтальная заливка как у вас на скрине?

ГРУБО ГОВОРЯ, ЧТОБЫ ЗАЛИВАЛИСЬ ПРОМЕЖУТКИ МЕЖДУ DS.DrawDash

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

function Initialize()
{
  IndicatorName = "1";
  PriceStudy = true ;
  AddInput("Input", Inputs.Price);         
  AddParameter("Period", 4);                   
  AddGlobalVariable("SUM", Types.Double, 0);
  AddSeries("SMA", DrawAs.Custom, Color.Transparent);   
  AddSeries("D", DrawAs.Custom, Color.Transparent);   
  AddSeries("DS", DrawAs.Custom, Color.Transparent);   
 
}

function Evaluate()
{
{
var lastLVal = MY.индикатор(Input, 0, 0, 2).GetLastValues ("L", 1)[0]; 
var lastHVal = MY.индикатор(Input, 0, 0, 2).GetLastValues ("H", 1)[0];
{


int p = MaxIndex - CurrentIndex;
if( p >= Period)
   p = (int)Period;

if ( CurrentIndex < Period)
{
   SUM = SUM + Input[0];
   SMA = SUM / (CurrentIndex + 1);
}
else
{
   SUM = SUM + Input[0] - Input[(int)(Period)] ;
   SMA = SUM / Period;
}

   if (CurrentIndex >= Period)
   {
          D[13] = SMA;
   }
   else
   {
      D = SMA;
   }
   
   DS = SMA[0];
   DS.DrawDash(Color.Transparent, Line.Solid, 3, 13);
   
   if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == lastLVal.Y)
//(SMA < D)
       SMA.DrawChannel(D, Color.Cyan, 33);
   if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == lastHVal.Y )       
       D.DrawChannel(SMA, Color.Magenta, 33);
   
}
}
}


Вложения
лента 6.jpg
лента 7.jpg


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

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

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