AmiBroker 5.50.1  RC1 Read Me
 
  December 13, 2011  13:15
THIS IS A RC 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
       5.40 first. 
Just run the installer and follow the instructions. 
Then run AmiBroker. You should see "AmiBroker 5.50.1 RC1" written
   in the About box.
See CHANGE LOG below for detailed list of changes.
CHANGE LOG
CHANGES FOR VERSION 5.50.1 (as compared to 5.50.0)
  - New Analysis: Individual Backtest implemented. Note that it runs with approx
    same speed as old AA as Individual Backtest is single threaded for reasons
  explained in the User's manual http://www.amibroker.com/guide/h_multithreading.html
- New Analysis: toolbar icons for parameters and settings changed to avoid
  confusion with the icon for preferences
- UI: Symbol List uses Windows 7/Vista
  style
- New Analysis: Toolbar customization is now saved
- MRU (most recently used)
  file menu moved to submenu and MRU list increased to 10 items
- Charts: fixed
  small alignment problem on Y axis when using fixed (nonproportional) font
- New
    Analysis: backtester object now has EquityArray property that returns entire
  equity array (not just current value).
 Please note that values are filled during backtest and only after backtest
  is complete, all values are valid. If you call it in the middle, it will contain
  only "upto given point" data. Avoid abusing this function and it
  is costly in terms of RAM/CPU.e).
 You may use
 bo.EquityArray instead of Foreign("~~~Equity", "C" )
 in custom backtester code.
 It accesses local copy of equity in New Analysis (unlike Foreign that accesses
  global symbol)
 
- New Analysis: AddToComposite with atcDeleteValues
  | atcEnableInPortfolio did not delete previous values. Fixed
- New Analysis: "Interval" menu
    item in the auto-repeat group renamed to "AR interval" because
  some users interpreted it wrong (as periodicity)
- New Analysis: OLE interface
  implemented
 
 Description in the http://www.amibroker.com/guide/objects.htmlExample
 The following JScript example
 a) opens analysis project from C:\Analysis1.apx file
 b) starts backtest (asynchronously)
 c) waits for completion
 d) exports results
 e) closes analysis document
 AB = new ActiveXObject( "Broker.Application" ); 
 
 try
 {
 NewA = AB.AnalysisDocs.Open( "c:\\analysis1.apx" ); //
        opens given analysis project file
 
 if (
        NewA )
 {
 NewA.Run( 2 ); //
        starts analysis (asynchronous - returns immediatelly
 // (0-scan, 1- exploration,
        2- portfolio backtest, 4- optimization, 6-walk forward)
 
 while (
        NewA.IsBusy )
 WScript.Sleep( 500 ); //
        wait for completion
 
 NewA.Export( "test.html" ); //
        exporing results
 
 WScript.echo( "ended" );
 
 NewA.Close(); // closing analysis window
 }
 }
 catch ( exc )
 {
 WScript.echo( "Exception: " +
        exc.message );
 }
 
- Charts: more tweaks for Y axis algorithm for readability. Now
    in Tools->Preferences, "Charting" the
  user may select different grid stepping: Instead of default 1, 2, 5, 10 grid
    stepping, user may select to use 2.5 step instead of 2 (Use 2.5 step in Y
  axis)
- GetFnData() supports new field "Alias" - return Alias field
  without need to use OLE
- GetOption supports new fields: ApplyTo and Filter*,
  eliminates the need to use OLE for that purpose
 New fields:
 -"ApplyTo" - returns Analysis "Apply To" setting 0 - all
  symbols, 1 - current symbol, 2 - filter
 - "FilterIncludeIndex", "FilterIncludeFavorite", "FilterIncludeMarket", "FilterIncludeGroup", "FilterIncludeSector", "FilterIncludeIndustry", "FilterIncludeWatchlist" -
  return "Include" filter settings -1 - means NOT selected (not included), >=
  0 index of included category
 - "FilterExcludeIndex", "FilterExcludeFavorite", "FilterExcludeMarket", "FilterExcludeGroup", "FilterExcludeSector", "FilterExcludeIndustry", "FilterExcludeWatchlist" -
  return "Exclude" filter settings -1 - means NOT selected (not excluded), >=
  0 index of excluded category
 
 
