PureBytes Links
Trading Reference Links
|
Fred,
No, it can not as for now.
Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message -----
From: "Fred" <fctonetti@xxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Monday, July 07, 2003 7:33 PM
Subject: [amibroker] Re: AmiBroker 4.40.1 BETA released
> TJ,
>
> Can the progress and in turn the AA window be minimized through
> automation ? if so how ?
>
> TIA,
>
> Fred
>
> --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <amibroker@xxxx>
> wrote:
> > Hello,
> >
> > A new beta version (4.40.1) of AmiBroker has just been released.
> >
> > It is available for registered users only from the members area at:
> > http://www.amibroker.com/members/bin/ab4401beta.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
> >
> > List of changes in this beta (read change log in the "read me"
> below for the details)
> >
> > a.. added ability to minimize progress window. If progress window
> is minized then the window 'owning' it is HIDDEN. So for example if
> you minimize AA scan progress window then Automatic analysis window
> will be HIDDEN. To re-show simply maximize progress
> >
> > b.. added Volume-At-Price (VAP) histogram chart overlay to price
> chart added new settings for VAP to Tools->Preferences->Main price
> (to turn it off go to Tools->Preferences : Main chart,
> > and set "Volume At Price overlay" to "None"
> >
> > c.. added new AFL function
> > PlotVAPOverlay( lines = 300, width = 5, color = colorGreen,
> rightside = False);
> > that plots Volume-At-Price (VAP) overlay chart.
> > Please note that there must be at least one regular Plot function
> in your formula for this to work, and there can be only one
> PlotVAPOverlay in one indicator
> >
> > Example:
> > Plot( Close, "Price", colorBlack, styleCandle );
> > PlotVAPOverlay( 350, 4, colorYellow, True );
> >
> > Example 2:
> > Plot( Close, "Price", colorBlack, styleCandle );
> > PlotVAPOverlay( Param("lines",300,10,1000,1), Param
> ("width",10,1,99,1), ParamColor("color", colorYellow), Param
> ("mode",0,0,1,1) );
> >
> > d.. fixed 'X' close button in Param window.
> > e.. Parameters window now shows parameter list in alphabetical
> order
> > f.. fixed problem with plotting zero values at log scale. Note
> that Log( 0 ) is minus inifinity and it really can not be plotted,
> however many people attempted to plot zero data in log scale, so
> AMiBroker now adjusts zero to 0.0001 when log scale is used to allow
> plotting.
> > Example faulty code that did not work in 4.40, but works now:
> > Plot(IIf(Month() != Ref(Month(),-1),1,0),"", color,
> styleHistogram | styleOwnScale | styleNoLabel)
> >
> > g.. added new setting to Tools->Preferences : Charting "draw
> vertical line between months"
> >
> > Best regards,
> > Tomasz Janeczko
> > amibroker.com
> >
> >
> > AmiBroker 4.40.1 Beta Read Me
> > July 7, 2003 19:00
> >
> > THIS IS A BETA VERSION OF THE SOFTWARE. EXPECT BUGS !!!
> >
> > AGAIN: THIS IS A 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.40.1 beta" written
> in the About box.
> >
> > See CHANGE LOG below for detailed list of changes.
> >
> > HELP ON NEW FEATURES
> > 'WAIT FOR BACKFILL' FEATURE
> >
> > The users of eSignal, myTrack and IQFeed real-time plugins may now
> check "wait for backfill" box in the Automatic analysis window and
> all scans, explorations and backfills will wait for completion of
> backfill process for given symbol. This flag has no effect on
> databases that do not use plugins (external data sources) or use end-
> of-day plugins (like FastTrack, QP2, TC2000/TCNet, etc). This flag
> has also no effect when using QT plugin due to the fact that
> QuoteTracker manages backfills by itself and does not provide any
> control of backfill process to 3rd party applications.
> >
> >
> > USER-DEFINABLE FUNCTIONS, PROCEDURES, LOCAL/GLOBAL VARIABLES (4.34
> or higher)
> >
> > Here is a sample code showing user-defined function:
> >
> > // the following function is 2nd order smoother
> >
> > function IIR2( input, f0, f1, f2 )
> > {
> > result[ 0 ] = input[ 0 ];
> > result[ 1 ] = input[ 1 ];
> >
> > for( i = 2; i < BarCount; i++ )
> > {
> > result[ i ] = f0 * input[ i ] +
> > f1 * result[ i - 1 ] +
> > f2 * result[ i - 2 ];
> > }
> >
> > return result;
> > }
> >
> > Plot( Close, "Price", colorBlack, styleCandle );
> > Plot( IIR2( Close, 0.2, 1.4, -0.6 ), "function example",
> colorRed );
> >
> >
> > In this code IIR2 is a user-defined function. input, f0, f1, f2 are
> formal parameters of the functions.
> > At the time of function call the values of arguments are passed in
> these variables. Formal parameters behave like local variables.
> > Later we have result and i which are local variables. Local
> variables are visible inside function only. If any other function
> uses the same variable name they won't interfere between each other.
> >
> > Due to the fact that AFL does not require to declare variables the
> decision whenever given variable is treated as local or global is
> taken depends on where it is FIRST USED.
> >
> > If given identifier appears first INSIDE function definition - then
> it is treated as LOCAL variable.
> > If given identifier appears first OUTSIDE function definition -
> then it is treated as GLOBAL variable.
> >
> > This default behaviour can be however overriden using global and
> local keywords (introduced in 4.36) - see example 2.
> >
> > Example (commentary):
> >
> > k = 4; // this is GLOBAL variable
> >
> > function f( x )
> > {
> > z = 3; // this is LOCAL variable
> > return z * x * k; // 'k' here references global variable k (first
> used above outside function)
> > }
> >
> > z = 5; // this is GLOBAL variable with the same name as local
> variable in function f
> >
> > "The value of z before function call :" + WriteVal( z );
> >
> > // Now even if we call function
> > // the value of our global variable z
> > // is not affected by function call because
> > // global variable z and local variable z are separate and
> > // arguments are passed by value (not by reference)
> >
> > "The result of f( z ) = " + WriteVal( f( z ) );
> >
> > "The value of z after function call is unchanged : " + WriteVal(
> z );
> >
> >
> > Example 2: Using local and global keywords to override default
> visibility rules:
> >
> > VariableA = 5; // implict global variable
> >
> > function Test()
> > {
> > local VariableA; // explicit local variable with the same
> identifier as global
> > global VariableB; // explicit global variable not defined earlier
> > // may be used to return more than one value
> from the function
> >
> > VariableA = 99;
> > VariableB = 333;
> > }
> >
> > VariableB = 1; // global variable
> >
> > "Before function call";
> > "VariableA = " + VariableA;
> > "VariableB = " + VariableB;
> >
> > Test();
> >
> > "After function call";
> > "VariableA = " + VariableA + " (not affected by function call )";
> > "VariableB = " + VariableB + " (affected by the function call )"
> >
> > At the end of the function we can see 'return' statement that is
> used to return the result to the caller. Note that currently return
> statement must be placed at the very end of the function.
> >
> > It is also possible to write a procedure (a function that returns
> nothing (void))
> >
> > procedure SinePlotter( Freq, ColorIndex )
> > {
> > pname = "Line"+WriteVal(ColorIndex,1.0);
> > array = sin( Cum( Freq * 0.01 ) );
> > Plot( array, pname , colorRed + ColorIndex, styleThick );
> > }
> >
> > for( n = 1; n < 10; n++ )
> > {
> > SinePlotter( n/2+Cum(0.01), n );
> > }
> >
> > Note that although there are two separate keywords 'function'
> and 'procedure' AmiBroker currently treats them the same (they both
> accept return values but not require them), but in the future the
> rules maight get enforced to use
> > return statement ONLY in conjunction with function keyword. So it
> is advised to use function keyword in case when your function returns
> any value and procedure keyword otherwise.
> >
> > Note also that recursion (having a function call itself from within
> itself) is NOT supported as for now.
> >
> >
> > FLOW CONTROL AND LOOPING (4.31 or higher)
> >
> > do-while Statement
> >
> > The do-while statement lets you repeat a statement or compound
> statement until a specified expression becomes false.
> >
> > Syntax
> >
> > do statement while ( expression ) ;
> >
> > The expression in a do-while statement is evaluated after the body
> of the loop is executed. Therefore, the body of the loop is always
> executed at least once.
> >
> > The expression must have numeric or boolean type. Execution
> proceeds as follows:
> >
> > 1.. The statement body is executed.
> >
> >
> > 2.. Next, expression is evaluated. If expression is false, the do-
> while statement terminates and control passes to the next statement
> in the program. If expression is true (nonzero), the process is
> repeated, beginning with step 1.
> > This is an example of the do-while statement:
> >
> > x=100;
> > do
> > {
> > y = sin( x );
> > x--;
> > } while ( x > 0 );
> > In this do-while statement, the two statements y = sin( x ); and x--
> ; are executed, regardless of the initial value of x. Then x > 0 is
> evaluated. If x is greater than 0, the statement body is executed
> again and x > 0 is reevaluated. The statement body is executed
> repeatedly as long as x remains greater than 0. Execution of the do-
> while statement terminates when x becomes 0 or negative. The body of
> the loop is executed at least once.
> >
> >
> > while Statement
> > 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:
> >
> > 1.. The expression is evaluated.
> >
> >
> > 2.. 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.
> >
> >
> > for Statement
> >
> > 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:
> >
> > 1.. The init-expression, is evaluated. This specifies the
> initialization for the loop. There is no restriction on the type of
> init-expression.
> >
> >
> > 2.. The cond-expression, is evaluated. This expression must have
> arithmetic type. It is evaluated before each iteration. Three results
> are possible:
> > a.. 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.
> >
> >
> > b.. 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 averageif,
> 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.
> >
> > CHANGE LOG
> > CHANGES FOR VERSION 4.40.1 (as compared to 4.40.0)
> >
> > a.. added ability to minimize progress window. If progress window
> is minized then the window 'owning' it is HIDDEN. So for example if
> you minimize AA scan progress window then Automatic analysis window
> will be HIDDEN. To re-show simply maximize progress
> >
> > b.. added Volume-At-Price (VAP) histogram chart overlay to price
> chart added new settings for VAP to Tools->Preferences->Main price
> (to turn it off go to Tools->Preferences : Main chart,
> > and set "Volume At Price overlay" to "None"
> >
> > c.. added new AFL function
> > PlotVAPOverlay( lines = 300, width = 5, color = colorGreen,
> rightside = False);
> > that plots Volume-At-Price (VAP) overlay chart.
> > Please note that there must be at least one regular Plot function
> in your formula for this to work, and there can be only one
> PlotVAPOverlay in one indicator
> >
> > Example:
> > Plot( Close, "Price", colorBlack, styleCandle );
> > PlotVAPOverlay( 350, 4, colorYellow, True );
> >
> > Example 2:
> > Plot( Close, "Price", colorBlack, styleCandle );
> > PlotVAPOverlay( Param("lines",300,10,1000,1), Param
> ("width",10,1,99,1), ParamColor("color", colorYellow), Param
> ("mode",0,0,1,1) );
> >
> > d.. fixed 'X' close button in Param window.
> > e.. Parameters window now shows parameter list in alphabetical
> order
> > f.. fixed problem with plotting zero values at log scale. Note
> that Log( 0 ) is minus inifinity and it really can not be plotted,
> however many people attempted to plot zero data in log scale, so
> AMiBroker now adjusts zero to 0.0001 when log scale is used to allow
> plotting.
> > Example faulty code that did not work in 4.40, but works now:
> > Plot(IIf(Month() != Ref(Month(),-1),1,0),"", color,
> styleHistogram | styleOwnScale | styleNoLabel)
> >
> > g.. added new setting to Tools->Preferences : Charting "draw
> vertical line between months"
> >
> > CHANGES FOR VERSION 4.40.0 (as compared to 4.39.0)
> >
> > a.. fixed crash when global or local keyword was used elsewhere
> than on top of the function definition
> > b.. fixed crash that occurred when interpretation code part
> required more bars than indicator code part
> > c.. fixed handling of 1st hour after midnight in Metastock
> plugin / intraday data
> > d.. fixed problem with calling the same user-defined function
> multiple times in single simple arithmetic expression.
> > e.. memory allocated by Equity(0) was freed at the end of the
> formula execution, now it is freed immediatelly, making possible to
> create large loops with Equity(0) without memory problems. Note that
> Equity(1) and Equity(2) released memory immediatelly already.
> > f.. when Y-axis grid spacing is lower than or equal to 0.02 then
> Y axis is displayed with 4 decimal digits (usefull for currencies)
> > g.. logarithmic scaling improved, Y-scale shifting and zooming in
> log scale works better too.
> > h.. fixed date column formatting when SetOption
> ("nodefaultcolumns", flag) is switched off and back on
> > i.. Param()s in Indicator Builder are set back to defaults only
> when formula is edited, setting grid line/scalling options do not
> reset params.
> > j.. time compression algorithm modified, now alignment is
> available in two options:
> > 1. align to midnight (00:00:00) 2. align to trading hours START
> time
> > and four time stamp display modes:
> > 1. display time of first tick in bar, 2. display time of last
> tick in bar
> > 3. display start time of interval bar, 4. display end time of
> interval bar
> > These settings are available in Tools->Preferences->Intraday
> > Fixed also problems with alignment occurred in some cases in
> previous versions.
> > CHANGES FOR VERSION 4.39.0 (as compared to 4.38.0)
> >
> > a.. added Param dialog to AA window. Note that AA-defined
> parameters are reset back to defaults only when you LOAD the formula
> from the file or when you click on 'Reset' button in Parameter
> dialog.
> >
> > b.. colorAqua now has correct value of 36
> >
> > c.. when Printing charts (or using Print Preview ) in Real Time
> mode,
> > auto-refresh is temporarily disabled to avoid problems with
> printing
> >
> > d.. fixed problem with non-updating last bar of trade arrays by
> Equity(1)
> > applied in exploration when built-in trade delays where greater
> than zero
> >
> > e.. operands of arithmetic expressions are evaluated from left to
> right again (as it was in 4.30) so statements like this
> > (y = 7)*1000 + y;
> > (note assignment within expression) do not cause error messages
> about uninitialized variable
> >
> > f.. new feature "Wait for Backfill" in Auto-Analysis window.
> Causes scans/explorations/backtests
> > to wait for the plugin to finish data backfill.
> > The setting applies to real-time plugins only, and only to those
> that support
> > this feature.
> >
> > g.. three new versions of plugins that support 'wait for
> backfill' feature are included in the beta archive:
> > eSignal plugin 1.5.0
> > myTrack plugin 1.5.3
> > IQFeed plugin 1.3.1
> >
> > 'Wait for backfill' feature is not supported by QT plugin, and it
> won't be supported because
> > QuoteTracker has no interface to allow forcing backfills from 3rd
> party applications.
> >
> > h.. other minor fixes
> >
> > CHANGES FOR VERSION 4.38.0 (as compared to 4.37.0)
> >
> > a.. new setting for candlestick appearance:
> > Tools->Preferences->Charting
> > "Use distinct color for" : "None, up candle hollow" -
> > it plots entire candle with one color but leaves interior of UP
> candle body hollow.
> >
> >
> > b.. added export chart image to PNG (portable network graphics)
> file
> > Edit->Image->Export to PNG file
> > (Please don't ask me to add GIF support. GIF is patented and
> requires $3500 license fee for Unisys. PNG is free, supported by all
> browsers, smaller and better )
> >
> >
> > c.. added 'send chart by e-mail' feature
> > Edit->Image->Send by email
> > and
> > File->Send chart via e-mail
> >
> >
> > d.. fixed positioning of arrows in image copies (Edit->Image-
> >Copy)
> >
> > e.. fixed crash occurring when printer device context did not
> support bit blit copies. added very simple arrow line drawing for
> that case (will be improved in future releases)
> >
> > f.. fixed bug in handling Null with new constructs: if, while and
> for.
> > In pre-4.38 versions Null used in if, while for was treated as
> True, which was wrong
> > if( Null ) _TRACE("WRONG");
> > else _TRACE("CORRECT");
> > Now Null in if, while, for is treated as False.
> > g.. numbers (floats) are now automatically 'upsized' to arrays on
> first use of l-value array subscript operator without causing error.
> > Also r-value subscript can be applied to numbers and return the
> number itself without causing error, but the underlying variable
> remains just a single number.
> >
> > This allows to easily intialize arrays to any value without need
> to write loops.
> >
> > Example 1:
> > in previous versions you would need to write:
> >
> > for( i = 0; i < BarCount; i++ ) myarray[ i ] = 0 ; // fill with
> zeros
> > myarray[ 5 ] = 6; // write value to 5th element of the array
> >
> > now you can write simply:
> >
> > myarray = 3; // initialize, at this moment myarray is just a
> number
> > myarray[ 5 ] = 6; // write value to 5th element of the array, the
> variable is automatically
> > // upsized to array and all elements are filled with a numeric
> value
> > // that was originally placed in myarray variable
> >
> > /* myarray is holds now the array filled with values of 3 except
> element 5 that has value of 6 */
> >
> > mynumber = 5;
> > test = mynumber[ 7 ]; // previous versions would give an error
> message here
> > // now subscript operator for r-value numeric variable
> > // is allowed and returns just the number
> > // and variable is not upsized to array unless appears on left
> side
> > // of assignment (l-value)
> > /* mynumber variable here is still a number */
> > WriteVal( test );
> >
> > CHANGES FOR VERSION 4.37.0 (as compared to 4.36.0)
> >
> > a.. printing improved, now all open indicator panes are printed
> and resolution is increased
> > b.. Edit->Copy As Image and Edit->Copy As Metafile now generate
> an image consisting of all indicator panes (not just one)
> > c.. fixed problem with non-resetting sort arrows in AA window
> > d.. fixed sometimes occuring crash Signal() function
> > e.. increased size of error message text buffer to prevent
> overflow when reporting syntax errors in formulas having long
> unwrapped lines.
> > f.. grid lines are drawn with fine dots instead of small dashes
> (screen output only)
> > g.. new AFL functions:
> > GetCategorySymbols( category, index )
> > - retrieves comma-separated list of symbols belonging to given
> category
> >
> > supported categories:
> > categoryMarket categoryGroup categorySector categoryIndustry
> categoryWatchlist
> > categoryFavorite categoryIndex
> >
> > index = (market/group/industry/sector/watchlist number)
> > 0..255 for categoryMarket, categoryGroup, categoryIndustry
> > 0..63 for categorySector, categoryWatchlist
> > ignored for categoryFavorite, categoryIndex
> >
> > StrExtract( list, item )
> > - extracts given item (zero-based) from comma-separated string.
> >
> > Example:
> > StrExtract( "MSFT,AAPL,AMD,INTC", 2 )
> > will return AMD
> >
> > StrExtract( "MSFT,AAPL,AMD,INTC", 0 )
> > will return MSFT
> >
> > StrExtract( "MSFT,AAPL,AMD,INTC", 200 )
> > will return empty string ""
> >
> > + other minor fixes
> >
> > Example code for GetCategorySymbols and StrExtract:
> >
> > /* note: if given watch list contains lots of symbols
> > ** performance may be poor
> > */
> > function CreateAverageForWatchList( listnum )
> > {
> > // retrive comma-separated list of symbols in watch list
> > list = GetCategorySymbols( categoryWatchlist, listnum );
> >
> > Average = 0; // just in case there are no watch list members
> >
> > for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ )
> > {
> > f = Foreign( sym, "C" );
> > if( i == 0 ) Average = f;
> > else Average = Average + f;
> > }
> >
> > return Average / i; // divide by number of components
> > }
> >
> > Plot( CreateAverageForWatchList( 1 ), "Avg of WL 1",
> colorGreen );
> >
> > CHANGES FOR VERSION 4.36.0 (as compared to 4.35.0)
> >
> > a.. fixed problem with affecting 2 or more identifiers
> referencing the same array when using l-value subscript operator [].
> Thanks Herman for pointing this out
> > b.. global and local keywords - for explicit visibility/scope
> declarations
> > Allow to override default scope rules that assume that variables
> defined outside function are global, while those identifiers that
> appear for the first time inside functions are local.
> >
> > Syntax:
> >
> > local var1 [, var2, ... ] ;
> > global var1 [, var2, ... ] ;
> >
> > (as you can see you can declare more than one variable in one
> line.
> >
> > Note: using these keywords outside function definition has no
> meaning
> > (global scope is used).
> >
> > Example:
> >
> > VariableA = 5; // implict global variable
> >
> > function Test()
> > {
> > local VariableA; // explicit local variable with the same
> identifier as global
> > global VariableB; // explicit global variable not defined earlier
> > // may be used to return more than one value
> from the function
> >
> > VariableA = 99;
> > VariableB = 333;
> > }
> >
> > VariableB = 1; // global variable
> >
> > "Before function call";
> > "VariableA = " + VariableA;
> > "VariableB = " + VariableB;
> >
> > Test();
> >
> > "After function call";
> > "VariableA = " + VariableA + " (not affected by function call )";
> > "VariableB = " + VariableB + " (affected by the function call )";
> >
> > c.. syntax highligting modified so keywords: #include, if, else,
> while, do, function, procedure, global, local, return are colorised
> differently than built-in constants or functions. Corresponding
> color/style setting added to Preferences->Editor
> >
> >
> > d.. #pragma nocache
> > pre-processor command added to switch off #include file caching
> mechanism.
> > Note: between '#pragma' and 'nocache' there must be exactly
> SINGLE space
> > Note 2: disabling caching may slow down execution of the formula
> (especially
> > in indicators)
> > Note 3: #pragma nocache must be placed before #includes
> >
> > Example:
> > #pragma nocache
> > #include <myfile.afl>
> >
> > a.. single line comments now work with #includes (and #pragma
> too) so you can comment out include in regular way:
> > //#include <something> - will not include
> >
> >
> > b.. changed error message from "unknown identifier"
> to "Variable 'name' used without having been initialized." which
> better decribes the problem.
> >
> > For example:
> >
> > function Test( )
> > {
> > global x;
> > x = 3;
> > }
> >
> > WriteVal( x ); // variable used without having been initialized,
> > // although declared inside Test() function body
> >
> >
> > Test( ); // during function call the value of 3 is assigned to
> variable x
> >
> > WriteVal( x ); // and now no error is reported
> >
> > a.. implemented shortcut evaluation of logical operators
> > The operands of logical-AND and logical-OR expressions are
> evaluated from left to right. Now if the value of the first operand
> is sufficient to determine the result of the operation, the second
> operand is not evaluated. This is called "short-circuit evaluation."
> >
> > The left operand of the logical-AND operator is completely
> evaluated and all side effects complete before continuing. If the
> left operand evaluates to false (0), the other operand is not
> evaluated.
> >
> > The left operand of the logical-OR operator is completely
> evaluated
> > and all side effects complete before continuing.
> > If the left operand evaluates to true (nonzero), the other
> operand is not evaluated.
> >
> > (The above description applies to operands that evaluate to
> single boolean value,
> > it does not apply to arrays. Operands that evaluate to arrays are
> evaluated always )
> >
> > Example:
> > for( i = -3; i < BarCount; i++ )
> > {
> > // using old versions of AMiBroker you would get subscipt out of
> range
> > // but now
> > // the second operand (C[ i ] > C[ i - 1 ]) is evaluated
> > // ONLY if first operand ( i >= 1 ) evaluates to TRUE
> >
> > if( i >= 1 && C[ i ] > C[ i - 1 ] )
> > {
> > _TRACE("TEST " + i);
> > }
> > }
> >
> >
> >
> > CHANGES FOR VERSION 4.35.0 (as compared to 4.34.2)
> >
> > a.. do-while loop implemented:
> > Syntax:
> >
> > do statement while ( expression ) ;
> >
> > The expression in a do-while statement is evaluated after the
> body of the loop is executed.
> > Therefore, the body of the loop is always executed at least once.
> >
> > Example:
> >
> > i=0;
> > do
> > {
> > i++;
> > }
> > while( i < 100 );
> > WriteVal( i );
> >
> >
> > b.. it is now allowed to 'add' (or rather concatenate) string to
> a number / array. This saves quite a bit of typing. This works as in
> JScript. The left-hand operand of '+' has to be a string. The right-
> hand operand may be string, number or array. Numbers are coerced to
> strings using %g sprintf formatting (prints out decimal point only
> when necessary) and then concatenated. In case of arrays SELECTED
> VALUE is coerced to string and then concatenated.
> >
> > So now instead of
> >
> > i = 100;
> > "Value is " + WriteVal( i );
> > "Close : " + WriteVal( Close ) + ", Open : " + WriteVal( Open )
> + ", High : " + WriteVal( High );
> >
> > you can write:
> >
> > i = 100;
> > "Value is " + i;
> > "Close : " + Close + ", Open : " + Open + ", High : " + High;
> >
> > Note that
> >
> > "Test " + 100 + 1;
> >
> > will give you "Test 1001" because statements are parsed from left
> to right.
> > "Test " is added first to "100" giving "Test 100" and then to "1"
> giving
> > "Test 1001". If you want to perform numeric adding first please
> use braces:
> >
> > "Test " + ( 100 + 1 );
> > - this will give you "Test 101"
> >
> >
> > c.. additional tweaks in AFL engine & garbage collection, futher
> speed up of execution of very long loops
> >
> > d.. more error checking in AFL engine - will report using
> uninitialized variables that were accepted silently in 4.31.x -
> 4.34.x
> > e.. #include now accepts new way of specifying file names to
> include:
> >
> > #include <filename.afl>
> >
> > (note < > braces instead of " " ) if you specify the file name
> this way AmiBroker will look for
> > the file in "standard include path" that is definable using new
> prefs setting in Tools->Preferences->AFL
> > It makes much shorter to write includes and you can move include
> folder now without changing all AFL codes using #includes.
> >
> > For example if you have set standard include path
> to "C:\AFL\MyIncludes" and write in your formula:
> >
> > #include <common.afl>
> >
> > AmiBroker will look for C:\AFL\MyIncludes\common.afl file
> >
> > Also now #include reports file(s) not found in regular error
> message box.
> >
> >
> > f.. IIf/Min/Max are now overloaded functions (have two variants
> each)
> > IIF( Condition_ARRAY, True_Array, False_Array ) (old one)
> > IIF( BoolValue, TrueValue, FalseValue )
> >
> > Min( array1, array2 ) (old one)
> > Min( number1, number2 )
> >
> > Max( array1, array2 ) (old one)
> > Max( number1, number2 )
> >
> > The second one is choosen when all arguments are numbers and it
> is much much faster and returns number so LastValue() call is not
> neccessary anymore.
> >
> > Example:
> >
> > // much faster and does not require LastValue()
> > period = IIF( name() == "MSFT", 5, 10 );
> > result = Min( 7, 3 );
> > // (result is still a number not array as in previous versions)
> >
> >
> > g.. added 'endless loop detection threshold' setting to
> Preferences "AFL" tab. Recommended value 100000 or higher.
> >
> > h.. fixed parameter counting in CallFunction plugin callback in
> case of overloaded functions
> > i.. fixed problem with premature freeing of arrays passed in
> default parameters fields (causing for example problem with color
> exploration output - introduced in 4.32)
> >
> > CHANGES FOR VERSION 4.34.2 (as compared to 4.34.0)
> >
> > a.. improved crash recovery dialog to include AFL engine state
> information and (in some cases) the source line of the formula that
> causes an exception
> > b.. added ability to catch all exceptions in indicators and
> commentaries (switchabel via Tools->Preferences->AFL, "catch system
> exceptions...", ON by default) - allows you to continue to work even
> in case of serious problem
> > c.. loop break by Shift+BREAK is now more sensitive
> > d.. now you can control how often Shift+BREAK key is checked
> during formula execution (Tools->Preferences->AFL, "check SHIFT+Break
> every" (1..100, default = 50) (note that specifying low values may
> degrade performance slightly)
> > e.. tweaked AFL memory allocator hash tables to get more speed
> for large looping formulas
> > f.. although I never reproduced this problem I made some changes
> so 'TAB' key should not wipe the contents of AFL editor anymore
> > CHANGES FOR VERSION 4.34.0 (as compared to 4.33.0)
> >
> > a.. user-definable functions and procedures with parameters and
> local variables
> >
> > b.. 'A' is NO LONGER predefined symbol. I decided to remove it
> because people tend to use A as user-variable forgetting the fact
> that it was build-in array holding typical price (H+L+C)/3. Use 'Avg'
> instead.
> >
> > c.. indicator list column width increased in Indicator Builder
> > d.. DayOfYear - returns the calendar day number counting from
> beginning of the year January 1st is 1. Maximum number returned is
> 366
> > CHANGES FOR VERSION 4.33.0 (as compared to 4.32.2)
> >
> > a.. Database purify tool implemented (available via Tools-
> >Database Purify)
> > allows to detect missing/extra quotes, possible splits, invalid
> OHLC relationship
> >
> > Apply to/range settings similar to AA window. You can also right
> click over result list to add symbols to watch list and copy the list
> to the clipboard (and paste it later to any other program for futher
> use)
> >
> >
> > b.. further improvements to AFL garbage collector, now looping
> regardless of loop count requires the same amount of memory as just
> single pass of the code (no growing allocated memory during loops).
> > This enormously lowered memory consumption for some formulas and
> increased the speed of some loops 3..4 times.
> >
> >
> > c.. added variable period support to the following functions:
> > LinRegSlope,
> > LinearReg,
> > LinRegIntercept,
> > StdErr,
> > TSF
> > Sample code:
> >
> > Plot( Close, "Test", colorBlack );
> >
> > range = 15 * MA( ATR( 15 ), 50 ) / ATR( 15 );
> >
> > //Plot( range, "range", colorBlue, styleOwnScale );
> > Plot( LinearReg( Close, range ), "Test", colorRed );
> >
> > d.. fixed sometimes incorrect output of variable-period version
> of LLV/HHV
> >
> > e.. fixed crash occuring when bad arguments were passed to the
> function (bug introduced in 4.32.x).
> >
> > CHANGES FOR VERSION 4.32.2 (as compared to 4.32.1)
> >
> > a.. second bug in experimental garbage collector fixed.
> > CHANGES FOR VERSION 4.32.1 (as compared to 4.32.0)
> >
> > a.. garbage collector was releasing memory too soon in some
> cases, now fixed.
> > CHANGES FOR VERSION 4.32.0 (as compared to 4.31.1)
> >
> > a.. added type check in IF/ELSE statements
> > b.. added type check in array element assignment
> > c.. error messages now numbered and display changed slightly
> > d.. you can break running loop by pressing Shift+BREAK (Pause)
> key combination
> > e.. calling COM objects works again (was broken in 4.31.x)
> > f.. changed slightly the way TAB works in editor, if TAB is
> pressed any selection is deselected to avoid accidential deletion of
> text
> > g.. experimental: added 'agressive garbage collector' that
> extremely decreases the amount
> > of memory required to run AFL formula by releasing the memory
> > used for temporary variables as soon as possible (previously
> > temporary memory was released at the end of formula execution).
> > A side-effect of new garbage collector is some speed up in
> formula execution.
> > h.. new tab in preferences for AFL engine settings
> > i.. experimental feature, NOT for beginners, may be
> removed/modified in future releases:
> > new _TRACE( "string" ) AFL function added
> > that allows to write debug messages from AFL code to system debug
> viewer.
> > (it calls internally OutputDebugString Win API function).
> > To view debug messages you have to run DebugView freeware program
> > from http://www.sysinternals.com/
> > CHANGES FOR VERSION 4.31.1 (as compared to 4.31.0)
> >
> > a.. fixed bug introduced in 4.31.0 causing no text output in
> commentary/interpretation
> > CHANGES FOR VERSION 4.31.0 (as compared to 4.30.0)
> >
> > a.. Workspace window uses "icon font" set in the Windows settings
> instead of hard coded Tahoma 8
> > b.. 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.
> > c.. 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.
> > d.. 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;
> >
> > e.. 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;
> > }
> >
> > f.. implemented C-style postfix and prefix increment/decrement
> operators
> >
> > i = 10;
> > WriteIf( i++ );
> > WriteIf( ++i );
> > WriteIf( i );
> >
> > g.. 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 ];
> > }
> >
> >
> >
> > h.. 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
> >
> > i.. implemented infinite-loop protection. Nice if you forgot to
> increment counter variable in 'for' loop :-)
> >
> > j.. tab key now works without need to press ALT/CTRL in AFL
> editors
> >
> > k.. 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 bugs@xxxx
>
>
>
> 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/
>
>
>
------------------------ Yahoo! Groups Sponsor ---------------------~-->
Save up to $400 on all notebooks.
Get the notebook you want with all the features at a price you love. Price after rebates and savings
http://us.click.yahoo.com/gx2HjB/wwSGAA/ySSFAA/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/
|