Страница 1 из 2
Заливка *ЛЕНТЫ* цены
Добавлено: 10 июн 2020, 14:41
Den
Добрый день, друзья!
Подскажите, как можно залить такую "трёхмерную" ленту индикатора, через 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);
}
Re: Заливка *ЛЕНТЫ* цены
Добавлено: 10 июн 2020, 22:54
Den
И есть ли возможность соединить концы DrawDash?
Re: Заливка *ЛЕНТЫ* цены
Добавлено: 11 июн 2020, 17:10
Den
Почему функция отображения Series.DrawDash(Color color, LineStyles style, int width, int delta = 0); рисуя горизонтальную линию на данном баре шириной delta, делает при этом отступ от [0] на delta баров?
Re: Заливка *ЛЕНТЫ* цены
Добавлено: 14 июн 2020, 14:26
Tyler_Durden
Код: Выделить всё
Series.DrawDash(Color color, LineStyles style, int width, int delta = 0);
от ряда до ряда наверное как-то надо рисовать. Вводить серию
Re: Заливка *ЛЕНТЫ* цены
Добавлено: 16 июн 2020, 15:55
Den
Дмитрий (oxi), может вы подскажете как "залить" эту ленту индикатора?
Re: Заливка *ЛЕНТЫ* цены
Добавлено: 16 июн 2020, 17:50
oxi
У вас sma. Точки на конце полос - это запаздывающая sma.
Так?
Re: Заливка *ЛЕНТЫ* цены
Добавлено: 17 июн 2020, 15:10
Den
Дмитрий, спасибо за ответ.
да, у меня sma, меняющая цвет по сигналу пользовательского индикатора
ДА, ИМЕННО ТАК!
Представьте код, пожалуйста
Re: Заливка *ЛЕНТЫ* цены
Добавлено: 17 июн 2020, 15:16
oxi
Код: Выделить всё
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);
}
Re: Заливка *ЛЕНТЫ* цены
Добавлено: 17 июн 2020, 16:14
Den
Дмитрий, БОЛЬШОЕ СПАСИБО !!!
Re: Заливка *ЛЕНТЫ* цены
Добавлено: 17 июн 2020, 17:11
Den
Дмитрий, один нюанс, как видно на вашем скрине лента залита
горизонтально, в местах "перегиба" ленты возникают наложения цвета, создающие затемнения, а на моём заливка рисуется параллельно (
вертикально) линии 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);
}
}
}