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

Re: [amibroker] Poll results for amibroker & versatility



PureBytes Links

Trading Reference Links

Fred,

Your comments about the importance of getting the basic language building
blocks right is spot on IMO. Procedure/function calling facilities are
pretty essential for any programming language. Even good old Metastock
allows you to call external formulas!

John

----- Original message -----
From: "Fred Tonetti" <ftonetti@xxxxxxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Friday, April 25, 2003 1:59 PM
Subject: RE: [amibroker] Poll results for amibroker & versatility


> Herman,
>
> I would agree that it's about tools more than indicators per se.
> However I consider flexibility in tools to be of premier importance and
> although I didn't vote in the poll I do consider as part of this
> flexibility having available, variable periodicity in "indicators"
> and/or "functions" especially ones that are a pain to code like Linear
> Regression and Standard Deviation etc. and especially given that
> #INCLUDE (Reusable generic subroutines and/or functions) doesn't have
> the needed functionality, does not always work as expected and is piggy.
> I was interested to see that these in particular made the top of the
> list but why StochK/D did is beyond me since those are easily enough
> written in straight AFL with no for loops, not that for/while/if/else
> are difficult to use but they're piggy as is #INCLUDE.
>
> For development of any product like AB IMHO it's the building blocks
> that are important and the ones that allow users to make their own
> building blocks are that much more important.  A good example of this is
> #INCLUDE which to me to be usable needs have the following associated
> features.
>
> 1.  Arguments (Arrays or Variables) for calculation should be able to be
> passed to an #INCLUDE and results returned much like one can with the
> AFL imbedded indicators.
> 2.  One should be able to call the same #INCLUDE from different places
> in a piece of AFL passing it different arguments and getting different
> results without it getting confused.
> 3.  One should be able to have multiple #INCLUDE's in a piece of AFL.
> 4.  One #INCLUDE should be able to have it's own #INCLUDE's
> 5.  It should run just as fast as any other piece of AFL.
>
> So as a simple example if one wanted to have their own FastK type
> stochastic with variable periodicity that one could use whenever one
> wanted with whatever inputs one wanted then one should be able to use it
> and write it in some way like this:
>
> Main AFL ...
>
> #INCLUDE "C:\...\FastK.AFL" Array1 Array2 Array3 Array4 Array5
>
> Include AFL ...
>
> HH = HHV(Array1, Array4);
> LL = LLV(Array2, Array4);
> Array5 = 100 * (Array3 - Array2) / (HH - LL);
>
> Having the capability of simple building blocks like this allows for
> rapid development of ones own indicators and systems without the need
> for repetitive coding .
>
> For example in TradeStation ALL functions are viewable as EasyLanguage (
> The equivalent to AFL ) even the ones that are imbedded with the product
> so there is never a need to guess how something is calculated.  For
> example here's a standard deviation function . which in turn calls an
> Average function.  This may not be the most efficient way to write these
> but they illustrate the point.
>
> {*******************************************************************
> Description: Standard Deviation
> ********************************************************************}
>
> Inputs: Price(NumericSeries), Length(NumericSimple);
>
> Vars: SumSqr(0), Avg(0), Counter(0);
>
> If Length <> 0 Then
> Begin
> Avg = Average(Price, Length);
> SumSqr = 0;
> For Counter = 0 To Length - 1
> Begin
> SumSqr = SumSqr + (Price[Counter] - Avg)
> * (Price[Counter] - Avg);
> End;
> _StdDev = SquareRoot(SumSqr / Length);
> End
> Else
> _StdDev = 0;
>
> {*******************************************************************
> Description: Simple Moving Average
> ********************************************************************}
>
> Inputs: Price(NumericSeries), Length(NumericSimple);
> Variables: Sum(0), Counter(0);
>
> Sum = 0;
>
> For counter = 0 To Length - 1 Begin
> Sum = Sum + Price[counter];
> End;
>
> If Length > 0 Then
> Average = Sum / Length
> Else
> Average = 0;
>
>


------------------------ Yahoo! Groups Sponsor ---------------------~-->
Get A Free Psychic Reading! Your Online Answer To Life's Important Questions.
http://us.click.yahoo.com/O10svD/Me7FAA/AG3JAA/GHeqlB/TM
---------------------------------------------------------------------~->

Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 

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