Barry --
In answer to your question, "Why does the position matter?", for
example, "BarsSB = Nz(BarsSince(Buy), 0);" is executed only ONCE when
all values in the Buy array are 0. It is only after the "Buy ="
statement that the Buy array contains any non-zero elements.
-- Keith
Barry Scarborough wrote:
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