[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




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 1if ( 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 <FONT 
face="Courier New">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 2if ( 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 3if ( 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 Janeczkoamibroker.com
<BLOCKQUOTE 
>
  ----- Original Message ----- 
  <DIV 
  >From: 
  Tomasz Janeczko 
  
  To: <A title=amibroker@xxxxxxxxxxxxxxx 
  href="">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:
  <A 
  href="">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: <A 
  href="">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 
  Janeczkoamibroker.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 JScriptSyntax follows 
    C++/JScript style: 
    while( conditional_expression ) statement;
    for( initializer_part; conditional_expression; iterator_part ) 
    statement;
    if( conditional_expression ) statement;
    if( conditional_expression ) 
    statement;elsestatement;
    
    implemented compound statements: these are blocks of statements 
    enclosedin 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 );
    
  HOW TO REPORT BUGS
  If you experience any problem with this beta version please send detailed 
  description of the problem (especially the steps needed to reproduce it) to <A 
  href="">bugs@xxxxxxxxxxxxx Send 
  BUG REPORTS to bugs@xxxxxxxxxxxxxSend SUGGESTIONS to 
  suggest@xxxxxxxxxxxxx-----------------------------------------Post 
  AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx (Web page: <A 
  href="">http://groups.yahoo.com/group/amiquote/messages/)--------------------------------------------Check 
  group FAQ at: <A 
  href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
  Your use of Yahoo! Groups is subject to the <A 
  href="">Yahoo! Terms of Service. 







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.