Страница 5 из 6
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 16:57
evge
Память может из-за истории
вот тут уменьшить можно 2000 на меньшее
или убрать вообще строку.
а по поводу не столько, посчитайте может ошибаетесь
там ведь учитывается и переходящее значение с предыдущего дня.
т.е. разница между high и low считается даже если одно из них в было предыдущий торговый день. Разница будет зачтена в сегодняшний день.
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 17:02
evge
задачи как-то особенно считать на границе дней не было
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 17:04
evge
Den писал(а):Он показывает теперь одну сумму, но опять - же сумма выходит больше, чем на самом деле.
для роста \ падения отдельно нужно?
в данной реализации индикатора это сделать просто.
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 17:07
evge
Den писал(а):так все-таки как ему задать условие, при котором если число баров после сигнала > 1 , то Break до следующего сигнала? Как это можно прописать кодом?
этого не нужно, сейчас считает как надо, появляется сигнал новый разница между новым и предыдущим суммируется.
я не понял, зачем нужен break до след сигнала?
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 17:07
Den
нет именно общую сумму рост + падение
гляньте вот даже с гэпом и незаконченным выходом вверх выходит 590, а он кажет 814
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 17:10
Den
еще проще
H2 показывает 499, а там 303
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 17:15
Den
появляется сигнал новый разница между новым и предыдущим суммируется.
я не понял, зачем нужен break до след сигнала?
я просто подумал, что break может решит проблему суммирования уже суммированного.
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 17:20
Den
или вот. Тут явно не 744
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 17:25
evge
Нашёл причину
поправил кое что, лишние суммы ушли.
и разделил up и down сумму
Код: Выделить всё
function Initialize()
{
IndicatorName = "A-DOWN_VIII";
AddInput("Input", Inputs.Candle);
AddSeries("D", DrawAs.Custom, Color.Green, false);
AddSeries("U", DrawAs.Custom, Color.Red, false);
AddShadowSeries("SUp", DrawAs.Custom, Color.Green);
AddShadowSeries("SDown", DrawAs.Custom, Color.Red);
AddGlobalVariable("SumUp", Types.Double, 0);
AddGlobalVariable("SumDown", Types.Double, 0);
AddGlobalVariable("LX", Types.Long, 0);
AddGlobalVariable("HX", Types.Long, 0);
PriceStudy = false;
AddParameter("P", 2000, 1);
}
function Evaluate()
{
if (BarDate(0) != BarDate(1)) { SumUp = 0; SumDown = 0; }
var I = MY.индикатор(Input);
var Lx = 0;
var Hx = 0;
var Ly = 0.0;
var Hy = 0.0;
for (var x = 0; x < 999; x++)
{
if (I["L"][x] > 0) { Lx = CurrentIndex - x; Ly = I["L"][x]; }
if (I["H"][x] > 0) { Hx = CurrentIndex - x; Hy = I["H"][x]; }
if (Lx != 0 && Hx != 0) break;
}
if (Lx == 0 && Hx == 0 ) return;
if ( Lx > Hx )
D[1] = Hy - Ly;
else
U[1] = Hy - Ly;
if (HX != Hx || LX != Lx)
{
HX = Hx;
LX = Lx;
if (Hx > Lx) SumUp += Hy - Ly;
if (Hx < Lx) SumDown += Hy - Ly;
}
SUp[0] = SumUp;
SDown[0] = SumDown;
D.DrawHistogram(Color.Red, Line.Solid, 1, Color.Red, 50);
U.DrawHistogram(Color.Green, Line.Solid, 1, Color.Green, 50);
SUp.DrawHistogram();
SDown.DrawHistogram();
}
Re: Как суммировать показания за день?
Добавлено: 20 окт 2017, 17:37
evge
Выше код чуть поправил, там знак надо было наоборот
должно так
Код: Выделить всё
if (Hx > Lx) SumUp += Hy - Ly;
if (Hx < Lx) SumDown += Hy - Ly;
иначе рост и падение наоборот