AmiBroker 6.04.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 (6.04.0) of AmiBroker has just been released.

32-bit version:
(2 363 888 bytes)

64-bit version:
(10 111 984 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 6.00 or higher from

This version contains a brand new AFL visual debugger. Detailed description of how to use the debugger is provided here:

CHANGES FOR VERSION 6.04.0 (as compared to 6.03.0)

  1. AFL Editor & Watch Window: the contents of matrices is now displayed in value tooltips and watch window
  2. Debugger state (watch variables/expressions and breakpoint locations) is now saved between AFL editor sessions (formula-wise so each formula has its own “debug state”). The data are saved in XML file with .dbg extension
  3. Debugger: MDI mode implemented. In 6.0.3 AFL Editor did not support ‘MDI mode’ (even crashed), now this functionality is back. Also Watch window is available in MDI mode and debugger is working in MDI mode too.
  4. Preferences: added new page with Debugger settings.
  5. Preferences: ‘Editor’ tab moved so ‘AFL’, ‘Editor’, and ‘Debugger’ tabs are next to each other, also ‘Alerts’ and ‘Currencies’ tabs moved before ‘Miscellaneous’
  6. Watch window: a new tab “Arrays” shows exploration-like array output for detailed examination of array contents (first 20 arrays from watch window are reported)
  7. Watch window: implemented array item change highlighting and auto-scrolling so first changed item is always visible in the ‘Arrays’ tab
  8. Watch window: implemented expression evaluator, so you can not only display variables, but also expressions involving variables such as (high+low)/2 or individual array elements such as myvariable[ i ] where i is dynamic loop counter
  9. Watch window: implemented value change highlighting: changed values are displayed with light yellow background, additionally numeric (scalar) values are displayed in green when they increased or red if they are decreased
  10. Watch window: pressing DELETE key while editing variable name caused deletion of variable from watch. Fixed.
  11. Watch window: variables can now be drag-dropped from AFL editor window

CHANGES FOR VERSION 6.03.0 (as compared to 6.02.0)

  1. AFL Editor: Implemented fully integrated Visual AFL Debugger. Note: this is work in progress and more things are to come
  2. Debugger: Implemented breakpoints (including those set before compilation as well as adding/removing breakpoints during debugging)
  3. Debugger: Implemented single-stepping Step Into, Step Over
  4. Debugger: Implemented variable value inspection tooltips (hover mouse over variable to see its value)
  5. Debugger: Implemented Watch window with variable value display automatically updating when debugger single-steps or reaches breakpoint
  6. AFL: Sum(array,N) outputs NULL values for indices starting from 0 upto index N-1 instead of N
    Renaming of PersistVars.temp to PersistVars.bin failed on some versions of OS. Fixed.

  7. RT Quote window: drag-drop list view shows small arrow marker for the drop point now.
  8. RT Quote window: when moving items using drag-drop, moved items image was flickering. Fixed
  9. UI: Chart zoom via Ctrl+mouse wheel now works so it attempts to current mouse position as a “center” point of zoom when possible. (Previously it always worked so right border was the ‘center’).
  10. When intraday data were used timestamp of 00:00:00 was not displayed in data tooltip (empty field was shown). Fixed.

CHANGES FOR VERSION 6.02.0 (as compared to 6.01.0)

  1. AFL Editor: Implemented Line comment/uncomment feature (Edit->Line Comment, Ctrl+Q) to automatically add/remove // line comments from single or multiple lines
  2. AFL: If any matrix cell has Null value then matrix product operator @ produces Null respective row/column of the result matrix.
  3. AFL: if user called (a) GetPerfomanceCounter( 1 ) then (b) GetPerformanceCounter( 0 ) then subsequent call to GetPerformanceCounter(0) returned cumulated time not from call (a) but from system boot. Fixed.
  4. AFL: matrix identifier can now be used in if-else statement. Such condition checks whenever very first element of matrix [0][0] is NOT NULL. This is useful for checking output of functions like MxInverse/MxSolve that would return NULL in all cells if matrix is singular
  5. AFL: MxSolve/MxInverse now return a matrix filled with Nulls as a result if source matrix can not be inverted and produce warning level 2 instead of an error.
  6. AFL: On Windows Vista and higher static variables use slim read-write (SRW) lock instead of critical section. This gives 5% performance increase in multithreading scenarios.
  7. AFL: StaticVarAdd( “name”, value, keepAll = True, persistent = False ) – an atomic addition (interlocked read-add-write) operation for static variables
  8. AFL: Study() returned NULL array when line’s start date was greater than end date. Fixed (now it works for lines drawn from right to left too).
  9. Docs: Example polynomial fit formula shows how to gracefully handle singular matrix and overflow/not-a-numbers in polynomial calcs
  10. Persistent static variables are now saved to PersistVars.temp and once write is successful the file is renamed to PersistVars.bin. This is to prevent data loss when writing very large sets of persistent variables.
  11. When more than one error is detected in single line of the formula then the first error message is displayed instead of last one in chart/commentary/analysis.

CHANGES FOR VERSION 6.01.0 (as compared to 6.00.2)

  1. AFL: MxDet( mx, method = 0 ) – calculates determinant of the matrix
  2. AFL: MxFromString() – creates a new matrix out of string in Mathematica/Wolfram list-style: “{ { 1, 2, 3 }, { 4, 5, 6 } }” or Matlab/Maple style “[ [ 1, 2, 3 ], [ 4, 5, 6 ] ]” or GNU Octave comma-semicolon style [ 1, 2, 3; 4, 5, 6 ]
  3. AFL: MxGetBlock( matrix, startrow, endrow, startcol, endcol, asArray = False )
  4. AFL: MxInverse( mx ) – calculates inverse of the matrix
  5. AFL: MxSetBlock( matrix, startrow, endrow, startcol, endcol, values = 0 )
  6. AFL: MxSolve( A, B ) – solves linear equation system A@X = B
  7. AFL: MxSort( mx, dim = -1, ascening = True ) – sorts the matrix
  8. AFL: MxSortRows( mx, ascending = True, col1 = 0, col2 = -1, col3 = -1 )
  9. AFL: MxToString – creates string out of matrix variable in the Wolfram list style like this (for 3×3 matrix): { { x00, x01, x02 }, { x10, x11, x12 }, { x20, x21, x22 } }


  1. None


  1. Debugger: output window (for printf output)


To use debugger, open your formula in the Formula Editor, place few breakpoints (red circle/F9 key), add some variable names to watch (open watch window using Window->Watch menu, add variable names by double clicking on the end of the list). Then start debugging (Debug->Go), once breakpoint is hit, you can hover the mouse over the variables to see their value, single step (F10/F11) and examine values in the watch window.

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

Detailed description of the debugger is available here:

Comments are closed.