Страница 3 из 6
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 13:08
Den
да не, вы уже передёргиваете, я ж неоднократно написал, что суммироваться должны значения разницы между вершинами.
Естественно они не каждый новый бар - такого не бывает.
Евгений , вы верно написали, что
на каждом баре дня имеется значение вашего индикатора, оно попадает в общую сумму
тут нужно ему поставить условие , что если число баров > 1, то сумма = сумме первого бара от экстремума и так до следующего экстремума.
Как это задать ему?
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 13:09
evge
ну как так можно?
Код: Выделить всё
if (( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.индикатор(Input).GetLastValues ("H", 1)[0].Y) ) || ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.индикатор(Input).GetLastValues ("L", 1)[0].Y) ))
{
D = (MY.индикатор(Input).GetLastValues ("H", 1)[0].Y) - (MY.индикатор(Input).GetLastValues ("L", 1)[0].Y);
Summa += D[0];
}
Это ваш код!
я даже не проверяя в АД4 уже сомневаюсь в его правильности!
я не понимаю логики этого условия. Оно равноценно следующему коду
Код: Выделить всё
if ( lastHVal.X > lastLVal.X )
{
D = (MY.индикатор(Input).GetLastValues ("H", 1)[0].Y) - (MY.индикатор(Input).GetLastValues ("L", 1)[0].Y);
Summa += D[0];
}
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 13:11
evge
попробуйте заменить на мой вариант кусок этого кода, что-то поменяется в вашем индикаторе???
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 13:15
evge
тут получается, что прежде чем вам помочь посчитать сумму, нужно полностью изучить от и до код и исправить ваши ошибки в индикаторе, причём ошибки очень грубые.
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 13:17
evge
более того? тот код можно ещё упросить намного
Код: Выделить всё
if ( lastHVal.X > lastLVal.X )
{
D = lastHVal.Y - lastLVal.Y);
Summa += D[0];
}
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 13:29
evge
Вот вам код! проверьте как он работает в сравнении с тем что вы мне в первых сообщении давали.
Пока никакой суммы тут нет. Пока лишь подтверждения жду, что этот код дает 100% такой же результат, что и ваш "мегакод"
Код: Выделить всё
function Initialize()
{
IndicatorName = "A-DOWN_VIII";
AddInput("Input", Inputs.Candle);
AddShadowSeries("D", DrawAs.Custom, Color.Violet);
AddShadowSeries("U", DrawAs.Custom, Color.Lime);
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 )
D = lastHVal.Y - lastLVal.Y;
else
U = lastHVal.Y - lastLVal.Y;
D.DrawHistogram(Input.Open, Color.Blue, Line.Solid, 1, Color.Blue, 3);
U.DrawHistogram(Input.Open, Color.Blue, Line.Solid, 1, Color.Blue, 3);
}
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 13:42
Den
Проверил
Да, ваш упрощенный код идентичен моему сельскому "мегакоду"
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 14:26
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.Red);
AddGlobalVariable("Sum", Types.Double, 0);
AddGlobalVariable("LX", Types.Int, 0);
AddGlobalVariable("HX", Types.Int, 0);
PriceStudy = true;
AddParameter("P", 2, 1);
}
function Evaluate()
{
if (BarDate(0) != BarDate(1)) Sum = 0;
var lastLVal = MY.индикатор(Input).GetLastValues ("L", 1)[0];
var lastHVal = MY.индикатор(Input).GetLastValues ("H", 1)[0];
if ( lastHVal.X > lastLVal.X )
D = lastHVal.Y - lastLVal.Y;
else
U = lastHVal.Y - lastLVal.Y;
if (HX != lastHVal.X || LX != lastLVal.X)
{
HX = lastHVal.X;
LX = lastLVal.X;
Sum += lastHVal.Y - lastLVal.Y;
}
S = Sum;
D.DrawHistogram(Input.Open, Color.Blue, Line.Solid, 1, Color.Blue, 3);
U.DrawHistogram(Input.Open, Color.Blue, Line.Solid, 1, Color.Blue, 3);
S.DrawHistogram();
}
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 14:34
Den
почему не давал? Я же дал индикатор название "1"
ругается при компилировании
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 14:37
evge
Индикатор, который 1 я попробовал переименовать в индикатор, но там ведь есть параметр а в индикаторе его вызываемом вы не передаете параметра. Почему? Так оно не компилирует (без передачи параметра), поэтому я и пришёл к выводу что индикаторе есть другой.
про ошибку, у меня всё компилируется.
Может у нас разные версии АД4?