AmiBroker 5.89.0 BETA released

Stability: Rank 3 – Regular BETA, pretty stable, should work fine in most environments

This is a BETA version. Make a backup first

A new beta version (5.89.0) of AmiBroker has just been released.

ATTENTION: This version is free only for users who registered after October 31, 2012. See Upgrade Policy and Pricing section below for more details.

32-bit version:
(2 371 080 bytes)

64-bit version:
(9 756 216 bytes)

If you can not log in into members’ area please get your new password by filling the form at:

IMPORTANT: Unauthorized copying and/or distribution of materials found on members’ only page is STRICTLY PROHIBITED and will result in IMMEDIATE termination of license.

Note that this version can only be installed onto previous full installation of version 5.80 or higher from

CHANGES FOR VERSION 5.89.0 (as compared to 5.88.1)

  1. AFL: Performance of variable-length Sum() improved significantly in some common scenarios. Accurracy improved too.
  2. AFL: Sort displayed an error message if first == last even though this case is perfectly fine. Fixed (no error and no sorting of single-element array)
  3. AFL: Sort() with indexmode = True could cause immediate app exit in 64-bit version only. Fixed.
  4. AFL: when negative ‘range’ was passed to variable-length version of Sum() an application exited immediately. Fixed.
  5. Charts: Left/right extended Trend lines and Rays now use user-definable Extension Factor (new field in Study properties) instead of always infinite extent. Ext. Factor equal to ZERO means INFINITE, other values 0.1 … 26 define how far to the left/right line is extended
  6. Charts: max zoom achievable via View->Zoom Out is increased to 5 million bars, also Pref/Charting/Default zoom limit set to 5 million. Note that it is still possible to zoom to “all” quotes regardless of number of bars using View->Zoom->All
  7. Debug: Crash recovery window now requires to enter steps required to reproduce problem. Without knowing what you did before it is very difficult to find out the reason and fix the problem.
  8. Debug: Turned off remove frame pointers optimization in 32-bit builds for better stack traces
  9. New Analysis: Exploration: default column width is increased automatically to fit %6.2f number when there is a free space available in the right margin
  10. New Analysis: Optimization: when user-selected “Optimization target” can not be found in the backtest results an error 711 is displayed and optimization process is stopped
  11. New Analysis: trying to bring up “Parameters” window when currently selected symbol had no quotes resulted in access violation. Fixed.
  12. New Analysis: Walk forward tab – when you click on result list Begin/End column headers – these columns are now sorted by date instead of alphabetically.

CHANGES FOR VERSION 5.88.1 (as compared to 5.87.0)

  1. 5.88.1 quick fix addresses problem with QuickAFL/Backtest using earlier dates than selected.
  2. AFL: new function NullCount( array, mode = 1 ) – counts the number of consecutive nulls at the beginning of the array (mode = 1), at the end of the array (mode=2), from both ends (mode=3) and all nulls in the array (including non-consecutive) (mode=0)
  3. AFL: Sort() now has additional “indexmode”. If indexmode is turned on, Sort() function returns array of indexes to the sorted values instead of values themselves. So if first returned value is 2923 it means that input array[ 2923 ] is the smallest element
  4. Charts: line drawings now have user definable line width in pixels (new “Line width” field in Study Properties dialog). In addition to that “Thick line” box makes line twice as wide (so actual width of thick line is 2 * lineWidth instead of adding 1 pixel to width)
  5. Charts: when formula causes an exception and Preferences are set NOT to catch exceptions within indicator, then further execution of formula that caused exception is blocked until Bug recovery window is dismissed (to prevent stacking multiple bug recovery windows)
  6. Debug: 64-bit version now implements invalid parameter handler for catching wrong C runtime calls
  7. Debug: 64-bit version: Crash recovery window now includes call stack to allow better debugging of 64-bit app (previously only available in 32-bit)
  8. Debug: when AFL engine can not allocate memory for variable a proper message is displayed instead of plain crash
  9. Debug: when program can not allocate memory for static variable you will get actual message “Out of memory during creation of static variable”);
  10. New Analysis: program checks From-To dates and if From > To it displays error 710 instead of starting analysis
  11. New Analysis: QuickAFL finally implemented. To turn it on go to Settings and check “Use QuickAFL” box. Gives very significant speed-ups (>2x) when range is smaller than “All quotes”
  12. Prefs/Backtest: Number of user-definable currencies in Tools->Preferences increased from 20 to 100.
  13. Prefs/Charting: “Default zoom (number of bars in a chart)” can now be greater than 32767 (previous limit). Now it can be in range from 10 to 10 000 000.
  14. UI: when free virtual memory drops below 200 MB a popup is displayed in the status area

