Страница 1 из 6

Как суммировать показания за день?

Добавлено: 19 окт 2017, 15:06
Den
Добрый день ,друзья !

Вопрос к Евгению.

Как суммировать за день (с 10-00 до 23-50) показания индикатора , который рассчитывает разницу между ПОСЛЕДНИМИ сигналами (High и Low) ?

Re: Как суммировать показания за день?

Добавлено: 19 окт 2017, 15:16
evge

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

Function Inicialize()
{
// ...
AddGlobalVariable("Summa", Types.Double, 0);
// ...
}


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

function Evaluate()
{
// ...
if (BarDate(1) != BarDate(0)) Summa = 0;

Summa += ZnachenieIndicatora;
// ...
}


другой информации о вашем коде и условиях из вопроса у меня нет, поэтому так.

Re: Как суммировать показания за день?

Добавлено: 19 окт 2017, 15:33
Den
Евгений спасибо за ответ, вот код .

H и L это стрелки на рисунке.

Как в этом случае сумму за день получить?

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

function Initialize()
{
IndicatorName = "A-DOWN_VIII";
AddInput("Input", Inputs.Candle);
AddShadowSeries("D", DrawAs.Custom, Color.Violet);
AddShadowSeries("U", DrawAs.Custom, Color.Lime);
AddSeries("S", DrawAs.Custom, Color.Magenta);
AddGlobalVariable("Summa", Types.Double, 0);


PriceStudy = true;
AddParameter("P", 2, 1);
}

function Evaluate()
{
var lastLVal = MY.индикатор(Input).GetLastValues ("L", 1)[0];
{
var lastHVal = MY.индикатор(Input).GetLastValues ("H", 1)[0];
{

if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.индикатор(Input).GetLastValues ("H", 1)[0].Y) )

D = (MY.индикатор(Input).GetLastValues ("H", 1)[0].Y) - (MY.индикатор(Input).GetLastValues ("L", 1)[0].Y);

D.DrawHistogram(Input.Open, Color.Blue, Line.Solid, 1, Color.Blue, 3);

{

if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.индикатор(Input).GetLastValues ("L", 1)[0].Y) )

U = (MY.индикатор(Input).GetLastValues ("H", 1)[0].Y) - (MY.индикатор(Input).GetLastValues ("L", 1)[0].Y) ;

U.DrawHistogram(Input.Open, Color.Blue, Line.Solid, 1, Color.Blue, 3);

}
}
}
}



Re: Как суммировать показания за день?

Добавлено: 19 окт 2017, 15:40
Den
ну грубо говоря так он выводит

Re: Как суммировать показания за день?

Добавлено: 19 окт 2017, 15:42
Den
.

Re: Как суммировать показания за день?

Добавлено: 19 окт 2017, 16:03
evge
всё так же как выше и написал,

только так как у индикатора 2 гистограммы U и D, то добавляем обе

Summa += U[0] + D[0];

я конечно не знаю зачем так, но если надо именно сумму значений U,D индикатора, то так.

Re: Как суммировать показания за день?

Добавлено: 19 окт 2017, 16:14
Den
я конечно не знаю зачем так


просто до другого способа суммирования показаний я не додумался. :)

А как выводить-то итоговое значение Summa?
У меня при условии Summa += U[0] + D[0];
показывает последнее значение , а не сумму за день.

А надо с открытия 10-00 до сейчас (и в конце до 23-50)

Re: Как суммировать показания за день?

Добавлено: 19 окт 2017, 16:38
Den

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

function Initialize()
{
AddSeries("S", DrawAs.Custom, Color.Magenta);



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

if (BarDate(1) != BarDate(0)) Summa = 0;

Summa += U[0] + D[0];
Summa = S;
}


так он показывает сумму последних двух значений

Re: Как суммировать показания за день?

Добавлено: 19 окт 2017, 16:38
evge
эх... код конечно жестокий, зачем нужно в коде столько лишних { и } непонятно

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

function Initialize()
{
IndicatorName = "A-DOWN_VIII";
AddInput("Input", Inputs.Candle);
AddShadowSeries("D", DrawAs.Custom, Color.Violet);
AddShadowSeries("U", DrawAs.Custom, Color.Lime);
AddShadowSeries("S", DrawAs.Custom, Color.Magenta);

AddGlobalVariable("Summa", Types.Double, 0);

PriceStudy = true;
AddParameter("P", 2, 1);
}

function Evaluate()
{

if (BarDate(1) != BarDate(0)) Summa = 0;

var lastLVal = MY.индикатор(Input).GetLastValues ("L", 1)[0];
var lastHVal = MY.индикатор(Input).GetLastValues ("H", 1)[0];

if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.индикатор(Input).GetLastValues ("H", 1)[0].Y) )
{
D = (MY.индикатор(Input).GetLastValues ("H", 1)[0].Y) - (MY.индикатор(Input).GetLastValues ("L", 1)[0].Y);
Summa += D[0];
}

D.DrawHistogram(Input.Open, Color.Blue, Line.Solid, 1, Color.Blue, 3);

if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.индикатор(Input).GetLastValues ("L", 1)[0].Y) )
{
U = (MY.индикатор(Input).GetLastValues ("H", 1)[0].Y) - (MY.индикатор(Input).GetLastValues ("L", 1)[0].Y) ;
Summa += U[0];
}

U.DrawHistogram(Input.Open, Color.Blue, Line.Solid, 1, Color.Blue, 3);

S = Summa;
S.DrawHistogram();

}


Re: Как суммировать показания за день?

Добавлено: 19 окт 2017, 16:57
Den
Пляшем как могём :)
как-то странновато он рассчитывает, если последняя метка вверх , то он показывает 2.352
по меткам сумма за день 750 пунктов.
Это как так?