PureBytes Links
Trading Reference Links
|
Salil,
Try using Microsoft PAINT (from Accessories). Do you see the same problem
using PAINT ? Try MS Word too.
If it works everywhere except your XnView, maybe it is XnView problem?
Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message -----
From: "salil_gangal" <salil_gangal@xxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Friday, May 23, 2003 12:35 AM
Subject: [amibroker] Re: Image Copy Problem even when copied to Word.
> Tomasz,
>
> Even before re-installing AmiBroker I was getting similar black-bar
> at the bottom of the image. See the image ===>
>
> http://fundvision.com/wwwboard/messages/43686.shtml
>
> It will be helpful if this black-bar is eliminated.
>
> Regards,
>
> - Salil V Gangal
>
>
> --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <amibroker@xxxx>
> wrote:
> > Salil,
> >
> > Thank you for posting the image. Indeed it should look different.
> > The bottom bar should be in the background color (in your setup
> grey)
> > and show "created with Amibroker.." text.
> > Will check this out.
> >
> > Best regards,
> > Tomasz Janeczko
> > amibroker.com
> > ----- Original Message -----
> > From: Salil V Gangal
> > To: amibroker@xxxxxxxxxxxxxxx
> > Sent: Thursday, May 22, 2003 7:21 PM
> > Subject: RE: [amibroker] Re: Image Copy Problem even when copied
> to Word.
> >
> >
> > Ken and Ara,
> >
> > I re-installed AmiBroker over the existing installation and
> applied the latest Beta patch. I'll attach what I get as copied
> image. Still the black-bar at the bottom of the image is visible. I
> used XnView to copy the image.
> >
> > Regards,
> > - Salil V Gangal
> >
> >
> > Ken Close <closeks@xxxx> wrote:
> > Salil: no problems with my setup, copying with both bitmap and
> metafile.
> > I see that TJ put in a message along the bottom "Created with
> Amibroker
> > ... " so perhaps this added text message is somehow causing
> your bitmap
> > to show a black border. My graph background is black and the
> message is
> > in white text along the bottom.
> >
> > Ken
> >
> > -----Original Message-----
> > From: salil_gangal [mailto:salil_gangal@x...]
> > Sent: Thursday, May 22, 2003 12:01 PM
> > To: amibroker@xxxxxxxxxxxxxxx
> > Subject: [amibroker] Re: Image Copy Problem even when copied to
> Word.
> >
> > Friends,
> >
> > Similar problem comes-up if the copied image is pasted into
> Microsoft
> > WORD. So I guess there is a bug in AmiBroker. Are there any
> others
> > who have noticed that there is a bar at the bottom of the
> copied
> > image copied using 'Edit->Image Copy' ?
> >
> > Regards,
> >
> > - Salil V Gangal
> >
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, Salil V Gangal
> <salil_gangal@xxxx>
> > wrote:
> > > Tomasz,
> > >
> > > I am copying chart image using 'Edit->Copy As Image'.
> > >
> > > But I noticed that copied image gets a black-band at the
> bottom.
> > Have you noticed
> > > anything like this ? Is this a bug ? BTW, I import the
> image into
> > XnView, and I'm
> > > not sure if this is AmiBroker issue or XnView issue.
> > >
> > > Regards,
> > >
> > > - Salil V Gangal
> > >
> > >
> > > --- Tomasz Janeczko <amibroker@xxxx> wrote:
> > > > Hello,
> > > >
> > > > A new beta version (4.38.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/ab4380beta.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
> > > >
> > > > Short list of changes in this beta (read change log in
> the "read
> > me" below for the
> > > > details)
> > > >
> > > > a.. send e-mails with charts directly from AmiBroker: Edit-
> >Image-
> > >Send by email
> > > > and File->Send chart via e-mail
> > > > a.. added export chart image to PNG (portable network
> graphics)
> > file:
> > > > Edit->Image->Export to PNG file
> > > >
> > > > 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.
> > > >
> > > > a.. fixed positioning of arrows in image copies (Edit-
> >Image-
> > >Copy)
> > > >
> > > > a.. 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)
> > > >
> > > > a.. fixed bug in handling Null with new constructs: if,
> while and
> > for.
> > > >
> > > > a.. numbers (floats) are now automatically 'upsized' to
> arrays on
> > first use of
> > > > l-value array subscript operator without causing error.
> > > > .
> > > >
> > > > Best regards,
> > > > Tomasz Janeczko
> > > > amibroker.com
> > > >
> > > > AmiBroker 4.38.0 Beta Read Me
> > > > May 20, 2003 1:11
> > > >
> > > > 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.38.0 beta"
> > written in the About
> > > > box.
> > > >
> > > > See CHANGE LOG below for detailed list of changes.
> > > >
> > > > HELP ON NEW FEATURES
> > > > 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.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
> > > >
> > >
> > >
> > > __________________________________
> > > Do you Yahoo!?
> > > The New Yahoo! Search - Faster. Easier. Bingo.
> > > http://search.yahoo.com
> >
> >
> >
> > Send BUG REPORTS to bugs@xxxx
> > Send SUGGESTIONS to suggest@xxxx
> > -----------------------------------------
> > 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/
> >
> >
> >
> >
> >
> > Send BUG REPORTS to bugs@xxxx
> > Send SUGGESTIONS to suggest@xxxx
> > -----------------------------------------
> > 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.
> >
> >
> >
> > --------------------------------------------------------------------
> ----------
> > Do you Yahoo!?
> > The New Yahoo! Search - Faster. Easier. Bingo.
> > Yahoo! Groups Sponsor
> > ADVERTISEMENT
> >
> >
> >
> >
> > Send BUG REPORTS to bugs@xxxx
> > Send SUGGESTIONS to suggest@xxxx
> > -----------------------------------------
> > 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.
> >
> >
> >
> > --------------------------------------------------------------------
> ----------
>
>
>
> 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 ---------------------~-->
Get A Free Psychic Reading!
Your Online Answer To Life's Important Questions.
http://us.click.yahoo.com/aM1XQD/od7FAA/uetFAA/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/
|