Hello,

It is old, known fact. Some functions accept variable periods. Documented in 
the manual:

http://www.amibroker.com/guide/a_varperiods.html


Best regards,
Tomasz Janeczko
amibroker.com

On 2010-07-15 08:12, Mike wrote:
> Interesting. I ran a quick test and it seems to suggest that Sum does in fact 
> take an array as second argument, contrary to expectations.
>
> It would appear that you are correct, with respect to Sum. Though it is not 
> always the case that a function with a "periods" argument will accept an 
> array. For those that don't, you will have to find another approach.
>
> Here's my test:
>
> Test = Sum(1, Cum(1));
> Fixed = Sum(1, 5);
>
> Plot(Test, "Test", colorRed, styleLine);
> Plot(Fixed, "Fixed", colorBlue, styleLine);
> Title = "Bar: " + BarIndex() + ", Test: " + Test + ", Fixed: " + Fixed;
>
> If Sum did not accept an array, but was instead substituting some fixed 
> number (e.g. last element of the array), then both Plots should result in 
> flat lines. However, the test clearly shows that the Test plot rises at a 45 
> degree angle indicating that the period is different at each bar. Compare 
> that to the Fixed plot which is constant at a level of 5.
>
> Mike
>
> --- In [email protected], "aaryan111"<aaryan...@...>  wrote:
>> I guess, sum() is behaving the ideal way :),
>>
>> The most important thing here is,
>> AMIBROKER being an array processing language, calculates all the elements of 
>> array , but at any given active bar, it fetches the current value from the 
>> whole arry index and shows it to us,Presumably using some barindex kind of 
>> mechanism internally.
>>
>> When we put close, open or any array in any afl , like ((close + open + High 
>>  + Low )/4= MAVG),amibroker produces output based on the current value of 
>> that array, we dont need to specify current index of that array (scalar 
>> value) to get output at any current bar,it manages it intenally.
>>
>> Here its impotant to not that, its IRRELEVANT if we use array in a Function 
>> or simply put it in any statement in afl, it fetches a scalar value out of 
>> that produced array to show it to us.
>>
>> when I put SUm(close,Barssince()) It ideally fetches the current element of 
>> BarsSince array and place it over ther.
>>
>> This is the ideal way. Sum() is behaving the IDEAL way.
>> infact every other function,
>> let it be ,
>> MA(Close,BarsSince(TimeNum()<  093000));
>> or any other function, having Periods, as a second argument.
>>
>> While in Stdev(),it simply goes against the normal behaviour.
>> it should infact, in MUST , point to the current active element of the 
>> Barssince(), let it be a 0 or any other value, its irrelevant, its still a 
>> scalar.
>> and it simply doesnt do that!.
>>
>> i think i have made my point clear now.
>>
>> Wave : Lastvalue() will surely fetch the last element of the array, but i 
>> cant use it while testing it offline, i will get all future values of that 
>> array, its all fine if i have to use it while online updation.
>>
>>
>>
>> Regards...
>>
>>
>> --- In [email protected], "wavemechanic"<olesmithy@>  wrote:
>>> I'm fairly sure that the only way you will get StDev() to accept 
>>> BarsSince() in the 2nd argument without complaining is to force the return 
>>> of a number by use of LastValue() or SelectedValue().  I don't know why 
>>> Sum() is not complaining when BarsSince() is used.
>>>
>>> In the Sum() case, I think that BarsSince( TimeNum ... ) is returning a 
>>> constant array based on the bar you select, including the last bar if no 
>>> bar is selected.  If so, that would work OK but does not explain why 
>>> StDev() does not work.
>>>
>>> For Sum(), if you replace TimeNum() with another array generator, for 
>>> example, MA( C, 13 ) == ...., Sum() still does not complain but BarsSince() 
>>> returns 0 (I believe) and, hence, Sum() is 0.
>>>
>>> You might have stumbled onto a unique situation but I would not assume that 
>>> it can be generalized and would always go for ensuring the return of a 
>>> number from the 2nd argument whether or not the above is correct.
>>>
>>> Bill
>>>    ----- Original Message -----
>>>    From: aaryan111
>>>    To: [email protected]
>>>    Sent: July 14, 2010 3:08 PM
>>>    Subject: [amibroker] Re: Sum and Stdev , wierd behaviour of stdev
>>>
>>>
>>>    Hi , thanx for the feedback wave.
>>>    its Syntax is basically to put Period as 2nd argument.
>>>    When u put an array in SUM() as 2nd argument, it will take the 
>>> corresponding scalar frm that array and apply it as a filter.
>>>
>>>    i have successfully executed this
>>>
>>>    Sum(Close,BarsSince(TimeNum()>092400));
>>>
>>>    regards
>>>
>>>
>>>    --- In [email protected], "wavemechanic"<olesmithy@>  wrote:
>>>    >
>>>    >  Neither takes array as 2nd.  See syntax in Users Guide.
>>>    >    ----- Original Message -----
>>>    >    From: aaryan111
>>>    >    To: [email protected]
>>>    >    Sent: July 12, 2010 3:41 PM
>>>    >    Subject: [amibroker] Sum and Stdev , wierd behaviour of stdev
>>>    >
>>>    >
>>>    >    Hi Everybody,
>>>    >
>>>    >    Both Sum() and Stdev() Functions Have same Arguments Structure.but 
>>> when i put
>>>    >    Sum(Close,BarsSince(TimeNum()>092400))
>>>    >    it executes successfully,while
>>>    >    Stdev(Close,BarsSince(TimeNum()>092400))
>>>    >    gives a warning " Function Expects Different type of argument here 
>>> " .
>>>    >
>>>    >    as far as i understand , both can take array as 2nd argument and 
>>> amibroker will automatically fetch the current running index value of that 
>>> array as the 2nd argument, same as it does with other functions.
>>>    >
>>>    >    one can put any other function returning array like barindex() in 
>>> 2nd argument , result will be same.
>>>    >
>>>    >    Any suggestions??
>>>    >
>>>    >    Regards,
>>>    >
>>>    >
>>>    >
>>>    >    ------------------------------------
>>>    >
>>>    >    **** IMPORTANT PLEASE READ ****
>>>    >    This group is for the discussion between users only.
>>>    >    This is *NOT* technical support channel.
>>>    >
>>>    >    TO GET TECHNICAL SUPPORT send an e-mail directly to
>>>    >    SUPPORT {at} amibroker.com
>>>    >
>>>    >    TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
>>>    >    http://www.amibroker.com/feedback/
>>>    >    (submissions sent via other channels won't be considered)
>>>    >
>>>    >    For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
>>>    >    http://www.amibroker.com/devlog/
>>>    >
>>>    >    Yahoo! Groups Links
>>>    >
>>>
>>>
>>>
>>>
>>>    ------------------------------------
>>>
>>>    **** IMPORTANT PLEASE READ ****
>>>    This group is for the discussion between users only.
>>>    This is *NOT* technical support channel.
>>>
>>>    TO GET TECHNICAL SUPPORT send an e-mail directly to
>>>    SUPPORT {at} amibroker.com
>>>
>>>    TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
>>>    http://www.amibroker.com/feedback/
>>>    (submissions sent via other channels won't be considered)
>>>
>>>    For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
>>>    http://www.amibroker.com/devlog/
>>>
>>>    Yahoo! Groups Links
>>>
>
>
>
> ------------------------------------
>
> **** IMPORTANT PLEASE READ ****
> This group is for the discussion between users only.
> This is *NOT* technical support channel.
>
> TO GET TECHNICAL SUPPORT send an e-mail directly to
> SUPPORT {at} amibroker.com
>
> TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> http://www.amibroker.com/feedback/
> (submissions sent via other channels won't be considered)
>
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
>
> Yahoo! Groups Links
>
>
>
>

Reply via email to