- Fix for FPU inaccurracies
      in range bars implemented
 
CHANGES FOR VERSION 5.50.0 (as compared to 5.49.2)
  - New Analysis: "Save" creates now a Analysis project (.apx) file
    that includes all settings and formula needed in single file. The file itself
  is in human readable XML format. When such file is loaded on somebodys' else
    computer it will recreate original formula if one is not present. It will
    warn if there is a name conflict and
  let you decide to keep existing formula or overwrite.
 
- UI: File open dialog now has "All supported
    files" option in the "Files
  of type"
- UI: PopupWindow is now resizable (see size gripper in the lower-right
  corner)
- AFL: PopupWindow function has additional parameters to control width/height
  and flag that controls whenever popup window captures input focus
 PopupWindow( "bodytext","captiontext", timeout = 5, left
  = -1, top = -1, width = -1, height = -1, captureFocus = True );width = width in pixels, -1 - use default width
 height = height in pixels, -1 - use default height
 captureFocus - decides whenever popup window captures input focus or not Example: popup window that does not change input focus:
 PopupWindow("test", "caption", 30, -1, -1, -1, -1, False);
 
 
- New Analysis:
    ApplyStops applied in non-regular modes are passed to 2nd phase properly
  now.
- New Analysis: "Show current trade arrows" fixed.
- New Analysis:
    View->Filtering menu options were not available when New
  Analysis was active. Fixed.
- New Analysis: Standard Edition has a limit of
  max 2 threads per Analysis window instance.
- UI: Log window clicking on error
    displayed AFL Editor and marked Line+1, Col+1 char position instead of proper
  place. Fixed
- New Analysis: Errors are now displayed in a modern message bar
  instead of dialog box
- UI: holding down Ctrl and Q keys simultaneously while
  AmiBroker is starting resets all menus/command bars to defaults
- New Analysis:
    scroll bar properly works when "Walk forward" tab
  is active
- New Analysis: Walk forward tab content can be now copied using Edit->Copy
  / Ctrl+C
- New Analysis: when "wait for backfill" was turned on and
    external data source was very slow to repond (like IQFeed during backfill)
    subsequent
  calls to Status('stocknum') could give non-unique numbers. Fixed.
- New
  Analysis: Copy to clipboard includes headers now
- New Analysis: Column customization/state
  persistence implemented
- Charts: New Y axis grid algorithm for clearer display
  on condensed charts
- AFL: CategoryGetSymbols supports new categoryAll (all
  symbols in the database) and new Mode parameter
 CategoryGetSymbols( category, number, mode = 0 );Mode parameter decides what field is retrived:
 0 (default value) - ticker symbol
 1 - full name
 Example: to get all symbols existing in the database simply call
 CategoryGetSymbols( categoryAll, 0 );
 to get full names of all symbols use:
 CategoryGetSymbols( categoryAll, 0, 1 );
 
- AFL: Added Warning 503. Using
    OLE / CreateObject / CreateStaticObject is not multi-threading friendly.
    See Users' Guide ""Efficient use of multithreading"" for
  more details.
- AFL: Added ThreadSleep( milliseconds ) function. It suspends
      current thread for specified number of milliseconds (maximum is 100 ms).
      Works only from
      NON-UI threads. When called from UI thread the function does NOTHING and
      returns immediatelly.
  Please do NOT abuse this function. Using it may negatively impact performance.
