Для тех кто не понял приведу простой пример
Код: Выделить всё
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