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

Re: [amibroker] Re: Image Copy Problem even when copied to Word.



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.