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

Re: [amibroker] AmiBroker 4.31.0 BETA released - more info



PureBytes Links

Trading Reference Links

This is great!
Especialy the If-Else statments!

Now we should be able to use "Group or Market" to assign different AFL's 
for Multiple Stock Backtesting. ie Define specific AFL codes for various 
stock entries.

Im still wondering how you do it (Time wise!).......

Good work!
         KR
         Michael.


At 11:25 AM 13/04/2003 +0200, you wrote:
>Hello,
>
>Of course this release is dedicated to those wondering if I have
>any time left to code after a child is born :-)
>
>Seriously, here is some more information on while, for and if-else
>statements syntax:
>
>
>The while statement lets you repeat a statement until a specified 
>expression becomes false.
>
>Syntax
>
>while ( expression ) statement
>
>The expression must have arithmetic (numeric/boolean) type. Execution 
>proceeds as follows:
>    * The expression is evaluated.
>    * If expression is initially false, the body of the while statement is 
> never executed, and control passes from the while statement to the next 
> statement in the program.
>    * If expression is true (nonzero), the body of the statement is 
> executed and the process is repeated beginning at step 1.
>
>This is an example of the while statement:
>
>i = 10;
>while( i < 20 )
>{
>   Plot( MA( Close, i ), "MA" + WriteVal( i, 0 ), colorBlack + i );
>   i = i + 1;
>}
>The example plots 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 - bar moving 
>averages.
>  -----------------
>
>
>The for statement lets you repeat a statement or compound statement a 
>specified number of times. The body of a for statement is executed zero or 
>more times until an optional condition becomes false.
>
>Syntax
>
>for ( init-expression ; cond-expression ; loop-expression ) statement
>
>Execution of a for statement proceeds as follows:
>    * The init-expression, is evaluated. This specifies the initialization 
> for the loop. There is no restriction on the type of init-expression.
>    * The cond-expression,  is evaluated. This expression must have 
> arithmetic type. It is evaluated before each iteration. Three results are 
> possible:
>        * If cond-expression is true (nonzero), statement is executed; 
> then loop-expression, if any, is evaluated. The loop-expression is 
> evaluated after each iteration. There is no restriction on its type. Side 
> effects will execute in order. The process then begins again with the 
> evaluation of cond-expression.
>        * If cond-expression is false (0), execution of the for statement 
> terminates and control passes to the next statement in the program.
>
>This example illustrates the for statement:
>
>
>
>
>myema[ 0 ] = Close[ 0 ];
>
>for( i = 1; i < BarCount; i++ )
>{
>    myema[ i ] = 0.1 * Close[ i ] + 0.9 * myema[ i - 1 ];
>}
>
>This example iterates all bars of close array to calculate exponential 
>moving average
>
>---------
>
>
>
>
>
>if, else Statements
>
>
>
>if( expression )
>statement1
>[else
>statement2]
>
>The if keyword executes statement1 if expression is true (nonzero); if 
>else is present and expression is false (zero), it executes statement2. 
>After executing statement1 or statement2, control passes to the next statement.
>
>Example 1
>
>if ( i > 0 )
>     y = x / i;
>else
>{
>     x = i;
>     y = abs( x );
>}
>In this example, the statement y = x/i; is executed if i is greater than 
>0. If i is less than or equal to 0, i is assigned to x and abs( x ) is 
>assigned to y. Note that the statement forming the if clause ends with a 
>semicolon.
>
>When nesting if statements and else clauses, use braces to group the 
>statements and clauses into compound statements that clarify your intent. 
>If no braces are present, the compiler resolves ambiguities by associating 
>each else with the closest if that lacks an else.
>
>Example 2
>
>if ( i > 0 )           /* Without braces */
>     if ( j > i )
>         x = j;
>     else
>         x = i;
>The else clause is associated with the inner if statement in this example. 
>If i is less than or equal to 0, no value is assigned to x.
>
>Example 3
>
>if ( i > 0 )
>{                      /* With braces */
>     if ( j > i )
>         x = j;
>}
>else
>     x = i;
>The braces surrounding the inner if statement in this example make the 
>else clause part of the outer if statement. If i is less than or equal to 
>0, i is assigned to x.
>Best regards,
>Tomasz Janeczko
>amibroker.com
>----- Original Message -----
>From: <mailto:tj@xxxxxxxxxxxxx>Tomasz Janeczko
>To: <mailto:amibroker@xxxxxxxxxxxxxxx>amibroker@xxxxxxxxxxxxxxx
>Sent: Sunday, April 13, 2003 11:07 AM
>Subject: [amibroker] AmiBroker 4.31.0 BETA released
>
>Hello,
>
>A new beta version (4.31.0) of AmiBroker has just been released.
>
>It is available for registered users only from the members area at:
><http://www.amibroker.com/members/bin/ab4310beta.exe>http://www.amibroker.com/members/bin/ab4310beta.exe
>
>If you forgot your user name / password to the members area
>you can use automatic reminder service at: 
><http://www.amibroker.com/login.html>http://www.amibroker.com/login.html
>
>This release brings huge improvement to AFL:
>for and while loops and if-else flow control statements.
>
>Native AFL loops run 2..3 times faster than JScript (according to my
>preliminary tests on arrays with 1000-5000 bars)
>
>For more details and example code please read the following "READ ME" text.
>
>NOTE: from now on all beta releases will be available to registered
>users only (in member area).
>
>Best regards,
>Tomasz Janeczko
>amibroker.com
>
>
>
>
>AmiBroker 4.31.0 Beta Read Me
>
>
>
>April 13, 2003 10:38
>
>THIS IS AN EARLY BETA VERSION OF THE SOFTWARE. EXPECT BUGS !!!
>
>AGAIN: THIS IS AN EARLY BETA VERSION OF THE SOFTWARE. EXPECT BUGS !!!
>
>Backup your data files and entire AmiBroker folder first!
>
>INSTALLATION INSTRUCTIONS
>
>IMPORTANT: This archive is update-only. You have to install full version 
>4.30 first.
>
>Just run the installer and follow the instructions.
>
>Then run AmiBroker. You should see "AmiBroker 4.31.0 beta" written in the 
>About box.
>
>CHANGES FOR VERSION 4.31.0 (as compared to 4.30.0)
>    * Workspace window uses "icon font" set in the Windows settings 
> instead of hard coded Tahoma 8
>    * for better readability and ClearType(tm) compatibility on WinXP, all 
> dialog windows use now 'MS Shell Dlg' face name that maps to standard MS 
> Sans Serif on Win 9x/Me/NT and Tahoma on Win 2K and XP.
>    * rewritten AFL parser, now formula is parsed and coverted to syntax 
> tree and then interpreted. This would allow further improvements 
> including compilation. This allowed also to add loops/if-else statements.
>    * implemented IF/ELSE statement, WHILE and FOR loops:
>    * The same basic 'for' loop in AFL is 2..3 times faster than in JScript
>    * Syntax follows C++/JScript style:
>
>    * while( conditional_expression ) statement; for( initializer_part; 
> conditional_expression; iterator_part ) statement; if( 
> conditional_expression ) statement; if( conditional_expression ) 
> statement; else statement;
>    * implemented compound statements: these are blocks of statements 
> enclosed
>    * in opening and closing curly brace { statement1; statement2; ... 
> statementN; } compound statement can appear anywhere when simple statement can.
>    For example:
>    i = 10; while( i < 20 ) { Plot( MA( Close, i ), "MA" + WriteVal( i, 0 
> ), colorBlack + i ); i = i + 1; }
>    * implemented C-style postfix and prefix increment/decrement operators 
> i = 10; WriteIf( i++ ); WriteIf( ++i ); WriteIf( i );
>    * implemented array element access (subscript) operator []: WriteVal( 
> Close[ 0 ] ); // prints the first bar of close array
>    /* a sample low-level implementation of exponential moving average in 
> AFL */
>    myema[ 0 ] = Close[ 0 ];
>    for( i = 1; i < BarCount; i++ ) { myema[ i ] = 0.1 * Close[ i ] + 0.9 
> * myema[ i - 1 ]; }
>
>    * added built-in constant 'BarCount' that returns number of bars 
> available in arrays (the number of elements of array)
>    * When QuickAFL is turned on it may be less than true number of bars 
> because QuickAFL feature attempts to use only visible bars (and few 
> before). You can control how many bars the formula requires using 
> SetBarsRequired() function
>    * implemented infinite-loop protection. Nice if you forgot to 
> increment counter variable in 'for' loop :-)
>    * tab key now works without need to press ALT/CTRL in AFL editors
>    * added C-like synonyms for logical ADD/OR/NOT: &&, ||, !
>    /* a sample low-level implementation of Profit-target stop in AFL: */
>    Buy = Cross( MACD(), Signal() );
>    priceatbuy=0;
>    for( i = 0; i < BarCount; i++ ) {      if( priceatbuy == 0 && Buy[ i ] 
> )      priceatbuy = BuyPrice[ i ];
>          if( priceatbuy > 0 && SellPrice[ i ] > 1.1 * priceatbuy 
> )      {        Sell[ i ] = 1;        SellPrice[ i ] = 1.1 * 
> priceatbuy;        priceatbuy = 0;      }      else        Sell[ i ] = 0; }
>    /* sample EMA rainbow */
>    Plot( Close, "Price", colorBlack, styleCandle ); for( Range = 15; 
> Range < 100; Range++ )    Plot( EMA( Close, Range ), 
> "MA"+WriteVal(Range,0), colorRose + Range % 8, styleNoLabel );



------------------------ Yahoo! Groups Sponsor ---------------------~-->
Make Money Online Auctions! Make $500.00 or We Will Give You Thirty Dollars for Trying!
http://us.click.yahoo.com/yMx78A/fNtFAA/i5gGAA/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/