- AFL:
      Added StaticVarCompareExchange function. Provides atomic interlocked compare/exchange
      functionality
 
 Parameters
 "
      varname"
 Specifies the name of the destination static variable. Static variable
      if exists must be scalar numeric type. If static variable is not initialized,
      the function assumes that it has value of zero.
 exchange
 Specifies the exchange value. Scalar numeric.
 Comperand
 Specifies the value to compare to the destination static variable. Scalar
      numeric.
 Return Values
 The return value is the initial value of the destination static variable.
      If variable did not exist, it returns zero.The StaticVarCompareExchange function performs an atomic comparison
        of the "varname" static variable value with the Comperand value.
        If the static variable value is equal to the Comperand value, the Exchange
        value is stored in the static variable. Otherwise, no operation is performed. The function StaticVarCompareExchange provides a simple mechanism for
        synchronizing access to static variables that are shared by multiple
        threads. The following examples show how 
        to implement semaphore and critical section in AFL using StaticVarCompareExchange
        function:         // EXAMPLE 1 : Simple semaphore (no waiting) 
 if( StaticVarCompareExchange( "semaphore", 1, 0 )
        == 0 ) //
        obtain semaphore
 {
 // protected section here
 // Here you have exclusive
        access (no other threads that check for semaphore will enter simultaneously)
 /////////////////////////
 StaticVarSet("semaphore", 0 ); //
        reset semaphore
 }
 else
 {
 _TRACE("Can
        not obtain semaphore");
 }
 
 ///////////////
 // EXAMPLE 2 HOW TO IMPLEMENT CRITICAL SECTION
        IN AFL
 ///////////////
 
 function _TryEnterCS(
        secname )
 {
 global _cursec;
 _cursec= "";
 
 // try obtaining semaphore for
        1000 ms
 for(
        i = 0; i < 1000;
        i++ )
 if(
StaticVarCompareExchange( secname, 1, 0 )
== 0 )
 {
 _cursec = secname;
 break;
 }
 else ThreadSleep( 1 ); //sleep
one millisecond
 
 return _cursec
!= "";
 }
 
 // call it ONLY when _TryEnterCS returned TRUE !
 function _LeaveCS()
 {
 global _cursec;
 if(
_cursec != "" )
 {
 StaticVarSet(
_cursec, 0 );
 _cursec = "";
 }
 }
 
 function TimeConsumingWork()
 {
 // WARNING: the Percentile is CPU
hungry as it involves lots of sorting, the loop below may take > 1 second
to complete
 for(
i = 0; i< 10;
i++ ) Percentile( C, 100, 10 );
 }
 
 //_TRACE("Without CS Begin " + GetChartID() );
 //TimeConsumingWork(); // some time consuming calculation
 //_TRACE("Without CS End" + GetChartID() );
 
 // Example usage (critical section)
 if( _TryEnterCS( "mysemaphore" )
)
 {
 // you are inside critical section now
 _TRACE("Begin
CS " + GetChartID()
);
 TimeConsumingWork(); // some time consuming calculation
 _TRACE("End
CS " + GetChartID()
);
 _LeaveCS();
 }
 else
 {
 _TRACE("Unable
to enter CS");
 }
 
 
CHANGES FOR VERSION 5.49.2 (as compared to 5.49.1)
  - New Analysis: added Optimize->3D Optimization chart menu
- New Analysis:
  buttons for Portfolio Equity/Individual Equity charts added
- New Analysis:
    Info Bar added (that duplicates some of the info that normally appears on
  the Info Tab). It can be turned on using Settings->Info Bar
- New Analysis:
    Report generation is now OFF by default when running optimization/walk forward
  as in old AA. This gives about 0.9 sec gain per step.
- New Analysis: Single-symbol
    optimization made faster by caching already compressed quote array on subsequent
  steps
- New Analysis: the check for Status("StockNum") was sensitive
    to blanks between parenthesis, function name and string parameter. Now it
    is
    made insensitive
  to blanks.
- New Analysis: when "Range" was "n last bars" or "n
    last days", Status("rangefromdate") gave date of preceding
  bar. Fixed.
- UI: "Performance" tooltip title was not always updated
  on time. Fixed.
- UI: "Wait for plugin" window displays progress bar
    with "marquee" style
    instead of circle of dots
 
CHANGES FOR VERSION 5.49.1 (as compared to 5.49.0)
  - New Analysis: Testing on unaligned data sometimes took longer than expected
    because of the work necessary to bring signals in order. Now a smart method
    avoids most of the memory transfers and can give 10x speedup on backtesting
  very long unaligned intraday data.
- New Analysis: "Backtest started", "Exploration started" text
    in the info tab appeared twice per run (instead of once). Fixed
- New Analysis:
  Backtest report did not include formula code. Fixed.
- New Analysis: Fixed crash
    that could occur when running analysis with Range set to "N recent bars" and
  N was exceeding number of quotes. 
- New Analysis: Float/Normal/Close popup
    menu RMB menu was active everywhere in floating window instead of only caption
  area. Fixed.
- New Analysis: Implement single-thread start when Status("StockNum")
    is detected in the code. Other threads are started when first symbol processing
  is completed.
- New Analysis: Send to Analysis did not update formula combo
      box properly in certain scenarios: when formula X was selected, then formula
      Y, then formula
  X again. Fixed.
- Old AA: status bar displays true timing
      for fair comparisons between old AA and new Analysis. Watching progress
    bar numbers was misleading
          as it
          closed before all processing was truly complete, so it looked like
    old AA completed
  sooner than it really did
- UI: menu item for Old Automatic Analysis restored
      as apparently some users got lost. Also attempt to run old Automatic analysis
      displays
            an information
            about new Analysis window
 
CHANGES FOR VERSION 5.49.0 (as compared to 5.48.0)
- New
    Analysis: when floating pane is made normal from/to dates were reset to today.
  Fixed.
- New Analysis: when Apply To: Filter is defined so NO symbol matches
    the criteria, appropriate message is displayed when trying to run Analysis
    and action is
  terminated instead of displaying progress bar forever
- New Analysis: when analysis
    window is "floating" double click/show
    arrows/sync affects active MDI chart just like old AA did, as opposed to
  last one (when analysis is not floating)
- New Analysis: Optimization parameter
  setup stage uses now not more than 100 bars. This reduces setup time.
- New
    Analysis: implemented import / export, File menu now has Import HTML and
  Export HTML/CSV commands
- New Analysis: Implemented "Wait for backfill" option.
    This slows down analysis sequence so AmiBroker waits for external RT data
    source to
  deliver backfill data
 When "wait for backfill" option is turned on, AmiBroker checks if
  data for given symbol are complete, if not, it sends request to external source
  to backfill the data and waits 1 second.
 After one second, it checks again, it data are complete, if not, it waits another
  1 second, and so on. Once data are complete given symbol is used for formula
  execution.
- New Analysis: Custom backtester uses "last backtest
    settings" when
  calling GetStatus() instead of old AA settings
- New Analysis: auto-repeat interval
    edit field did not allow to enter values if moved to main toolbar via customization.
  Fixed.
- Formula Editor Analysis toolbar button now operates on New Analysis
  window
- Default for timestamping of intraday compression changed to "Show
  START time of interval"
- Charts: AFL error message color is now definable
  in Tools->Preferences, "Color" tab
- Charts: Tooltips automatically
      display also OHL prices (in addition to close) when Plot style is set to
  candlestick, bar or when PlotOHLC was used
- UI: Adjusted item Y offset for owner
      drawn listviews for consitent look with old layout of system listviews
  in Windows XP and earlier OSes
- UI: Account, Analysis and Web research windows
  don't use client edge/border anymore - gives slicker / less crowded look
- UI: when focus is switched to floating document window, the application
    menu is switched to proper context
- UI: When File->Close was used on floating pane, document was closed
    but docking pane was not. Fixed.
- UI: The toolbar button and menu option to launch old Automatic Analysis
    window are now hidden (can be brought back by using Tools->Customize),
    old AA can also be launched from new Analysis via Analysis->Old Analysis
    menu
- UI: New menu options and toolbar button to launch new analysis window
- UI: Moved all menu items controlling visibility of docking windows to "Window" menu
- UI: floating state of windows can now be turned on/off using right-click
    menu over tab / floating window caption
- UI: File->Save (when currently selected window is a chart) command now
    saves Chart template. To save database use "Save database" instead.
- UI: Defaults for data window are changed, so extra OHL display is turned
    off by default as currently PlotOHLC displays all 4 prices in the tooltip
    and data window already
- UI: Data window scroll bars are hidden and do not flicker when updating
- UI: "Save All" toolbar button removed, "Save database" button
    added to replace it
- Web Research: turned on "silent" mode - should prevent error
  message boxes displayed by IE engine.
- QuoteEngine: Range bars algorithm improved significantly
- Quote array uses 20480 bytes (512 quotes) allocation chunk size (exactly
    5x4KB page) for better alignment with Windows virtual memory pages
 
CHANGES FOR VERSION 5.48.0 (as compared to 5.47.0)
  - New Analysis: custom metrics columns were invisible in backtest/optimizations.
  Fixed. (#91031)
- New Analysis: backtest did not display proper column names
    when Report mode was different than trade list. Fixed. Also added support
    for changing report
  mode via SetOption().
- New Analysis: Auto-repeat Scan/Explore implemented (aka. "Run
    every" in
  old AA) (use drop down menu next to "Settings" button)
- New Analysis:
  Showing arrows by double click implemented
- New Analysis: Sync chart on select
  option implemented (use drop down menu next to "Settings" button)
- Fixed
    window activation issue after RMB click in chart window when non-chart floating
  windows are active
- New Analysis: Cancelling walk-forward did not restore date
  range and settings and didn't reset internal step counter. Fixed.
- New Analysis:
  Formula path disappeared when window was made floating. Fixed.
- New Analysis:
    in 5.47 non-exhaustive optimizers sometimes stopped after first step in walk-forward.
  Fixed.
- Charting: scroll bar zoom function remains active even at extreme zoom
  in levels
- New Analysis: Fixed problem with opt steps warning dialog appearing
  sometimes in the out-of-sample tests in walk forward sequence
- New Analysis:
    Signal heaps are separated now, allowing to run concurrent backtest/optimizations
  in many analysis windows
- New Analysis: removed unnecessary refreshes of symbol
  list during optimizations that caused slowdowns when user had large database
- New
    Analysis: The size of control fields is properly adjusted with regards to
  DPI
- New Analysis: Status("StockNum") was always zero in 5.47 and
  earlier. Now it is set properly.
 Caveat: be careful when you run codes that use Status("StockNum")==0
  for special processing in multithreading mode.
 Other threads with "StockNum" = 1, 2, 3,... will run simultaneously!
  If you store static variables in step 0 these variables may be empty if you
  access them from other parallel running threads.
- Fixed Error 53 message that was giving an
    error when proper \" (quotation
    mark espace sequence) was used
 
CHANGES FOR VERSION 5.47.0 (as compared to 5.46.0)
  - New Analysis: last used ApplyTo/Range/From/to dates/filters and other settings
  are saved when Analysis window is closed
- Fix to "slow response" problems
  some users reported when switching symbols
- Fibonacci retracement- modifying
  Z-order affected only control trendline, not all lines as it should. Fixed.
- New
    Analysis: implemented Walk-Forward testing (use drop arrow next to Optimization
  button)
- AFL engine: new error 53: incorrect \ espace sequence. Error is issued
  when user forgets that single slash must be written as \\
- Default title for
    new analysis window is "AnalysisX" (instead of "Unnamed")
  where X is consecutive number 1, 2..
- attempt to use Say() on
      computer without sound card or without driver installed does not result
    in throwing exception/crash report, but it is rather silently
      ignored
 
CHANGES FOR VERSION 5.46.0 (as compared to 5.45.0)
- New Analysis: Exhaustive multi-threaded optimization implemented
- New Analysis: Smart (non-exhaustive) multi-threaded
        optimization implemented
    in a way compatible with existing optimizer plugins
 
 Note however that due to the fact that most non-exhaustive optimization plugins
    are not re-entrant, AmiBroker prevents from running more than one non-exhaustive
    multi-threaded optimization at a time.
    You can however, run many exhaustive optimizations in parallel, as they don't
    require external plugins.
 
- Slight modification to the way how compressed bar charts are drawn (so
    bars with H==L are better visible)
 
CHANGES FOR VERSION 5.45.0 (as compared to 5.44.1)
  - 64-bit version compiled with new version of C runtime (Microsoft security
  update)
- Fixed date/time column sorting in virtual list views when regional
  date format was different than yyyy-MM-dd
- AFL: ClipboardSet() returns True
    (1) when clipboard has been successfully set. Sometimes clipboard is locked
    by another applications and then write
    can fail
  (ClipboardSet() will return zero/False then)
- New Analysis: Changed alignment
  of Date/Time column to left in backtest result list.
- Most AFL engine setup
    moved to worker threads. Result - smaller UI thread load in MT charts (better
    scalability) and much faster (upto 2x) explorations/scans
  in New Analysis window
- New Analysis: added "Info" tab that provides
    some summary information about analysis (number of rows, timings, backtest
    summary) - contents can be
  copied using Ctrl+C / Edit->Copy
 
 NOTE:
 End users should only look at "Completed in... sec" line that shows
  actual run time of the analysis (scan/exploration/backtest).The times shown in "timings" row are for Amibroker.com internal
    use. In development/testing they help us tweak the performance of various
    parts of analysis engine. The detailed timings do not sum up to actual run
    time. No further infomation is available at the moment. The "timings" row
    is subject to change/removal in the future versions. If you have problems/questions with the performance of new Analysis window
    please copy (Ctrl+C) the contents of Info tab and send to support.
 
 
- New Analysis: first-phase backtest signal
      processing and ranking moved to non-UI threads, enabling better parallelism,
      results in better backtest performance
      (upto 2x in with trivial codes)
 
CHANGES FOR VERSION 5.44.0 (as compared to 5.43.1)
  - New Analysis: fixed AddToComposite()
- New Analysis: Interval() function was
  working incorrectly in new analysis window. Fixed.
- New Analysis: Backtest
    ~~~EQUITY symbol did not have "use only local
  database" set in 5.43.1. Fixed.
- New Analysis: Backtest performance improved
      by removing some unnecessary list view refreshes (now it should never be
      slower than old AA even with
      simplest formulas)
 
CHANGES FOR VERSION 5.43.1 (as compared to 5.43.0)
  - When range different than "All quotes" was selected,  backtest in
      new Analysis window could produce incorrect results in 5.43.0. Fixed.
CHANGES FOR VERSION 5.43.0 (as compared to 5.42.0)
  - New Analysis Window: multi-threaded Backtest feature implemented (experimental)
 
 Note that only first phase of backtest is multithreaded (each symbol in separate
    thread). 2nd phase (custom backtest) is executed in main thread as there
    is only one symbol to work on (i.e. equity) and it needs to talk with OLE
    which is single threaded and GUI.
 
- Load/Unload
    buttons removed from Plugins dialog. This was developer-only feature and
    it was abused by ordinary people who were unloading plugins that were
      actually in -use (such as data plugins when being connected to given data
  source)
- ListViews: the last line (partially shown) in RT quote window was
  not easily selectable. Fixed
- New Analysis window: Implemented Parameters dialog
- AFL: GetCursorMouseButtons()
    sometimes missed clicks when multithreading was on and formula took ages
  to execute. Now it is now 100% reliable.
- Auto-selection of proper layer based
  on selected viewing interval
 NOTE: This feature can be turned off by click with RIGHT mouse button over
  layers window and UNCHECKING "Auto-select layer"
 
- IRA accounts support - implemented Settlement
    delay in backtester, via SetOption("SettlementDelay",
  x )
 
 "SettlementDelay" option describes the number of days (not bars)
  it takes for sale proceeds to settle and be available for opening new positions.
 SetOption("SettlementDelay", 3 ); // this will cause that proceeds
  from sale are only available for trading on 3rd day after sale
 For detailed tracking
 "
  Detailed log" report option now shows available and unsettled funds for
  T+1, T+2 and so onNote: when using this option it is recommended to use backtestRegularRaw
    instead of backtestRegular, otherwise some trades may not be entered
 because funds are not settled immediately and you need to be able to enter
    not on first but subsequent buy signals and that is exactly what backtestRegularRaw
    offers.
 Note2: old backtester (Equity() function) ignores settlement delay  
- Zoom in/out toolbar buttons zoom in finer steps (+/-10%)
- Analysis ListView,
    RMB menu new option: "Add Rank column" - adds
    a column with ordinal rankings based on current sort or just row number column
  when list is not sorted
- New feature: Adding new chart/research/account/analysis
  via (+) tab
- New Analysis window: Implemented SetSortColumns
- New Analysis window: Implemented
      AddSummaryRows
 
CHANGES FOR VERSION 5.42.0 (as compared to 5.41.0)
  - Implemented right click menu in new Analysis windows (Add symbols to watchlist/Show
  arrows functionality)
- Zoom in/out toolbar buttons now have auto-repeat feature
- In 5.41.0 Ctrl+C from
  list view copied text without tabs (column separators). Fixed
- In 5.41.0 did not
    refresh progress dialog optimization status list. Fixed. (owner draw list
  view initial size is retrieved in PreSubclass now)
- In 5.41.0 did not display
    Time&Sales in reverse order (newest on top). Fixed.
 
CHANGES FOR VERSION 5.41.0 (as compared to 5.40.3)
  - 
New Analysis window (File->New->Analysis) - featuring multithreaded
  Scan and Exploration
 Performance note:
 to fully benefit from multithreading it is best to use AmiBroker local NATIVE
  database (not external)
 as it is the only database that can deliver data quickly enough.Tests show that on AmiBroker native databases scans and explorations are
    100% scalable to multiple cores
 - i.e. for example would run upto 8 times faster on 8 CPU/core machine.
 
 IMPORTANT: This window is work-in-progress. Multithreaded Backtest and Optimization
    features will be added later.
 
- AFL: AddColumn - added mini bar charts to explorations
 Exploration now features ability to create mini bar charts in individual cells.AddColumn has new parameter 'barchart' AddColumn( ARRAY, "Caption", format = 1.2, fgcolor = colorDefault,
  bkcolor = colorDefault, width = -1, barchart = null ) 'barchart' parameter accepts values from 0...100 represening percentage width
  of bar chart displayed in a cell
 the in-cell bar chart is drawn with bkcolor (background color).
 Example usage: Filter=1;
 AddColumn( Close, "Close" );
 rank = PercentRank( Close, 100 );
 Color = ColorHSB( rank * 64/100, 255, 255 );
 AddColumn( rank, "100-day percent rank", 1.2, colorDefault, Color,
  -1, rank );
 Note that although this example uses same value for numeric display and chart
  bar width, it does NOT need
 to be the same, i.e. numerical value of the cell is independent from bar chart.
 
 
- Totally rewritten listview with very efficient owner draw code speeds up
      list view scrolling/resizing/repainting more than 10 times. Native system
    ListView control is terribly slow on Windows XP/Vista/7 (surprisingly it
    was many
  times faster in Win9x!) 
- AFL: Percentile()
  does a param check for range > 0 now
- Mini-chart in RT Quote window - Mini chart shows where LAST price is within
  LOW-HIGH range.
- Errors and
  warnings are now displayed in red color in the indicator pane
- During actual
    GDI chart rendering AmiBroker measures time and if it exceeds 500ms timeout
  it stops rendering with Warning 901.
 This check is required because GDI rendering occurs in GUI thread and if GUI
  thread does not process messages for half second Windows will think that application
  is "not responding".
 This prevents making application stuck with some overly complex, possibly incorrect
  formulas that call hundreds of Plot()s
 
- Warning 502: Calling Plot()/PlotOHLC
  over 500 times is displayed in indicator in runtime to prevent abuse
- All list
    views, pressing Ctrl and NumPad'+' automatically adjusts column widths to
  content
- if data are missing in the in-memory cache, Foreign()
  calls from non-GUI threads use synchronous retrieval method for reliability.
 This provides reliable results in AA but may slow down the multi-threaded operations
  if cache size is too small and user uses more Foreign() calls than in-memory
  cache size.
 IMPORTANT:
 For optimum performance in-memory cache setting (Tools->Preferences->Data)
  should be GREATER than number of Foreign() calls in any single formula used.
 Values lower than that cause lots of disk activity and serialization of all
  Foreign calls that means that additional threads must wait for data retrieval
  to complete.
 
- Old
      and new Analysis window: outputting millions of rows to listview is much
  faster now
- All list views - Ctrl+A (Select All) made much faster
 
 
If you experience any problem with this beta version please send detailed
  description  of the problem (especially the steps needed to reproduce it) to
  support at amibroker.com