Каталог файлов форума

Список вложений в сообщениях, оставленных на этой конференции.

Все файлы форума: 1233

Добавлено: Владимир » 18 янв 2017, 15:46

Тема: Re: Как нарисовать в индикаторе

Текст сообщения:

Добрый день! Дело в том "evge" , что документация в альфа ( "Terminal 4.0 скрипты пользовательскич индикаторов и стратегий") написана как справочник, поэтому новичку при написании пользовательских индикаторов не совсем понятно как его применять. Поэтому многие и ищут более понятные примеры, а задать вопрос не каждый решается!
Для тех кто не понял приведу простой пример

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

function Initialize()
{
// Область определения параметров индикатора
// Обязательные параметры:
   IndicatorName = "Test";   // Задайте название индикатора и сохраните с данным именем
   PriceStudy = true;   // Рисовать в области цены (true – да, false – нет)
   AddInput("Input", Inputs.Candle);   // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
   AddSeries("LineHigh", DrawAs.Custom, Color.Green);   // Задаем вид линии индикатора с именем LineHigh
   AddSeries("LineLow", DrawAs.Custom, Color.Red);   // Задаем вид линии индикатора с именем LineLow
   AddSeries("MarkerUp", DrawAs.Custom, Color.Red);   // Метим экстремум
   AddSeries("MarkerLow", DrawAs.Custom, Color.Yellow);   // Метим экстремум
// Дополнительные параметры:
 AddParameter("Scan", 163, 1); // сканируемый период

}

function Evaluate()
{
   if ((MaxIndex - CurrentIndex) > Scan) return;
   {
    if (CurrentIndex == MaxIndex)
{
  ///пробуем строить  график
               
            MarkerLow[20]=Input.Low[20]; //данные для построения меток хаёв
                           
         MarkerUp[10]=Input.High[10];  //данные для построения меток лоёв
       
               LineHigh[21]=Input.Low[21]; //данные для построения зеленой линии
               LineHigh[9]=Input.High[9];

       LineLow[9]=Input.High[9];    //данные для построения красной линии
       LineLow[1]=Input.Low[1];
   //построение графика закончено
  }
}
MarkerUp.DrawArrowDown();
MarkerLow.DrawArrowUp();
LineHigh.DrawLine(Color.Green, Line.Solid, 2); //Series.DrawLine(Color color, LineStyles style, int width);
LineLow.DrawLine(Color.Red, Line.Solid, 2);  //название линии.DrawLine(цвет линии, стиль линии, толщина);
}


рисунок пример2

но при построении с использованием массива почему то линии строится непрерывной, точки экстремума строятся без проблем:
Buf_time_Low - массив координат свечки по времени
Buf_Low - массив координат свечки цена
Buf_time_High - массив координат свечки по времени
Buf_High - массив координат свечки цена

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

  ///пробуем строить  график
        for(var i=0; i<ExstremaNumber-1; i++)
           {
            if (MarkerLow[Buf_time_Low[i]]>0 || Buf_Low[i]>0)// нулевые данные игнорируем для построения
            MarkerLow[Buf_time_Low[i]]=Buf_Low[i]; //данные для построения меток хаёв
              if (MarkerUp[Buf_time_High[i]]>0 || Buf_High[i]>0) // нулевые данные игнорируем для построения
              MarkerUp[Buf_time_High[i]]=Buf_High[i];  //данные для построения меток лоёв
          if ( Buf_Low[i]>0 &&  Buf_High[i]>0)
              {
               LineHigh[Buf_time_Low[i]]=Buf_Low[i];  //Строим линию зелёную
               LineHigh[Buf_time_High[i]]=Buf_High[i];
              }
            }//построение графика закончено
  }
}
MarkerUp.DrawArrowDown();
MarkerLow.DrawArrowUp();
LineHigh.DrawLine(Color.Green, Line.Solid, 2);
LineLow.DrawLine(Color.Red, Line.Solid, 2);
}

Пример3
Вложения
пример2.jpg
пример2.jpg (67.98 КБ) 18537 просмотров
пример3.jpg