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

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

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

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

кроме того, условие

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

   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);
вместо закомментированного "обрезает" переднюю часть заливки - то есть она не доходит до нулевого бара.
Вложения
лента 8.jpg
лента 9.jpg

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

Вопрос Дмитрию Еремину (aka oxi)

Непрочитанное сообщение Den » 21 июл 2020, 21:19

Дмитрий, добрый день,
предыдущий вопрос остался неразрешённым, подскажите как вы реализовали ваш вариант отрисовки, а именно:

как видно на вашем скрине лента залита горизонтально, в местах "перегиба" ленты возникают наложения цвета, создающие затемнения, а на моём заливка рисуется параллельно (вертикально) линии 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);
   
}
}
}


[/quote]


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

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

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