I am trying to set states based on whether I have a position and
the position type. If AFL has a getPositions function I can't find it.
I tried to create states using the following code but barssince does
not return a valid value.
// buy control
BarsSB = Nz(BarsSince(Buy), 0);
BarsSSl = Nz(BarsSince(Sell), 0);
BarsSSh = Nz(BarsSince(Short), 0);
BarsSC = Nz(BarsSince(Cover), 0);
state = 0;
// 0 = no position, 1 = buy last, 2 = short last;
state = IIf(BarsSB == BarsSSh, 0, IIf(BarsSB < BarsSSh, 1, 2));
// if sell after buy we are flat
state = IIf(state == 1 AND BarsSSl < BarsSB, 0, state);
// if cover after short we are flat
state = IIf(state == 2 AND BarsSC < BarsSSh, 0, state);
If I don't use NZ then BarsSince returns Empty.
When I use NZ then I can see trades using plot shapes. But all the
barsSince returns 0 so state is always 0. What am I doing wrong?
The really interesting thing is that I can put the barsince lines below
the logic where I set buy, sell, short and cover, then I get correct
values returned. Why does the position matter?
I can use static vars to keep the state but when I do that AutoAnalysis
will not work and the shapes don't show properly. So I am tryng to find
a way that allows auto analysis to work. I tried to use switch and
found it only works with numbers and not arrays.
Thanks,
Barry