[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: Testing the Range of an Array with an Optimization



PureBytes Links

Trading Reference Links

I think that (at least part of) the issue with the original code is that

        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;

Range1-4 are actually ARRAYS, but are subsequently treated as if they
were Scalars.

In my testing so far, treating an ARRAY like a scalar seems to
silently use the last value of the ARRAY - leading to no end of
confusion if you don't catch the original error in the first place!


--- In amibroker@xxxxxxxxxxxxxxx, "ozzyapeman" <zoopfree@xxx> wrote:
>
> 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;
>



------------------------------------

**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

*********************
TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com
*********************

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html

*********************************
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/