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

RE: [amibroker] Poll results for amibroker & versatility


  • To: amibroker@xxxxxxxxxxxxxxx
  • Subject: RE: [amibroker] Poll results for amibroker & versatility
  • From: Fred Tonetti <ftonetti@xxxxxxxxxxxxx>
  • Date: Fri, 25 Apr 2003 05:59:11 -0700
  • Title: RE: [amibroker] Poll results for amibroker & versatility

PureBytes Links

Trading Reference Links







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&#8217;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 &#8230;

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&#8217;s a standard deviation function &#8230; 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












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 the Yahoo! Terms of Service.