Вопрос , наверное , прежде всего к Евгению, но может кто подскажет.
Как-то давно Евгений помог разработать индикатор, подсчитывающий разницу между сигналами за весь день.
Возникла проблема - он не выдает нужное значение, если начало дня не попадает в видимую область на максимально сжатых барах.
На минутах бары за день входят в видимую область с начала дня, на секундах уже нет
ПОЧЕМУ?
Код: Выделить всё
if (BarTime() >= AsTime(10,00,0) && BarTime() <= AsTime(23,50,0))
не помогает
код показывает одинаково на любых MY.indicator
Код: Выделить всё
function Initialize()
{
IndicatorName = "1";
AddInput("Input", Inputs.Candle);
AddSeries("D", DrawAs.Custom, Color.Green, false);
AddSeries("U", DrawAs.Custom, Color.Red, false);
AddShadowSeries("Sum", DrawAs.Custom, Color.DarkSlateGray);
AddSeries("SUp", DrawAs.Custom, Color.Lime, false);
AddSeries("SDown", DrawAs.Custom, Color.HotPink, false);
AddGlobalVariable("SumUp", Types.Double, 0);
AddGlobalVariable("SumDown", Types.Double, 0);
AddGlobalVariable("LX", Types.Long, 0);
AddGlobalVariable("HX", Types.Long, 0);
PriceStudy = false;
}
function Evaluate()
{
var I = MY.индикатор(Input, 0,0,0,1);
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 (BarDate(0) != BarDate(1))
{
SumUp = 0; SumDown = 0;
}
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;
Sum[0] = (SumDown + SumUp)*100;
}