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

Re: [amibroker] Re: some looping help needed .......



PureBytes Links

Trading Reference Links

From: "Fred"
> LOL ... Ok, if you want to deem that to be a multidimensional array, 
> fine ... 
> 

I don't find it funny. Rude ? Yes.

Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "Fred" <ftonetti@xxxxxxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Monday, August 29, 2005 6:44 PM
Subject: [amibroker] Re: some looping help needed .......


> LOL ... Ok, if you want to deem that to be a multidimensional array, 
> fine ... 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <amibroker@xxxx> 
> wrote:
>> Hello,
>> 
>> > Wrong ... You can not have the equivalent of doubly dimensioned 
>> > arrays i.e. tables in AFL
>> 
>> Actually.... you can. Via VarGet/VarSet
>> http://www.amibroker.com/f?varset
>> http://www.amibroker.com/f?varget
>> 
>> you can create equivalent of arrays of any dimension simply using 
> dynamic variables.
>> 
>> 
>> Best regards,
>> Tomasz Janeczko
>> amibroker.com
>> ----- Original Message ----- 
>> From: "Fred" <ftonetti@xxxx>
>> To: <amibroker@xxxxxxxxxxxxxxx>
>> Sent: Monday, August 29, 2005 5:11 AM
>> Subject: [amibroker] Re: some looping help needed .......
>> 
>> 
>> > Wrong ... You can not have the equivalent of doubly dimensioned 
>> > arrays i.e. tables in AFL ... one dimension is all you get ... 
> or at 
>> > least not without using something external i.e. Osaka or ABTool 
>> > plugins ... 
>> > 
>> > If you can get your "oscillator" into an array "X" then the AFL 
> I 
>> > wrote will give you the standard deviation at each bar using all 
> the 
>> > prior elements of X ( your osciallator ) ... That is what you 
> were 
>> > looking for, wasn't it ?  
>> > 
>> > Is there something about your osciallator that doesn't allow it 
> to 
>> > fit into a single dimension array ?!  
>> > 
>> > --- In amibroker@xxxxxxxxxxxxxxx, "treliff" <treliff@xxxx> wrote:
>> >> More food for thought... I have to chew on all that but one 
> thing 
>> >> right away:
>> >> 
>> >> "X(i) is an ELEMENT of the array X."
>> >> 
>> >> NO: each X(i) is a separate array (otherwise it would be X[i] 
>> > right? 
>> >> Or wrong?)
>> >> 
>> >> In my code:
>> >> 
>> >> Cycle is an array
>> >> bar i has Cycle[i] 
>> >> Cycleconstant(i) = Cum(0)+Cycle[i] is an array (a "constant" 
> array)
>> >> X(i) = Oscillator(Cycleconstant(i))is an **ARRAY** for each i.
>> >> 
>> >> 
>> >> --- In amibroker@xxxxxxxxxxxxxxx, "Fred" <ftonetti@xxxx> wrote:
>> >> > It appears you don't understand the array .vs. element of an 
>> > array 
>> >> > concept ...
>> >> > 
>> >> > Is the equation
>> >> > 
>> >> > X(i) = BarIndex() + i 
>> >> > 
>> >> > even meaningful ?  X(i) is an ELEMENT of the array X.  
> BarIndex() 
>> >> is 
>> >> > an ARRAY.  How does one equate an ELEMENT of an array i.e. X
> (i) 
>> > to 
>> >> > the entire contents of another array i.e. BarIndex() + a 
> modifier 
>> >> i ?
>> >> > 
>> >> > Not doable, is it ?.  Further more why do you think you need 
> or 
>> >> want 
>> >> > to do this ?  With regards to ...
>> >> > 
>> >> > "Note however that in real life the X(i)'s are independent.  
>> > There 
>> >> is 
>> >> > no way to express X(i) in terms of X(i-1)"
>> >> > 
>> >> > Nor is there a need to ...
>> >> > 
>> >> > "Can the StDvX definition create the FinalArray without a 
> loop ?"
>> >> > 
>> >> > Did you play with the code ? Look at the results ? ... 
> Doesn't it 
>> >> do 
>> >> > precisely that ?  It matters not what is in the array of X in 
>> > terms 
>> >> > of being able to calc the StDev of it's elements from the 
> first 
>> > one 
>> >> > to each bar along the way.  In fact that code with minor mods 
>> > could 
>> >> > be used to calc a variable length StDev based on a changing 
> value 
>> >> of 
>> >> > n where n was an array of elements based on whatever calc one 
>> >> wanted.
>> >> > 
>> >> > --- In amibroker@xxxxxxxxxxxxxxx, "treliff" <treliff@xxxx> 
> wrote:
>> >> > > So far so good, but now suppose that the array in question, 
> the 
>> >> one 
>> >> > > we need to calculate the standard deviation over, changes 
> with 
>> >> each 
>> >> > > bar. In other words, there is not one array 
>> >> > > 
>> >> > > X = BarIndex() + 100;
>> >> > > 
>> >> > > but there are different arrays like for example
>> >> > > 
>> >> > > X(i) = BarIndex() + i;
>> >> > > 
>> >> > > (In my code this would be Oscillator(Cycleconstant(i)) but 
> that 
>> >> is 
>> >> > > not of the essence. > 
>> >> > > In my opinion this now is the remaining problem and the 
> real 
>> > time-
>> >> > > consumer: 
>> >> > > 
>> >> > > for (i = 0 ; i < BarCount ; i++ )
>> >> > > { y = StDvX( X( i ) ) ) ; 
>> >> > >   FinalArray[ i ] = y[ i ] ; } 
>> >> > > 
>> >> > > > 
>> >> > > 
>> >> > > --- In amibroker@xxxxxxxxxxxxxxx, "Fred" <ftonetti@xxxx> 
> wrote:
>> >> > > > The question simplifies to ... how do I calculate 
> standard 
>> >> > > deviation 
>> >> > > > at the current bar for all past values of some array 
> without 
>> >> > using 
>> >> > > a 
>> >> > > > loop, thereby eliminating the innermost loop and leaving 
> only 
>> >> the 
>> >> > > > outer one.
>> >> > > > 
>> >> > > > When looking at most problems like this where the 
> solution 
>> > may 
>> >> > not 
>> >> > > be 
>> >> > > > immediately obvious, the simplest way is to break the 
> problem 
>> >> > down 
>> >> > > > into its individual components and use EXPLORE to see 
> that 
>> > each 
>> >> > > > calculation is doing what it's supposed to and from the 
>> >> > perspective 
>> >> > > > of speed it won't be any slower to do it this way, in 
> some 
>> >> cases 
>> >> > it 
>> >> > > > may actually be faster i.e. here's the way most people 
> write 
>> > a 
>> >> > > > stochastic calc ...
>> >> > > > 
>> >> > > > Sto = (C - LLV(C, Length)) / (HHV(C, Length) - LLV(C, 
>> > Length));
>> >> > > > 
>> >> > > > The problem of course is that one has done the calc LLV
> (C, 
>> >> > Length) 
>> >> > > > twice ... Simpler and of course faster is ...
>> >> > > > 
>> >> > > > LLVX = LLV(C, Length)
>> >> > > > Sto = (C - LLVX) / (HHV(C, Length) - LLVX); 
>> >> > > > 
>> >> > > > Back to your problem ... 
>> >> > > > 
>> >> > > > StDevX = Sqrt(Cum ((X - Average(X)) ^ 2) / n)
>> >> > > > 
>> >> > > > Let's assume we want to see how to get the calculations 
>> > correct 
>> >> > at 
>> >> > > > BarIndex() == 10 ( The 11th Bar ) without using a loop 
> and 
>> > for 
>> >> > the 
>> >> > > > moment we won't care if the calc is correct at BI() = 9 
> or 11 
>> >> > > because 
>> >> > > > we know we can always write a loop to go around all of 
> this 
>> > if 
>> >> we 
>> >> > > > need to ...
>> >> > > > 
>> >> > > > // Let's generate some simple dummy data "X" to  
>> >> > > > // use where we can easily eyeball the results
>> >> > > > // "X" can always be replaced by something real
>> >> > > > 
>> >> > > > X = BarIndex() + 100;
>> >> > > > 
>> >> > > > // The components
>> >> > > > 
>> >> > > > n = BarIndex() + 1;
>> >> > > > CumX  = Cum(X);
>> >> > > > MeanX = CumX / n;
>> >> > > > XMean = X - MeanX;
>> >> > > > Mean2 = XMean ^ 2;
>> >> > > > CumM2 = Cum(Mean2);
>> >> > > > nCumM = CumM2 / n;
>> >> > > > StDvX = sqrt(nCumM);
>> >> > > > 
>> >> > > > Filter = BarIndex() <= 10;
>> >> > > > 
>> >> > > > AddColumn(X, "X", 1.0);
>> >> > > > AddColumn(n, "n", 1.0);
>> >> > > > AddColumn(CumX,  "CumX", 1.0);
>> >> > > > AddColumn(MeanX, "MeanX", 1.2);
>> >> > > > AddColumn(XMean, "X-MeanX", 1.2);
>> >> > > > AddColumn(Mean2, "Mean2", 1.2);
>> >> > > > AddColumn(CumM2, "CumM2", 1.2);
>> >> > > > AddColumn(nCumM, "nCumX", 1.2);
>> >> > > > AddColumn(StDvX, "StDevX", 1.2);
>> >> > > > 
>> >> > > > Try taking what's above and running it as an EXPLORE ... 
> see 
>> >> the 
>> >> > > > columns (below "hopefully") it shows i.e. one for each 
>> >> component 
>> >> > > > including the data "X" ... It would appear that StDevX is 
>> >> correct 
>> >> > > not 
>> >> > > > only for BI() == 10 but for ALL the other bars as well 
>> > without 
>> >> > ANY 
>> >> > > > loops.
>> >> > > > 
>> >> > > > X n CumX MeanX X-MeanX Mean2 CumM2 nCumX
>> > StDevX
>> >> > > > 100 1 100 100.00 0.00 0.00 0.00 0.00
>> >> 0.00
>> >> > > > 101 2 201 100.50 0.50 0.25 0.25 0.13
>> >> 0.35
>> >> > > > 102 3 303 101.00 1.00 1.00 1.25 0.42
>> >> 0.65
>> >> > > > 103 4 406 101.50 1.50 2.25 3.50 0.88
>> >> 0.94
>> >> > > > 104 5 510 102.00 2.00 4.00 7.50 1.50
>> >> 1.22
>> >> > > > 105 6 615 102.50 2.50 6.25 13.75 2.29
>> >> 1.51
>> >> > > > 106 7 721 103.00 3.00 9.00 22.75 3.25
>> >> 1.80
>> >> > > > 107 8 828 103.50 3.50 12.25 35.00 4.38
>> >> 2.09
>> >> > > > 108 9 936 104.00 4.00 16.00 51.00 5.67
>> >> 2.38
>> >> > > > 109 10 1045 104.50 4.50 20.25 71.25 7.13
>> >> 2.67
>> >> > > > 110 11 1155 105.00 5.00 25.00 96.25 8.75
>> >> 2.96
>> >> > > > 
>> >> > > > Since the rest of your AFL doesn't require any loops, one 
>> > would 
>> >> > > > conclude that your AFL really needs NO loops at all.
>> > 
>> > 
>> > 
>> > 
>> > 
>> > Please note that this group is for discussion between users only.
>> > 
>> > To get support from AmiBroker please send an e-mail directly to 
>> > SUPPORT {at} amibroker.com
>> > 
>> > For other support material please check also:
>> > http://www.amibroker.com/support.html
>> > 
>> > 
>> > Yahoo! Groups Links
>> > 
>> > 
>> > 
>> > 
>> > 
>> > 
>> >
> 
> 
> 
> 
> 
> 
> Please note that this group is for discussion between users only.
> 
> To get support from AmiBroker please send an e-mail directly to 
> SUPPORT {at} amibroker.com
> 
> For other support material please check also:
> http://www.amibroker.com/support.html
> 
> 
> Yahoo! Groups Links
> 
> 
> 
> 
> 
> 
> 
>


------------------------ Yahoo! Groups Sponsor --------------------~--> 
Get fast access to your favorite Yahoo! Groups. Make Yahoo! your home page
http://us.click.yahoo.com/dpRU5A/wUILAA/yQLSAA/GHeqlB/TM
--------------------------------------------------------------------~-> 

Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

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/

<*> 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/