Hello, hoping someone can point out the general flaw in logic here. Even
though I've been working with AFL for six months now, array vs scalars
can still be confusing. All I'm trying to do is pass an array to a
function that tests it's range. The program  then sets a Buy according
to that range. An optimization is  performed to find the "best" range
for a given period.

Of course this is not my actual trading system, but merely a test of
concept for much a more complicated function.

By definition, the Close price has to fall into one of the four ranges
defined in the function. I am using Forex, but any symbol will do, and
would fall into one of the four ranges. Therefore, running the
Optimization should generate some trades, as the Buy condition will be
true eventually, as we cycle through the "RangeTest" variable for each
bar. But no trades are generated.

Traces indicate that the Close array is not being cycled through.

Shouldn't the following code work, without having to get into a Barcount
loop? If not, where is the flaw? Any help much appreciated.


RangeTest = Optimize("RangeTest", 1, 1, 4, 1);


     function RangeFind(Array)
     {
         ActualRange = 0;

         Range1 = Array > 0       AND Array <= 1.1000;
         Range2 = Array > 1.1000  AND Array <= 1.2000;
         Range3 = Array > 1.2000  AND Array <= 1.3000;
         Range4 = Array > 1.3000;

         for( n = 1; n <=4; n++)
         {

           RangeN = VarGet( "Range"+ NumToStr(n, 1.0,0) );

           if (RangeN) ActualRange = n;

         }

       return ActualRange;
     }


Buy = RangeFind(Close) == RangeTest;

Sell = BarsSince(Buy) > 6;

Reply via email to