I really don't know what you are trying to do. I don't know why you are trying to use a loop. Loops are the last thing you should use in AFL if there is any way around them. Your logic is looking for instances where aire3 is between two numbers. It seems it is also looking for a value of 100 or 222. It will never get to 100 or 222. WMA / MA will be a very small number and you will need 4 decimal places to see the value at times. If you are trying to find the bar number where the statement is true then try the following formula. The last column shows the bar where the Croisement is 1. Also, it is always helpful to plot your results when debugging. Plots are included.
Barry aire1 = WMA(C,150); aire2 = MA(C,50); aire3 = aire1 / aire2 ; Croisement = 0 ; Croisement = IIf(aire3 >= 0.95 AND aire3 <= 1.00, 1, IIf(aire3 == 222, 2, 0)); Plot(aire1, "aire1", colorRed); Plot(aire2, "aire2", colorGreen); Plot(aire3, "aire3", colorBlack, styleOwnScale); PlotShapes(IIf(Croisement == 1, shapeSmallCircle, 0), colorRed); PlotShapes(IIf(Croisement == 2, shapeHollowSmallCircle, 0), colorGreen); Filter =1; AddColumn(aire1,"aire1",1.2); AddColumn(aire2,"aire2",1.2); AddColumn(aire3,"aire3",1.4); // value of wma / ma AddColumn(Croisement,"croisement"); // 1 or 2 when statement is true, else 0 AddColumn(IIf(Croisement == 1, int(BarIndex()), False), "Croisement"); // shows the bar where true --- In [email protected], "atlas190" <[EMAIL PROTECTED]> wrote: > > Hello , > > I meet a bug when I spy the "Croisement" variable with the > spreadsheet "results" (explorer) . > The variable "croisement" should receive the value "100" sometimes > and not always the value "222" . > > It's probably a beginner's bug ... > > > aire1 = WMA(C,150); > aire2 = MA(C,50); > aire3 = aire1 / aire2 ; > recup =0; > Croisement =0 ; > > bi = BarIndex(); > > for(i=0; i < BarCount -1 ;i++) > { > > recup[i] = bi[i]; > > if (aire3[i] >= 0.95 AND aire3[i] <= 1.00) > > { > //Croisement == recup[i]; > Croisement == 100; //I don't reach this line ?! > // I am sure that sometimes aire3 has got a > // value beetwee 0.95 and 1 > } > else > { > Croisement = 222; > } > > Filter =1; > > //AddColumn(bi,"barindex"); > AddColumn(recup,"pour voir"); > AddColumn(aire1,"aire1",format = 1.2); > AddColumn(aire2,"aire2",format = 1.2); > AddColumn(aire3,"aire3",format = 1.2); > AddColumn(Croisement,"croisement"); > //AddColumn(a,"valeur du croisement"); >
