всплеск - это например Ask > Bid на 150 контрактов( ABCD)
но при этом их значения могут быть например Ask = 857, Bid = 100
Следующий всплеск Опять Ask > Bid на 150 контрактов, Ask = 1500, Bid = 1100
индикатор должен сделать следующее - (857 - 100) + (1500 - 1100)
и это будет только line Ask
тоже самое по биду отдельно.
То что ниже конечно лажа, но моих знаний пока не хватает для того чтобы индикатор запоминал бары.
ПРОШУ ПОСОДЕЙСТВОВАТЬ!
Код: Выделить всё
function Initialize()
{
IndicatorName = "VolumeBidAskAccum724";
PriceStudy = false;
AddInput("Input1", Inputs.Candle);
AddSeries("Bid", DrawAs.Line, Color.White);
AddSeries("Ask", DrawAs.Line, Color.Red);
AddParameter("Period", 50, 1);
AddParameter("PeriodType", 0); // период отсчета: 0 - календарный день, 1 - неделя, 2 - месяц
AddGlobalVariable("VABid", Types.Double, 0);
AddGlobalVariable("VAAsk", Types.Double, 0);
AddGlobalVariable("a", Types.Double, 0);
AddGlobalVariable("b", Types.Double, 0);
AddGlobalVariable("i", Types.Double, 0);
AddGlobalVariable("o", Types.Double, 0);
AddParameter("ABCD", 150, 0);
}
function Evaluate()
{
if (PeriodType == 0 && BarDate() != BarDate(1)) VABid = 0;
if (PeriodType == 1 && BarDate().DayOfWeek < BarDate(1).DayOfWeek) VABid = 0;
if (PeriodType == 2 && BarDate().Month != BarDate(1).Month) VABid = 0;
if (PeriodType == 0 && BarDate() != BarDate(1)) VAAsk = 0;
if (PeriodType == 1 && BarDate().DayOfWeek < BarDate(1).DayOfWeek) VAAsk = 0;
if (PeriodType == 2 && BarDate().Month != BarDate(1).Month) VAAsk = 0;
a = (Input.VolumeAsk[0] + ABCD);
b = (Input.VolumeBid[0] + ABCD);
i = Input.VolumeAsk[0];
o = Input.VolumeBid[0];
{
if (i > b);
VAAsk += i;
if (o > a);
VABid += o;
Bid = VABid;
Ask = VAAsk;
}
}