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