PureBytes Links
Trading Reference Links
|
Just copied image to MS Word - No problems.
Using Win 2k and Office 2000
<BLOCKQUOTE
>
----- Original Message -----
<DIV
>From:
Bob Jagow
To: <A title=amibroker@xxxxxxxxxxxxxxx
href="">amibroker@xxxxxxxxxxxxxxx
Sent: Thursday, May 22, 2003 9:16
AM
Subject: RE: [amibroker] Re: Image Copy
Problem even when copied to Word.
That's a real problem, Salil.I'm scrambling to keep
from suspendingMY newsletter.Bob-----Original
Message-----From: salil_gangal[mailto:salil_gangal@xxxxxxxxx]Sent:
Thursday, May 22, 2003 9:01 AMTo: <A
href="">amibroker@xxxxxxxxxxxxxxxSubject:
[amibroker] Re: Image CopyProblem even when copied to
Word.Friends,Similar problem comes-up if the
copiedimage is pasted into MicrosoftWORD. So I guess there is a
bug inAmiBroker. Are there any otherswho have noticed that there
is a bar atthe bottom of the copiedimage copied using 'Edit->Image
Copy' ?Regards,- Salil V Gangal--- In
amibroker@xxxxxxxxxxxxxxx, SalilV Gangal
<salil_gangal@xxxx>wrote:> Tomasz,>> I am
copying chart image using'Edit->Copy As Image'.>> But I
noticed that copied image gets ablack-band at the bottom.Have you
noticed> anything like this ? Is this a bug ?BTW, I import
the image intoXnView, and I'm> not sure if this is AmiBroker issue
orXnView issue.>> Regards,>> - Salil V
Gangal>>> --- Tomasz Janeczko
<amibroker@xxxx>wrote:> > Hello,> >> >
A new beta version (4.38.0) ofAmiBroker has just been released.>
>> > It is available for registered usersonly from the
members areaat:> ><A
href="">http://www.amibroker.com/members/bin/ab4380beta.exe>
>> > If you forgot your user name /password to the members
area> > you can use automatic reminderservice at:<A
href="">http://www.amibroker.com/login.html>
>> > Short list of changes in this beta(read change log in
the "readme" below for the> > details)> >> >
a.. send e-mails with chartsdirectly 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 candlestickappearance:
Tools->Preferences->Charting, "Use> > distinct color for"
: "None, upcandle hollow" - it plots entirecandle with one>
> color but leaves interior of UPcandle body hollow.>
>> > a.. fixed positioning of arrows inimage copies
(Edit->Image->Copy)> >> > a.. fixed crash
occurring whenprinter device context did notsupport bit blit>
> copies. added very simple arrow linedrawing for that case (willbe
improved in> > future releases)> >> > a.. fixed
bug in handling Null withnew constructs: if, while andfor.>
>> > a.. numbers (floats) are nowautomatically 'upsized' to
arrays onfirst use of> > l-value array subscript
operatorwithout 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
THESOFTWARE. EXPECT BUGS !!!> >> > AGAIN: THIS IS AN
EARLY BETA VERSIONOF THE SOFTWARE. EXPECTBUGS !!!> >>
>> > Backup your data files and entireAmiBroker folder
first!> >> > INSTALLATION INSTRUCTIONS>
>> > IMPORTANT: This archive isupdate-only. You have to
install fullversion 4.30> > first.> >> >
Just run the installer and followthe instructions.> >>
> Then run AmiBroker. You should see"AmiBroker 4.38.0 beta"written
in the About> > box.> >> > See CHANGE LOG below
for detailedlist of changes.> >> > HELP ON NEW
FEATURES> > USER-DEFINABLE FUNCTIONS,PROCEDURES, LOCAL/GLOBAL
VARIABLES(4.34 or higher)> >> > Here is a sample code
showinguser-defined function:> >> > // the following
function is 2ndorder 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-definedfunction. input, f0, f1, f2are
formal> > parameters of the functions.> > At the time of
function call thevalues of arguments are passedin these> >
variables. Formal parameters behavelike local variables.> >
Later we have result and i which arelocal variables. Localvariables
are visible> > inside function only. If any otherfunction uses
the samevariable name they won't> > interfere between each
other.> >> > Due to the fact that AFL does notrequire
to declare variablesthe decision> > whenever given variable is
treatedas local or global is takendepends on where it> > is
FIRST USED.> >> > If given identifier appears
firstINSIDE function definition -then it is treated> > as
LOCAL variable.> > If given identifier appears firstOUTSIDE
function definition -then it is treated> > as GLOBAL
variable.> >> > This default behaviour can behowever
overriden using global andlocal keywords> > (introduced in 4.36)
- see example2.> >> > Example (commentary):>
>> > k = 4; // this is GLOBAL variable> >> >
function f( x )> > {> > z = 3; // this is
LOCAL variable> > return z * x * k; // 'k'
herereferences global variable k(first used above> > outside
function)> > }> >> > z = 5; // this is GLOBAL
variablewith the same name as localvariable in function> >
f> >> > "The value of z before function call:" +
WriteVal( z );> >> > // Now even if we call
function> > // the value of our global variablez> > //
is not affected by function callbecause> > // global variable z
and localvariable 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 callis unchanged : " +teVal( 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-whilestatement is evaluated after thebody
of the loop is> > executed. Therefore, the body of theloop is
always executed atleast once.> >> > The expression
must have numeric orboolean type. Executionproceeds as
follows:> >> > 1.. The statement body
isexecuted.> >> >> > 2.. Next,
expression is evaluated.If expression is false, thedo-while>
> statement terminates and controlpasses to the next statement
inthe program. If> > expression is true (nonzero),
theprocess is repeated, beginningwith step 1.> > This is an
example of the do-whilestatement:> >> > x=100;>
> do> > {> > y = sin( x
);> > x--;> > } while ( x > 0
);> > In this do-while statement, the twostatements y = sin( x
); andx--; are> > executed, regardless of the initialvalue
of x. Then x > 0 isevaluated. If x is> > greater than 0, the
statement bodyis executed again and x > 0 isreevaluated.
The> > statement body is executedrepeatedly as long as x
remainsgreater than 0.> > Execution of the do-while
statementterminates when x becomes 0or negative. The> > body
of the loop is executed atleast once.> >> >>
> while Statement> > The while statement lets you repeata
statement until a specifiedexpression> > 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 initiallyfalse, the body of the whilestatement is
never> > executed, and control passes fromthe while statement to
the nextstatement in the> > program.> > If
expression is true (nonzero),the body of the statement isexecuted and
the> > process is repeated beginning atstep 1.>
>> > This is an example of the whilestatement:>
>> > i = 10;while( i <{ 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 tothe 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 isgreater than 0. If i> >
is less than or equal to 0, i isassigned to x and abs( x ) isassigned
to y. Note> > that the statement forming the ifclause ends with
a semicolon.> >> > When nesting if statements and
elseclauses, use braces to groupthe statements> > and
clauses into compound statementsthat clarify your intent. Ifno braces
are> > present, the compiler resolvesambiguities by associating
eachelse with the> > closest if that lacks an else.>
>> > Example 2> >> > if ( i > 0
) /*
Withoutbraces */> > if ( j > i
)> > x = j;>
> else>
> x = i;The else clause
isassociated with the inner ifstatement in this> > example.
If i is less than or equalto 0, no value is assigned tox.>
>> > Example 3> >> > if ( i > 0 )>
>
{
/* Withbraces */> > if ( j > i
)> > x = j;>
> }> > else> > x = i;The braces
surrounding theinner if statement in thisexample make the> >
else clause part of the outer ifstatement. If i is less than orequal
to 0, i is> > assigned to x.> >> > CHANGE
LOG> > CHANGES FOR VERSION 4.38.0 (ascompared to 4.37.0)>
>> > a.. new setting for
candlestickappearance:> >
Tools->Preferences->Charting> > "Use distinct
color for" : "None,up candle hollow" -> > it plots
entire candle with onecolor but leaves interior of UPcandle
body> > hollow.> >> >> >
b.. added export chart image toPNG (portable network
graphics)file> > Edit->Image->Export to PNG
file> > (Please don't ask me to add GIFsupport. GIF
is patented andrequires $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 inimage copies (Edit->Image->Copy)>
>> > e.. fixed crash occurring whenprinter device
context did notsupport bit blit> > copies. added very simple
arrow linedrawing for that case (willbe improved in> >
future releases)> >> > f.. fixed bug in
handling Nullwith new constructs: if, whileand for.>
> In pre-4.38 versions Null used inif, while for was
treated asTrue, which was> > wrong> > if(
Null ) _TRACE("WRONG");> > else
_TRACE("CORRECT");> > Now Null in if, while, for
istreated as False.> > g.. numbers (floats) are
nowautomatically 'upsized' to arrayson first use of> >
l-value array subscript operatorwithout causing error.>
> Also r-value subscript can beapplied to numbers and
return thenumber itself> > without causing error, but
theunderlying variable remains just asingle number.>
>> > This allows to easily intializearrays to any
value withoutneed to write loops.> >> >
Example 1:> > in previous versions you wouldneed to
write:> >> > for( i = 0; i < BarCount; i++
)myarray[ i ] = 0 ; // fill withzeros> >
myarray[ 5 ] = 6; // write valueto 5th element of the array>
>> > now you can write simply:> >>
> myarray = 3; // initialize, atthis moment myarray is just
anumber> > myarray[ 5 ] = 6; // write valueto
5th element of the array,the variable is> >
automatically> > // upsized to array and allelements
are filled with a numericvalue> > // that was
originally placed inmyarray variable> >> >
/* myarray is holds now the arrayfilled with values of 3except element
5 that> > has value of 6 */> >> >
mynumber = 5;> > test = mynumber[ 7 ]; //
previousversions would give an errormessage here>
> // now subscript operator forr-value numeric
variable> > // is allowed and returns just
thenumber> > // and variable is not upsized
toarray unless appears on leftside> > // of
assignment (l-value)> > /* mynumber variable here is
stilla number */> > WriteVal( test );>
>> > CHANGES FOR VERSION 4.37.0 (ascompared to
4.36.0)> >> > a.. printing improved, now
allopen indicator panes are printedand resolution> > is
increased> > b.. Edit->Copy As Image
andEdit->Copy As Metafile now generatean image> >
consisting of all indicator panes(not just one)> >
c.. fixed problem withnon-resetting sort arrows in AA window>
> d.. fixed sometimes occuring crashSignal()
function> > e.. increased size of errormessage text
buffer to preventoverflow when> > reporting syntax errors in
formulashaving long unwrapped lines.> > f.. grid
lines are drawn with finedots instead of small dashes(screen
output> > only)> > g.. new AFL
functions:> > GetCategorySymbols( category,index
)> > - retrieves comma-separated listof symbols
belonging to givencategory> >> > supported
categories:> > categoryMarket
categoryGroupcategorySector categoryIndustrycategoryWatchlist>
> categoryFavorite categoryIndex> >>
> index
=(market/group/industry/sector/watchlistnumber)>
> 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
forGetCategorySymbols and StrExtract:> >>
> /* note: if given watch listcontains lots of
symbols> > ** performance may be poor>
> */> >
functionCreateAverageForWatchList( listnum )> >
{> > // retrive comma-separated listof symbols
in watch list> > list =etCategorySymbols(
categoryWatchlist,listnum );> >> >
Average = 0; // just in casethere are no watch list members>
>> > for( i = 0; ( sym =trExtract( list, i
) ) != ""; i++ )> > {>
> f = Foreign( sym, "C" );>
> if( i == 0 ) Average = f;>
> else Average = Average + f;>
> }> >> > return
Average / i; // divide bynumber of components> >
}> >> > Plot( CreateAverageForWatchList( 1
),"Avg of WL 1",colorGreen );> >> > CHANGES FOR
VERSION 4.36.0 (ascompared to 4.35.0)> >>
> a.. fixed problem with affecting 2or more
identifiersreferencing the same> > array when using l-value
subscriptoperator []. Thanks Herman forpointing this> >
out> > b.. global and local keywords -for explicit
visibility/scopedeclarations> > Allow to override
default scoperules that assume thatvariables defined outside>
> function are global, while thoseidentifiers that appear for
thefirst time inside> > functions are local.>
>> > Syntax:> >> >
local var1 [, var2, ... ] ;> > global var1 [, var2, ...
] ;> >> > (as you can see you can
declaremore than one variable in oneline.> >>
> Note: using these keywords outsidefunction definition has
nomeaning> > (global scope is used).>
>> > Example:> >> >
VariableA = 5; // implict globalvariable> >>
> function Test()> > {>
> local VariableA; // explicitlocal variable
with the sameidentifier as global> >>
> global VariableB; // explicitglobal variable not
definedearlier>
>
// may be usedto return more than one valuefrom 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 functioncall )";>
> "VariableB = " + VariableB + "(affected by the
functioncall )";> >> > c.. syntax
highligting modified sokeywords: #include, if,else, while, do,>
> function, procedure, global, local,return are
coloriseddifferently than built-in> > constants or
functions.Corresponding color/style setting addedto> >
Preferences->Editor> >> >> > d..
#pragma nocache> > pre-processor command added
toswitch off #include file cachingmechanism.> >
Note: between '#pragma' and'nocache' there must be exactlySINGLE
space> > Note 2: disabling caching may slowdown
execution of theformula (especially> > in
indicators)> > Note 3: #pragma nocache must beplaced
before #includes> >> > Example:>
> #pragma nocache> > #include
<myfile.afl>> >> > a.. single line
comments now workwith #includes (and #pragmatoo) so you can>
> comment out include in regular way:> > //#include
<something> - will notinclude> >> >>
> b.. changed error message from"unknown identifier"to
"Variable 'name' used> > without having been initialized."which
better decribes theproblem.> >> > For
example:> >> > function Test( )>
> {> > global x;>
> x = 3;> > }> >>
> WriteVal( x ); // variable usedwithout having been
initialized,> > // although declared inside
Test()function body> >> >> >
Test( ); // during function callthe value of 3 is assigned tovariable
x> >> > WriteVal( x ); // and now no
erroris reported> >> > a.. implemented
shortcutevaluation of logical operators> > The
operands of logical-AND andlogical-OR expressions areevaluated from
left> > to right. Now if the value of thefirst operand is
sufficient todetermine the> > result of the operation, the
secondoperand is not evaluated.This is called> >
"short-circuit evaluation."> >> > The left
operand of thelogical-AND operator is completelyevaluated and
all> > side effects complete beforecontinuing. If the left
operandevaluates to false> > (0), the other operand is
notevaluated.> >> > The left operand of
the logical-ORoperator is completelyevaluated> >
and all side effects completebefore continuing.> >
If the left operand evaluates totrue (nonzero), the otheroperand is
not> > evaluated.> >> > (The above
description applies tooperands that evaluate tosingle boolean>
> value,> > it does not apply to arrays.Operands
that evaluate to arraysare evaluated> > always )>
>> > Example:> > for( i = -3; i
< BarCount; i++ )> > {> >
// using old versions ofAMiBroker you would get subscipt outof
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 (ascompared to 4.34.2)> >> > a..
do-while loop implemented:> > Syntax:>
>> > do statement while ( expression );>
>> > The expression in a do-whilestatement is
evaluated after thebody of the loop> > is executed.>
> Therefore, the body of the loop isalways executed at
leastonce.> >> > Example:>
>> > i=0;> > do>
> {> > i++;>
> }> > while( i < 100 );>
> WriteVal( i );> >> >>
> b.. it is now allowed to 'add' (orrather concatenate)
stringto a number /> > array. This saves quite a bit
oftyping. This works as inJScript. The left-hand> > operand
of '+' has to be a string.The right-hand operand may bestring, number
or> > array. Numbers are coerced tostrings using %g sprintf
formatting(prints out> > decimal point only when
necessary)and then concatenated. In caseof arrays> >
SELECTED VALUE is coerced to stringand 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" becausestatements are parsed fromleft to
right.> > "Test " is added first to "100"giving
"Test 100" and thento "1" giving> > "Test 1001". If
you want toperform numeric adding first pleaseuse braces:>
>> > "Test " + ( 100 + 1 );> >
- this will give you "Test 101"> >> >>
> c.. additional tweaks in AFLengine & garbage
collection,futher speed up of> > execution of very long
loops> >> > d.. more error checking in
AFLengine - will report usinguninitialized> > variables that
were acceptedsilently in 4.31.x - 4.34.x> > e..
#include now accepts new wayof specifying file names
toinclude:> >> > #include
<filename.afl>> >> > (note < >
braces instead of " " )if you specify the file namethis way>
> AmiBroker will look for> > the file in "standard
includepath" that is definable using newprefs setting in> >
Tools->Preferences->AFL> > It makes much shorter
to writeincludes and you can moveinclude folder now> >
without changing all AFL codes using#includes.> >>
> For example if you have setstandard include pathto
"C:\AFL\MyIncludes" and> > write in your formula:>
>> > #include <common.afl>> >>
> AmiBroker will look forC:\AFL\MyIncludes\common.afl
file> >> > Also now #include reports
file(s)not found in regular errormessage box.> >>
>> > f.. IIf/Min/Max are now overloadedfunctions
(have two variantseach)> > 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 allarguments are numbers
and itis much much> > faster and returns number
soLastValue() call is not neccessaryanymore.> >>
> Example:> >> > // much faster
and does notrequire LastValue()> > period = IIF(
name() == "MSFT", 5,10 );> > result = Min( 7, 3
);> > // (result is still a number notarray as in
previous versions)> >> >> > g..
added 'endless loop detectionthreshold' setting toPreferences "AFL"
tab.> > Recommended value 100000 or higher.> >>
> h.. fixed parameter counting inCallFunction plugin
callback incase of> > overloaded functions>
> i.. fixed problem with prematurefreeing of arrays passed
indefault parameters> > fields (causing for example
problemwith color explorationoutput - introduced in> >
4.32)> >> > CHANGES FOR VERSION 4.34.2 (ascompared to
4.34.0)> >> > a.. improved crash recovery
dialogto include AFL engine stateinformation and> > (in some
cases) the source line ofthe formula that causes anexception>
> b.. added ability to catch allexceptions in indicators
andcommentaries> > (switchabel
viaTools->Preferences->AFL, "catch systemexceptions...", ON
by> > default) - allows you to continue towork even in case of
seriousproblem> > c.. loop break by Shift+BREAK
isnow more sensitive> > d.. now you can control how
oftenShift+BREAK key is checkedduring formula> > execution
(Tools->Preferences->AFL,"check SHIFT+Break every"(1..100,
default => > 50) (note that specifying low valuesmay degrade
performanceslightly)> > e.. tweaked AFL memory
allocatorhash tables to get more speedfor large looping> >
formulas> > f.. although I never reproducedthis
problem I made somechanges so 'TAB' key> > should not wipe the
contents of AFLeditor anymore> > CHANGES FOR VERSION 4.34.0
(ascompared to 4.33.0)> >> > a..
user-definable functions andprocedures with parameters andlocal
variables> >> > b.. 'A' is NO LONGER
predefinedsymbol. I decided to remove itbecause people> >
tend to use A as user-variableforgetting the fact that it wasbuild-in
array> > holding typical price (H+L+C)/3. Use'Avg'
instead.> >> > c.. indicator list column
widthincreased in Indicator Builder> > d.. DayOfYear
- returns thecalendar day number counting frombeginning of the>
> year January 1st is 1. Maximumnumber returned is 366> >
CHANGES FOR VERSION 4.33.0 (ascompared to 4.32.2)> >>
> a.. Database purify toolimplemented (available via
Tools->Database Purify)> > allows to detect
missing/extraquotes, possible splits, invalidOHLC> >
relationship> >> > Apply to/range settings
similar toAA window. You can alsoright click over> > result
list to add symbols to watchlist and copy the list to theclipboard
(and> > paste it later to any other programfor futher
use)> >> >> > b.. further
improvements to AFLgarbage collector, now loopingregardless of>
> loop count requires the same amountof memory as just single
passof the code (no> > growing allocated memory
duringloops).> > This enormously lowered
memoryconsumption for some formulasand increased the> >
speed of some loops 3..4 times.> >> >>
> c.. added variable period supportto 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 incorrectoutput of variable-period versionof
LLV/HHV> >> > e.. fixed crash occuring when
badarguments were passed to thefunction (bug> > introduced
in 4.32.x).> >> > CHANGES FOR VERSION 4.32.2
(ascompared to 4.32.1)> >> > a.. second
bug in experimentalgarbage collector fixed.> > CHANGES FOR
VERSION 4.32.1 (ascompared to 4.32.0)> >>
> a.. garbage collector wasreleasing memory too soon in
somecases, now fixed.> > CHANGES FOR VERSION 4.32.0
(ascompared to 4.31.1)> >> > a.. added
type check in IF/ELSEstatements> > b.. added type
check in arrayelement assignment> > c.. error
messages now numberedand display changed slightly> >
d.. you can break running loop bypressing Shift+BREAK (Pause)key
combination> > e.. calling COM objects worksagain
(was broken in 4.31.x)> > f.. changed slightly the way
TABworks in editor, if TAB ispressed any> > selection is
deselected to avoidaccidential deletion of text> >
g.. experimental: added 'agressivegarbage collector' thatextremely
decreases> > the amount> > of memory required
to run AFLformula by releasing the memory> > used
for temporary variables assoon as possible (previously>
> temporary memory was released atthe end of formula
execution).> > A side-effect of new garbagecollector
is some speed up informula execution.> > h.. new tab
in preferences for AFLengine settings> > i..
experimental feature, NOT forbeginners, may beremoved/modified in
future> > releases:> > new _TRACE( "string" )
AFLfunction added> > that allows to write
debugmessages from AFL code to systemdebug viewer.>
> (it calls internallyOutputDebugString Win API
function).> > To view debug messages you have torun
DebugView freewareprogram> > from <A
href="">http://www.sysinternals.com/>
> CHANGES FOR VERSION 4.31.1 (ascompared to 4.31.0)>
>> > a.. fixed bug introduced in 4.31.0causing no
text output in> > commentary/interpretation> > CHANGES FOR
VERSION 4.31.0 (ascompared to 4.30.0)> >>
> a.. Workspace window uses "iconfont" set in the
Windowssettings instead of> > hard coded Tahoma 8>
> b.. for better readability andClearType(tm) compatibility
onWinXP, all dialog> > windows use now 'MS Shell Dlg'
facename that maps to standard MSSans Serif on> > Win
9x/Me/NT and Tahoma on Win 2Kand XP.> > c..
rewritten AFL parser, nowformula is parsed and coverted tosyntax tree
and> > then interpreted. This would allowfurther improvements
includingcompilation.> > This allowed also to
addloops/if-else statements.> > d.. implemented
IF/ELSE statement,WHILE and FOR loops:> > The same
basic 'for' loop in AFLis 2..3 times faster than inJScript>
> 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 compoundstatements: these are blocks
ofstatements enclosed> > in opening and closing
curly brace> >> > {> >
statement1;> > statement2;> >
...> > statementN;> > }>
>> > compound statement can appearanywhere when
simple statementcan.> >> > For
example:> >> > i = 10;>
> while( i < 20 )> > {>
> Plot( MA( Close, i ), "MA" +WriteVal( i, 0 ), colorBlack
+ i );> > i = i + 1;> > }>
>> > f.. implemented C-style postfixand prefix
increment/decrementoperators> >> > i =
10;> > WriteIf( i++ );> > WriteIf(
++i );> > WriteIf( i );> >>
> g.. implemented array elementaccess (subscript) operator
[]:> >> > WriteVal( Close[ 0 ] ); //
printsthe first bar of close array> >> >
/* a sample low-levelimplementation of exponential movingaverage 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 ofbars available in>
> arrays (the number of elements ofarray)> > When
QuickAFL is turned on it maybe less than true number ofbars
because> > QuickAFL feature attempts to useonly visible bars
(and fewbefore). You can> > control how many bars the
formularequires using SetBarsRequired() function> >>
> i.. implemented infinite-loopprotection. Nice if you
forgot toincrement> > counter variable in 'for' loop :-)>
>> > j.. tab key now works without needto press
ALT/CTRL in AFLeditors> >> > k.. added
C-like synonyms forlogical ADD/OR/NOT: &&, ||, !>
>> >> > /* a sample
low-levelimplementation of Profit-target stop inAFL: */>
>> > 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 withthis beta
version please senddetailed> > description of the
problem(especially the steps needed toreproduce it) to> >
bugs@xxxx> >>>>
__________________________________> Do you Yahoo!?> The New
Yahoo! Search - Faster.Easier. Bingo.> <A
href="">http://search.yahoo.com------------------------
Yahoo! GroupsSend BUG REPORTS to bugs@xxxxxxxxxxxxxSend
SUGGESTIONS
tosuggest@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.htmlYour
use of Yahoo! Groups is subject to<A
href="">http://docs.yahoo.com/info/terms/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
Select Make Acura Audi BMW Cadillac Chevrolet Chrysler Dodge Ford GMC Honda Infiniti Jaguar Jeep Lexus Lincoln Mazda Mercedes-Benz Mitsubishi Nissan Pontiac Porsche Toyota Volkswagen Volvo Other
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.
|