CHANGES FOR VERSION 5.87.0 (as compared to 5.86.0)

  1. AFL Editor: in-line error reporting use bold font to highlight identifiers in the error messages for better readability
  2. AFL: GetOption can now read BuyDelay/SellDelay/ShortDelay/CoverDelay which makes it easier to write like this: Ref( Buy, -GetOption(“BuyDelay” );
  3. AFL: new function: Reverse( array, first = 0, last = -1 ) – returns a new array with the order of the elements in specified range reversed
  4. AFL: new function: Sort( array, first = 0, last = -1 ) – sort a numerical array in ascending order starting from ‘first’ element ending at ‘last’ element. If ‘last’ is not specified or negative then AmiBroker will use BarCount – 1
  5. AFL: new function: StrSort( “item,list,to,be,sorted”, caseSensitive = True, separator = ‘,’ ) – perform sorting of comma-separated string (case sensitive/insensitive, separator definable!)
  6. AFL: new function: StrTrim( “string”, “targets”, side = 3 ) – a function to trim extra characters (specified in “targets”) from either left (1), right(2) or both(3) sides of the string. If “targets” parameter is an empty string, then function trims whitespaces (i.e. space, tab, newline)
  7. AFL: StrExtract has now extra parameter allowing to specify separator character, example StrExtract(“This;Is;Semicolon;Separated”, 3, ‘;’ );
  8. AFL: StrMid( “string”, start, count ) now allows to skip “count” parameter. If you skip count, then a substring starting from ‘start’ to the end of the string will be returned.
  9. AFL/Charts: added ability to control number of decimals in chart value labes via GraphLabelDecimals variable (example, adding GraphLabelDecimals = 2; to the formula would give you value lables with 2 decimal places
  10. Removed old-style Graph3*, Graph4*, Graph5*, Graph6*, Column3, 4, 5, 6 identifiers from auto-complete lists (only 0..2 left)
  11. Report Explorer: Edit->Copy now copies selection only (not entire table)

CHANGES FOR VERSION 5.86.0 (as compared to 5.85.0)

  1. AFL Editor: repeat replace + wrap around restarts only once and if no further matches/replaces are found it displays “no more matching texts” instead of restarting again.
  2. AFL Editor: when user closed Find&Replace dialog and then pressed F3 (find next) a couple of times to pass thru the end of document a crash could occur. Fixed.
  3. Analysis: HTML report generator – settings page used tags to close some tags which is formally incorrect, even if it works. Fixed.
  4. Charts: Extreme descenders in text could be truncated (by one pixel) in multiple line Title strings. Fixed.
  5. HTMLView – Backtest report viewer – added Edit/Copy, Edit/Select All and Edit/Copy TABLE. The last command transforms HTML tables into CSV format and copies it into clipboard so tables can be pasted easily to Excel. Also it divides Entry/Exit columns into separate Entry/exit date/price columns
  6. Parameter window: mouse wheel scroll is now supported
  7. Realtime Quote window: added Bid/Ask trend – a graphical indicator showing the direction of 10 most recent changes in bid/ask prices
  8. Realtime Quote window: Sorting by Full name column did no work. Fixed
  9. Report Explorer: Column layout (order and sizes) is now saved and restored between runs
  10. Report Explorer: Loading and refresh performance significantly improved (5x) using owner draw/ virtual mode
  11. Report Explorer: Multi-column sorting implemented
  12. Report Explorer: Numeric columns are now right aligned for better readability
  13. Report Explorer: visuals significantly improved (list uses modern style, grid lines, immediate column resizing, double buffering for no flicker, thousand separators, negative values are displayed in dark red, HighDPI aware, changed toolbar)
  14. Snippet properties window now includes formula field for quick reference (no highlighting here – it is by design)

CHANGES FOR VERSION 5.85.0 (as compared to 5.84.0)

  1. AFL Editor: backtest* mode constants added to auto-complete list
  2. AFL Editor: now Code snippets are available in auto complete list (type @ plus first letter of snippet key trigger), and even without auto complete activated @keytrigger is replaced by snippet text
  3. AFL: added support for single-character literals, so you don’t need to use Asc() funciton.
  4. AFL: adding/removing symbols to/from watch list via CategoryAddSymbol/CategoryRemoveSymbol wasn’t thread safe. Fixed.
  5. AFL: AmiBroker now checks number passed to SetOption(“MaxOpenPosition”, x ) and SetOption(“WorstRankHeld”,x ) and trims down the request to number of symbols in database to prevent running out of memory when user specifies some absurdly high values,
  6. AFL: new function SendEmail( “subject”, “message”, ShowUI = False )
  7. AFL: SetOption(“MarginRequirement”, x ) checks if x is in the range 1..100 and displays an error if not.
  8. Backtest: backtestRegular now keeps detailed info on sequencing of signals within single bar to avoid problems with premature exit of just opened trade when same bar exits were allowed and previous trade was not open due to insuffcient funds leaving an unmatched exit signal.
  9. Code Snippets: added “Properties” button to the toolbar that allows editing name/description/key trigger without re-inserting snippet
  10. Code Snippets: New snippet/Properties dialog is now resizable
  11. UI: changed cursor shape in all tree views from “hand” to normal arrow
  12. UI: Code snippet window is now also available when AFL editor is in MDI mode (use Window->Code Snippet menu when AFL editor is open)
  13. UI: Interpretation window: Ctrl+C (clipboard copy) did not copy the interpretation text in 5.8x. Fixed.

CHANGES FOR VERSION 5.84.0 (as compared to 5.83.0)

  1. AFL Editor: Idle-time Info tips were positioned incorrectly in 5.83. Fixed.
  2. AFL Editor: Text of inserted snippet is selected so one can easily see what was inserted and delete it if was a mistake.
  3. AFL: added Error 57. Invalid quotation mark (when user uses curly quotation marks instead of straight quotation marks ” to type a string literal)
  4. OLE: Document object has new property Interval (integer, read/write) – selected Interval in seconds (tick/range/volume intervals are represented by negative values)
  5. Report Charts: now it is possible to output HTML instead of graphics in report chart formulas using AFL: EnableTextOutput( 3 ) – HTML output to backtest report
  6. Report Charts: rewritten 3. Profit using HTML embedding features auto-scalable layout (so it enlarges when numbers are bigger), bold summary columns, negative values in red, boundary date changed to last day of year/month
  7. UI: added Code Snippets window – allows inserting/deleting/saving selected parts of the formula as snippets. Also implemented is convenient drag-drop of snippet to the formula edit window
  8. UI: Further display improvements of Parameter window for high-DPI displays (ParamList bullet point is bigger and positioned better, Slider is resized when resizing param window, etc, etc)
  9. UI: On non-standard DPI displays Parameter window could show some visual artifacts when scrolling. Fixed.

CHANGES FOR VERSION 5.83.0 (as compared to 5.82.1)

  1. AFL Editor: Parameter info tip AND auto-complete list can be displayed simultaneously
  2. AFL Editor: parameter info tip does not disappear on pressing Backspace key anymore.
  3. AFL Editor: Parameter info updates highlighted parameter when moving cursor inside function’s param list
  4. AFL Editor: Verify formula run on symbol without any quotes could cause access violation. Fixed (proper error message is displayed).
  5. AFL Editor: when syntax check is performed and errors are detected, the editor is immediately scrolled to first error
  6. AFL engine: brand new custom micro allocator speeds up AFL execution of complex formulas with nested loops upto 3 times.

    // example benchmark showing 3x speedup

    x = Close[ 0 ];
    for( i = 0; i < 100; i++ ) for( k = 0; k < BarCount; k++ ) { x = IIf( x < Close[ k ], x, Close[ k ] ); } printf("Time = %g", GetPerformanceCounter() ); Timings (4000 bars) 5.83 time 146ms, 5.82 time 450ms, 5.80 time 440ms

  7. AFL: Since v5.65 RestorePriceArrays() did nothing when there was no preceding SetForeign/TimeFrameSet. Now restores data if user explicitely overwrote OHLC arrays in the code preceding it.
  8. Analysis: Detailed Log message “Symbol not entered bcause of insufficient funds” improved to display requested position size in units such as shares/% of equity instead of just encoded negative value
  9. Analysis: Minimum value for “Margin Requirement” is now 1 (1%)
  10. Analysis: Table header in the HTML report trade list is now right aligned (to match number alignment) (affects newly generated reports only)
  11. Analysis: fixed HoldMinBars check for scenario 3 with both buy and sell generated on all bars and random scores.
  12. Code snippets: New line \n was truncated from “data export” snippet. Fixed.
  13. Commentary: attempt to display commentary on symbol without any quotes could cause access violation. Fixed.
  14. New Analysis: Less refreshes of Info page provide some extra speed
  15. New Analysis: Watch list 0 was used automatically (without opening WL selection dialog) when new watch list is created between scan and RMB click->Add results. Fixed.
  16. Turned on LowFragmentationHeap in number of places
  17. UI: Parameter window look and feel improved. Item height is increased and slider thumb made wider for easier use on small size/high DPI screens

CHANGES FOR VERSION 5.82.1 (as compared to 5.82.0)

  1. AFL Engine: fixes for stability issues in 5.81.0/5.82.0
  2. Filter dialog: a matching count wasn’t updated on opening the dialog. Fixed.
  3. Bug report window made a little bigger so at least crash address is seen when someone sends screenshot instead of text

CHANGES FOR VERSION 5.82.0 (as compared to 5.81.0)

  1. UI: Interpretation and Commentary windows now support color text (via EncodeColor), bold and italic styles (tags: for bold, for italic)
  2. UI: Notepad, Interpretation and Commentary windows use default GUI font instead of hard-coded Tahoma now
  3. AFL: functionality of PlotGrid() function extended
  4. UI: Filter dialog now displays number of matching symbols in real-time as selections are made
  5. AFL Editor: added 4 new snippets under “Function” category
  6. AFL: In 5.81.0 CategoryGetName returned nothing (void) instead of string type when specified category did not exist. Fixed (empty string is returned now)
  7. AFL engine: in v5.81 access violation could occur when AFL array size was 0. Fixed.
  8. New Analysis: portfolio backtest processing was attempted even if there was no symbols that matched “apply to” filter. Fixed (unnecesary processing is skipped now).
  9. AFL: CCI function speeded up by 50%
  10. Inserting indicator with Param() calls into chart when currently selected symbol had no quotes caused exception. Fixed.

CHANGES FOR VERSION 5.81.0 (as compared to 5.80.3)

  1. AFL Engine: custom memory allocator does not use Microsoft runtime lib for reference tracking anymore. Result – complex formulas with lots of loops and OLE (especially low-level custom backtests) run upto 3 times faster in 32 bit and 4 times faster in 64-bit
  2. AFL Editor: Parameter info tip significantly enhanced – now it re-opens on typing each , (comma) and highlights current parameter to be entered.
  3. UI: Column setup dialog: added Mark All / Toggle All buttons
  4. AFL: GetFormulaPath() function added – returns full formula file path
  5. AFL Editor: Smart reference highlighting implemented (usage: mark a word and all references become highlighted).
  6. AFL Editor: Find/Replace shows a message box when reached the end of the file and offers restarting from the beginning if new “Wrap around” option is turned on.
  7. AFL Engine: code refactoring for reduced size and improved speed
  8. AFL Engine: when value of unsupported type was appended to string a crash could occur. Fixed.
  9. AFL Engine: when IIf was called the memory upsized from scalar to array could get freed twice (wrong). Fixed
  10. AFL: MACD() and Signal() functions made faster (approx 1.5-2x times)
  11. Analysis: Interest is added at the beginning of next bar (instead of end of current bar), to account for overnight rate. This also fixes the problem of ignoring interest in v.> 5.69
  12. UI: fixed yet another place where entering customization changed working dir


  1. None


The upgrade to version 5.89 BETA and subsequent official version 5.90 is FREE for all users who purchased AmiBroker after October 31, 2012.
Users who purchased AmiBroker before October 31, 2012 or on that day would need to buy upgrade if they want to use this newest version ($139 – Standard Edition, $169 – Professional). If you don’t want to pay – you may continue using previous version(s) infinitely. To find out when you have purchased AmiBroker and how long your free upgrade period is, use “Account Information” page in the members area at:

To purchase new license or upgrade please use our ordering page at:

For more details, instructions and examples how to use new features see the 5.89.0 BETA READ ME

Comments are closed.