amibroker

HomeDevLog

AmiBroker 6.42.0 BETA released

Stability: Rank 3 – regular BETA should work fine in most environments

A new BETA version (6.42.0) of AmiBroker is available now.

DOWNLOAD LINKS

32-bit version:
https://www.amibroker.com/members/download.php?AmiBroker6420.exe
(10 414 936 bytes)

64-bit version:
https://www.amibroker.com/members/download.php?AmiBroker6420x64.exe
(11 036 304 bytes)

DOCUMENTATION

DevLog announcement: https://www.amibroker.com/wordpress/devlog/2022/11/27/amibroker-6-42-0-beta-released/

For the details see ReadMe.html and ReleaseNotes.html inside AmiBroker folder.

UPGRADE POLICY

This version is a free upgrade only for users who registered AmiBroker after November 27, 2020 . Users who registered earlier, would need to purchase license upgrade. To find out the version you currently have use Account Information page at https://www.amibroker.com/members/info.php

CHANGES FOR VERSION 6.42.0 (as compared to 6.41.0)

  1. UI: If modal window is displayed (like Filter dialog) and user clicks on blocked parent 3 times in a row, the modal window is repositioned to where mouse cursor is, to bring attention of the user to the modal window that needs to be closed
  2. Scheduler: added "Pause" button to pause execution of scheduled tasks (batches already running will complete normally)
  3. IQFeed: the plugin now has an option to consolidate unbundled ticks (i.e. ticks with same TickID)
  4. IQFeed: the plugin now has "Symbol guide" context menu option
  5. Fixed possible crash when drawing pointer become invalid (now drawings are referred by bound checked index)
  6. AFL: one-shot auto-save of persistent static variables feature is now available via SetOption("StaticVarAutoSave", -1 )
  7. AFL: new field supported by GetOption("BHSymbol") - get Portfolio B&H symbol. Note that this is read-only (can't set it via SetOption)

AmiBroker 6.41.0 BETA released

Stability: Rank 3 – regular BETA should work fine in most environments

A new BETA version (6.41.0) of AmiBroker is available now.

DOWNLOAD LINKS

32-bit version:
https://www.amibroker.com/members/download.php?AmiBroker6410.exe
(10 417 056 bytes)

64-bit version:
https://www.amibroker.com/members/download.php?AmiBroker6410x64.exe
(11 032 344 bytes)

DOCUMENTATION

DevLog announcement: https://www.amibroker.com/devlog/2022/08/05/amibroker-6-41-0-beta-released/

For the details see ReadMe.html and ReleaseNotes.html inside AmiBroker folder.

UPGRADE POLICY

This version is a free upgrade only for users who registered AmiBroker after August 5, 2020 . Users who registered earlier, would need to purchase license upgrade. To find out the version you currently have use Account Information page at https://www.amibroker.com/members/info.php

CHANGES FOR VERSION 6.41.0 (as compared to 6.40.4)

  1. 64-bit version compiled now with new Visual Studio 2022
  2. New Analysis: Exploration now supports "Show current trade arrows" command
  3. QuickGFX: styleDots did not get bigger when width/thickness param is increased. Fixed.
  4. QuickGFX: solid rectangle fill speeded upto 3x on larger areas
  5. AFL Editor: When errors are detected the "Explain" button is added to the caption bar that displays help page with error explanation. Subsequent presses to "Explain" button move to next error message
  6. AFL: added support for Python-style raw strings. Raw strings use letter r before double or single quote and don't perform espace sequence transformations, so you don't need to use \ in paths if you use raw string: r"raw\string\syntax" or r'raw\string\sy
  7. AFL: GfxDrawImage function, if underlying Windows LoadImage fails to load BMP file, the Windows last error code is printed to system debugger (DebugView)
  8. ASCII import: duplicate lines in very large files caused unusual slow down, now duplicate lines are detected and removed early, improving import time in such unusual cases.
  9. Easy alerts now display comment field content in Alert Output window
  10. Report: Parameters in the report are now listed in alphabetically sorted order
  11. UI: a message box is displayed when system returns from Sleep/Hibernation while being connected to RT plugin to make user aware NOT to use sleep while collecting real time data
  12. UI: added "Start Page" that provides basic new user orientation, news and updates and links to open new charts, analysis, formulas, and other windows
  13. UI: custom tools menu (Tools->Customize, "Tools" tab) allows now to run batches via #runbatch command. To run a batch, use #runbatch in "Command" field, and full path to batch (.abb) file in Arguments field
  14. UI: custom tools menu command arguments now support special token {symbol} that gets replaced with currently selected symbol. This is to allow triggering for example AmiQuote downloads for current symbol only
  15. Zoom and tab order stored in layout could be ignored when number of MDI windows was too large. Fixed

AmiBroker 6.39.1 RC released

Stability: Rank 3 - regular BETA should work fine in most environments

This is a BETA version. Make a backup first

A new RC version (6.39.1) of AmiBroker has been released.

32-bit version:
http://www.amibroker.com/members/download.php?AmiBroker6391.exe
(10 316 744 bytes)

64-bit version:
http://www.amibroker.com/members/download.php?AmiBroker6391x64.exe
(10 924 560 bytes)

If you can not log in into members' area please get your new password by filling the form at: http://www.amibroker.com/login.html

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

UPGRADE POLICY
This version is a free upgrade only for users who registered AmiBroker after March 5, 2019. Users who registered earlier, would need to purchase license upgrade. To find out the version you currently have use Account Information page at http://www.amibroker.com/members/info.php

Remember to BACKUP YOUR FILES FIRST !
Note that this version can only be installed onto previous full installation of version 6.30 or higher from http://www.amibroker.com/download.html

FEATURE HIGHLIGHTS 6.39

6.39 provides 30 new features and enhancements

  • AFL editor enhancements
  • new AFL functions
  • support for gzip and deflate compression in Internet functions
  • in-place matrix copy
  • backtester enhancements
  • improved text tool with per-study selectable font size
  • new 8-digit ICB structure
  • plugin interface backward compatibility with changing function signatures
  • improved performance
  • more runtime checks to prevent user errors and other fixes

CHANGES FOR VERSION 6.39.1 (as compared to 6.39.0)

  1. 64-bit uses a bit faster float versions powf and modf instead of double pow/mod for ^ and % operators (non integers)
  2. Analysis/Settings: added 3 checks and warnings to prevent users from entering combination of MinPosValue/MaxPosValue/AllowPosShrinking/RoundLotSize that are likely to prevent all trades from being taken at all
  3. array ^ (exponentation) operator made 50-100x faster in special cases of small INTEGER, scalar exponents of 2, 3, 4 and 5 by using multiplication instead of calls to C runtime powf()
  4. calling GuiSetText from AFL formula caused notifyEditChange notification to be sent. If user formula responded to notification with another GuiSetText this could create loops. Now notifications are silenced if changes come from user code
  5. When one pane had Gui controls and the other pane on another chart sheet was completely blank, then GUI controls from populated tab remained displayed after switching to completely blank sheet. Fixed

CHANGES FOR VERSION 6.39.0 (as compared to 6.38.0)

  1. 64-bit: AmiBroker, AmiQuote, AFL Code Wizard migrated to newest VC++ 2019 for even better performance
  2. AFL Editor: @link commands are executed at mouse up (instead of previous mouse down) to prevent unwanted text selection when message boxes are dismissed
  3. AFL Editor: call tips (parameter information tooltips) now provide extra description about the function and its parameters (as of v6.39 only 20 functions have this extra info)
  4. AFL Editor: debugging session is automatically terminated with appropriate notice when user attempts to edit the code during debugging (this saves mouse clicks that were needed to stop debug session in order to edit)
  5. AFL Editor: previously when no text was selected and Prettify Code was choosen, the message box caused main frame to get focus instead of focus staying in AFL frame. Fixed
  6. AFL Editor: when an runtime error is detected debugging session the message bar shows now number of detected errors (as it did previously during normal "verify"
  7. AFL Editor: when dark mode list views are used watch window default text color was black making it hardly visible, changed to white
  8. AFL/CBT: AmiBroker now displays an error when user passes incorrect bar number to ProcessTradeSignals() instead of silently skipping wrong arguments
  9. AFL: added protection against assigning wrong types to some built-in variables such as *Price arrays. If wrong type is assigned the error 71 Type mismatch in assignment is displayed
  10. AFL: ADX() function vectorized in 64-bit version (2x faster than before)
  11. AFL: backtester crashed when user incorrectly assigned string value to BuyPrice/ShortPrice/CoverPrice arrays. Fixed.
  12. AFL: Error("text", stop=False) function - added extra parameter to stop execution regardless of "stop execution at first error" preference setting
  13. AFL: FindIndex( array, value, start_from = 0, dir = 1 )
  14. AFL: If warning level >= 3, InternetOpenURL() function now displays a warning 507 if OS generated exception when accessing remote resource, the same way as InternetPostRequest
  15. AFL: increased calculated bar requirements for Wilders() function for better conformance with QuickAFL
  16. AFL: Last OS error code is set by Internet* functions regardless of warning level so you can always retrieve it using GetLastOSError()
  17. AFL: MA( C, BarCount ), StDev( C, BarCount ) return non-Null value
  18. AFL: new field added to SetOption/GetOpion function calls "MaxPosValue" (per backtest setting)
  19. AFL: new function InternetSetHeaders( "headers" ) - set custom HTTP headers for subsequent web requests
  20. AFL: new function InternetSetOption( option, value ) - set HTTP option for internet session
  21. AFL: new function MxCopy - for copying rectangular blocks from one matrix to the other (copy portions of one matrix to the other matrix)
  22. AFL: new function: _exit() - that gracefully ends AFL execution at the point of the call
  23. AFL: new function: InternetGetStatusCode function - returns HTTP status code of last InternetOpenURL or InternetPostRequest call
  24. Analysis/Backtest: added "Max. position value" option in the settings allowing to specify maximum dollar value of position. Zero (0) means no maximum. Positions larger will be shinked (if shrinking is enabled) or won't be entered at all (if shrinking is d
  25. Charts/Preferences: added Text Tool font setting independent from Axis font (Preferences->Miscellaneous page)
  26. Charts: Text Box tool supports user-selectable font size now (selectable in Study Properties window)
  27. Database: new 8-digit ICB structure implemented: https://www.ftserussell.com/data/industry-classification-benchmark-icb
  28. Got rid of obsolete "Request data on save" setting that wasn't performing as expected
  29. Plugin interface: added compatibility layer allowing old plugins to safely call functions even when they have modified signature (added new default parameters). When plugin calls function with less than expected number of arguments, missing some of default
  30. When variable was passed to user function by reference, ++ operator inside had no effect on referenced variable (outside of function). Fixed.

CHANGES FOR VERSION 6.38.0 (as compared to 6.35.1)

  1. 64-bit version uses updated VC2017/2019 runtime
  2. 64-bit version could produce "Invalid parameter" exception from CRT after backtesting when symbols under test had forbidden characters in them like "%". Fixed
  3. 64-bit version: address space layout randomization disabled by /DYNAMICBASE:NO linker option to facilite easier crash location finding
  4. AFL: assignment new matrix value to a variable already holding matrix value did not immediately free memory (at the time of assignment). This memory was only freed at the end of the formula. Now it is freed earlier (at assignment) to lower memory usage.
  5. AFL: GetFnData("lastsplitdate") returns empty val instead of zero if last split date is not set
  6. AFL: GfxDrawImage with PNG file could fail if very same file was accessed simultaneously from multiple threads due to "no-sharing" mode that 3rd party XTP lib used. Fixed by using shareDenyWrite
  7. AFL: new function Chr( code ) returns string representing single character of given ascii code
  8. AFL: new function GetObject( path, class ) providing functionality equivalent to JScript GetObject and VBScript GetObject
  9. AFL: new function GuiSendKeyEvents("ED") - register given characters to be sent as Gui event when keyboard key is pressed. GuiGetEvent will return code == notifyKeyDown and id of given character, for example id == 'D' for D letter
  10. AFL: StaticVarAdd when scalar value was added to already existing static var array sometimes random value would appear. Fixed.
  11. AFL: when file creation or modication date was exact midnight fgetstatus() returned datetime indicating "eod mark" (date without time), now it gives 00:00:00
  12. Analysis: Maximum number of threads per single Analysis window has been increased to 64 (from 32)
  13. Backtester: generation of Buy&Hold stats was not working when "Allow position shrinking" was turned OFF by the user and commission > 0. Fixed
  14. Chart: Data window can now display upto 40 values per single chart pane
  15. Chart: Horizontal line snap to open price (keypress O) or close price (keypress C) was snapping to H-L instead. Fixed
  16. Charts: Snap to price - the meaning of threshold is changed - instead of % of price it now means % of chart height. So 5% will snap within +/-5 of chart height. This allows it to work universally across different securities (stocks/forex) and different zo
  17. IQFeed: improved IQFeed plugin (better support for long EOD histories in mixed mode)
    New Analysis: the name of column "contracts/shares" changes each time you change futures mode to prevent confusion among newbies
  18. Plugins: when AFL plugin crashes (throws structured exception) the editor and indicator windows will display call stack for easier debugging of 3rd party plugins
  19. UI: Dialog boxes are moved back main display screen if multi-monitor configuration was changed and multi-monitor setup is not rectangular (for example monitors of different sizes)
  20. UI: Listview sorting by (single) date column is now 10+ times faster
  21. UI: Listview uses non optimized parsing for str to date conversion for date formats that include names of the months instead of numbers (avoids problems with different names of months in different languages)
  22. UI: Main window and AFL Editor frame is moved back to (0,0) if multi-monitor configuration was changed and multi-monitor setup is not rectangular (for example monitors of different sizes), so saved position falls outside currently available working area
  23. UI: MDI Close/Minimize/Restore buttons are now HighDPI aware
  24. UI: MDI Tab client window buttons are now HighDPI aware
  25. UI: Minimized flicker during docking panes resize by disabling Windows copy bits
  26. UI: Toolbar split-popup buttons are now HighDPI aware
  27. x64 eSignal: reverted to more compatible version compiled with VC2005

CHANGES FOR VERSION 6.35.0 (as compared to 6.31.0)

  1. AFL: new function inverf(x) - inverse of erf function
  2. AFL Editor: added function navigation combo box in the toolbar - detects user defined functions and allows to quicky navigate to function definition
  3. AFL: GetOption("PadAndAlignToReference") allows to query Pad and align setting status (note that this is read-only field, so it will not work with SetOption)
  4. AFL: new function erf(x) - computes Error function https://en.wikipedia.org/wiki/Error_function
  5. AFL: parser warns if empty body is used in 'for' statement, like this: for( i = 0; i AFL: parser warns if empty body is used in 'while' statement, like this: while( condition ) ; // extra semicolon at the end - empty body Warning 510
  6. AFL: SafeDivide( x, y, valueifzerodiv )- safe division that handles division by zero using special handling (replace result with user-defined value)
  7. Batch: added optional parameter to Data Import ASCII command to allow specify format definition file
  8. Batch: added optional parameter to Execute and Wait command to specify current working directory for command
  9. Batch: added optional parameter to Export to File / Export walk-forward to file to specify column separator in CSV files
    -optional parameter defines the column SEPARATOR used for export. Only single character is used. When it is not supplied, comma is used.
  10. Batch: Clipboard Cut/Copy/Paste implemented in batch editor
  11. Batch: Edit->Delete (from main menu) and Edit-Delete All implemented for completeness
  12. Batch: list view uses virtual mode now (owner data)
  13. UI: All owner-draw list views (NOT in dialogs) now feature customizable theme (currently available "system (light) theme" and "black theme") - go to Tools->Customize, "Appearance" tab, "Dark mode for listviews" checkbox
  14. UI: Analysis and RT quote window use now exactly the same RGB values for up/down (green/red) colors for consistency
  15. UI: Custom virtual listview (owner data) supports per-item data now
  16. UI: Found workaround to avoid terrible flicker and bad rendering of list view controls during fast page up/down and side scrolls (even though they are double buffered by Windows and in theory should be smooth).
  17. UI: Identified even more bottlenecks in Windows OS that caused even owner data and owner draw Listview performance to suffer with large number of columns. OS code circumvented. Listview redraw speeds increased more than 5x compared to previous speedy implementation
  18. UI: Implemented resizing of Listview column customization dialog

CHANGES FOR VERSION 6.31.0 (as compared to 6.30.0)

  1. AFL: Access violation in PercentRank when period is wrong. Now error 52 is displayed instead.
  2. AFL: InternetPostRequest now silently (or with warning 507 under debugger) returns NULL handle instead of error when remote server responds with HTTP Status 50x
  3. Analysis: manual column re-sorting could be bit off if scientific output format (xxxEyyy) was used with different exponents. Fixed.
  4. ASCII importer now handles LastSplitRatio of X:Y where X and Y are 1...32767 (previously only 1..127)
  5. Batch: add "add results to watchlist" action / WatchlistAddResults
  6. Batch: add "clear watchlist" action / WatchlistClear
  7. Batch: add "comment" action
  8. Core/DB: fixed access violation when all data were removed while QuickData was turned on
  9. DebugView: eliminated some internal messages from DebugView output (from release version)
  10. InternetPostRequest - even if URL started with https, previous version wanted to connect to port 80, instead of 443. Fixed.
  11. UI/Listview: since 6.28 exception could occur if single cell text length exceeded 1024 characters. Fixed.
  12. When database is empty, ticker box displays grayed text instead of blank or reminiscent of previous database symbol

KNOWN ISSUES:

  1. None

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

AmiBroker 6.39.0 RC released

Stability: Rank 3 - regular BETA should work fine in most environments

This is a BETA version. Make a backup first

A new RC version (6.39.0) of AmiBroker has been released.

32-bit version:
http://www.amibroker.com/members/download.php?AmiBroker6390.exe
(10 315 168 bytes)

64-bit version:
http://www.amibroker.com/members/download.php?AmiBroker6390x64.exe
(10 917 592 bytes)

If you can not log in into members' area please get your new password by filling the form at: http://www.amibroker.com/login.html

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

UPGRADE POLICY
This version is a free upgrade only for users who registered AmiBroker after March 5, 2019. Users who registered earlier, would need to purchase license upgrade. To find out the version you currently have use Account Information page at http://www.amibroker.com/members/info.php

Remember to BACKUP YOUR FILES FIRST !
Note that this version can only be installed onto previous full installation of version 6.30 or higher from http://www.amibroker.com/download.html

FEATURE HIGHLIGHTS 6.39

6.39 provides 30 new features and enhancements

  • AFL editor enhancements
  • new AFL functions
  • support for gzip and deflate compression in Internet functions
  • in-place matrix copy
  • backtester enhancements
  • improved text tool with per-study selectable font size
  • new 8-digit ICB structure
  • plugin interface backward compatibility with changing function signatures
  • improved performance
  • more runtime checks to prevent user errors and other fixes

CHANGES FOR VERSION 6.39.0 (as compared to 6.38.0)

  1. 64-bit: AmiBroker, AmiQuote, AFL Code Wizard migrated to newest VC++ 2019 for even better performance
  2. AFL Editor: @link commands are executed at mouse up (instead of previous mouse down) to prevent unwanted text selection when message boxes are dismissed
  3. AFL Editor: call tips (parameter information tooltips) now provide extra description about the function and its parameters (as of v6.39 only 20 functions have this extra info)
  4. AFL Editor: debugging session is automatically terminated with appropriate notice when user attempts to edit the code during debugging (this saves mouse clicks that were needed to stop debug session in order to edit)
  5. AFL Editor: previously when no text was selected and Prettify Code was choosen, the message box caused main frame to get focus instead of focus staying in AFL frame. Fixed
  6. AFL Editor: when an runtime error is detected debugging session the message bar shows now number of detected errors (as it did previously during normal "verify"
  7. AFL Editor: when dark mode list views are used watch window default text color was black making it hardly visible, changed to white
  8. AFL/CBT: AmiBroker now displays an error when user passes incorrect bar number to ProcessTradeSignals() instead of silently skipping wrong arguments
  9. AFL: added protection against assigning wrong types to some built-in variables such as *Price arrays. If wrong type is assigned the error 71 Type mismatch in assignment is displayed
  10. AFL: ADX() function vectorized in 64-bit version (2x faster than before)
  11. AFL: backtester crashed when user incorrectly assigned string value to BuyPrice/ShortPrice/CoverPrice arrays. Fixed.
  12. AFL: Error("text", stop=False) function - added extra parameter to stop execution regardless of "stop execution at first error" preference setting
  13. AFL: FindIndex( array, value, start_from = 0, dir = 1 )
  14. AFL: If warning level >= 3, InternetOpenURL() function now displays a warning 507 if OS generated exception when accessing remote resource, the same way as InternetPostRequest
  15. AFL: increased calculated bar requirements for Wilders() function for better conformance with QuickAFL
  16. AFL: Last OS error code is set by Internet* functions regardless of warning level so you can always retrieve it using GetLastOSError()
  17. AFL: MA( C, BarCount ), StDev( C, BarCount ) return non-Null value
  18. AFL: new field added to SetOption/GetOpion function calls "MaxPosValue" (per backtest setting)
  19. AFL: new function InternetSetHeaders( "headers" ) - set custom HTTP headers for subsequent web requests
  20. AFL: new function InternetSetOption( option, value ) - set HTTP option for internet session
  21. AFL: new function MxCopy - for copying rectangular blocks from one matrix to the other (copy portions of one matrix to the other matrix)
  22. AFL: new function: _exit() - that gracefully ends AFL execution at the point of the call
  23. AFL: new function: InternetGetStatusCode function - returns HTTP status code of last InternetOpenURL or InternetPostRequest call
  24. Analysis/Backtest: added "Max. position value" option in the settings allowing to specify maximum dollar value of position. Zero (0) means no maximum. Positions larger will be shinked (if shrinking is enabled) or won't be entered at all (if shrinking is d
  25. Charts/Preferences: added Text Tool font setting independent from Axis font (Preferences->Miscellaneous page)
  26. Charts: Text Box tool supports user-selectable font size now (selectable in Study Properties window)
  27. Database: new 8-digit ICB structure implemented: https://www.ftserussell.com/data/industry-classification-benchmark-icb
  28. Got rid of obsolete "Request data on save" setting that wasn't performing as expected
  29. Plugin interface: added compatibility layer allowing old plugins to safely call functions even when they have modified signature (added new default parameters). When plugin calls function with less than expected number of arguments, missing some of default
  30. When variable was passed to user function by reference, ++ operator inside had no effect on referenced variable (outside of function). Fixed.

CHANGES FOR VERSION 6.38.0 (as compared to 6.35.1)

  1. 64-bit version uses updated VC2017/2019 runtime
  2. 64-bit version could produce "Invalid parameter" exception from CRT after backtesting when symbols under test had forbidden characters in them like "%". Fixed
  3. 64-bit version: address space layout randomization disabled by /DYNAMICBASE:NO linker option to facilite easier crash location finding
  4. AFL: assignment new matrix value to a variable already holding matrix value did not immediately free memory (at the time of assignment). This memory was only freed at the end of the formula. Now it is freed earlier (at assignment) to lower memory usage.
  5. AFL: GetFnData("lastsplitdate") returns empty val instead of zero if last split date is not set
  6. AFL: GfxDrawImage with PNG file could fail if very same file was accessed simultaneously from multiple threads due to "no-sharing" mode that 3rd party XTP lib used. Fixed by using shareDenyWrite
  7. AFL: new function Chr( code ) returns string representing single character of given ascii code
  8. AFL: new function GetObject( path, class ) providing functionality equivalent to JScript GetObject and VBScript GetObject
  9. AFL: new function GuiSendKeyEvents("ED") - register given characters to be sent as Gui event when keyboard key is pressed. GuiGetEvent will return code == notifyKeyDown and id of given character, for example id == 'D' for D letter
  10. AFL: StaticVarAdd when scalar value was added to already existing static var array sometimes random value would appear. Fixed.
  11. AFL: when file creation or modication date was exact midnight fgetstatus() returned datetime indicating "eod mark" (date without time), now it gives 00:00:00
  12. Analysis: Maximum number of threads per single Analysis window has been increased to 64 (from 32)
  13. Backtester: generation of Buy&Hold stats was not working when "Allow position shrinking" was turned OFF by the user and commission > 0. Fixed
  14. Chart: Data window can now display upto 40 values per single chart pane
  15. Chart: Horizontal line snap to open price (keypress O) or close price (keypress C) was snapping to H-L instead. Fixed
  16. Charts: Snap to price - the meaning of threshold is changed - instead of % of price it now means % of chart height. So 5% will snap within +/-5 of chart height. This allows it to work universally across different securities (stocks/forex) and different zo
  17. IQFeed: improved IQFeed plugin (better support for long EOD histories in mixed mode)
    New Analysis: the name of column "contracts/shares" changes each time you change futures mode to prevent confusion among newbies
  18. Plugins: when AFL plugin crashes (throws structured exception) the editor and indicator windows will display call stack for easier debugging of 3rd party plugins
  19. UI: Dialog boxes are moved back main display screen if multi-monitor configuration was changed and multi-monitor setup is not rectangular (for example monitors of different sizes)
  20. UI: Listview sorting by (single) date column is now 10+ times faster
  21. UI: Listview uses non optimized parsing for str to date conversion for date formats that include names of the months instead of numbers (avoids problems with different names of months in different languages)
  22. UI: Main window and AFL Editor frame is moved back to (0,0) if multi-monitor configuration was changed and multi-monitor setup is not rectangular (for example monitors of different sizes), so saved position falls outside currently available working area
  23. UI: MDI Close/Minimize/Restore buttons are now HighDPI aware
  24. UI: MDI Tab client window buttons are now HighDPI aware
  25. UI: Minimized flicker during docking panes resize by disabling Windows copy bits
  26. UI: Toolbar split-popup buttons are now HighDPI aware
  27. x64 eSignal: reverted to more compatible version compiled with VC2005

CHANGES FOR VERSION 6.35.0 (as compared to 6.31.0)

  1. AFL: new function inverf(x) - inverse of erf function
  2. AFL Editor: added function navigation combo box in the toolbar - detects user defined functions and allows to quicky navigate to function definition
  3. AFL: GetOption("PadAndAlignToReference") allows to query Pad and align setting status (note that this is read-only field, so it will not work with SetOption)
  4. AFL: new function erf(x) - computes Error function https://en.wikipedia.org/wiki/Error_function
  5. AFL: parser warns if empty body is used in 'for' statement, like this: for( i = 0; i AFL: parser warns if empty body is used in 'while' statement, like this: while( condition ) ; // extra semicolon at the end - empty body Warning 510
  6. AFL: SafeDivide( x, y, valueifzerodiv )- safe division that handles division by zero using special handling (replace result with user-defined value)
  7. Batch: added optional parameter to Data Import ASCII command to allow specify format definition file
  8. Batch: added optional parameter to Execute and Wait command to specify current working directory for command
  9. Batch: added optional parameter to Export to File / Export walk-forward to file to specify column separator in CSV files
    -optional parameter defines the column SEPARATOR used for export. Only single character is used. When it is not supplied, comma is used.
  10. Batch: Clipboard Cut/Copy/Paste implemented in batch editor
  11. Batch: Edit->Delete (from main menu) and Edit-Delete All implemented for completeness
  12. Batch: list view uses virtual mode now (owner data)
  13. UI: All owner-draw list views (NOT in dialogs) now feature customizable theme (currently available "system (light) theme" and "black theme") - go to Tools->Customize, "Appearance" tab, "Dark mode for listviews" checkbox
  14. UI: Analysis and RT quote window use now exactly the same RGB values for up/down (green/red) colors for consistency
  15. UI: Custom virtual listview (owner data) supports per-item data now
  16. UI: Found workaround to avoid terrible flicker and bad rendering of list view controls during fast page up/down and side scrolls (even though they are double buffered by Windows and in theory should be smooth).
  17. UI: Identified even more bottlenecks in Windows OS that caused even owner data and owner draw Listview performance to suffer with large number of columns. OS code circumvented. Listview redraw speeds increased more than 5x compared to previous speedy implementation
  18. UI: Implemented resizing of Listview column customization dialog

CHANGES FOR VERSION 6.31.0 (as compared to 6.30.0)

  1. AFL: Access violation in PercentRank when period is wrong. Now error 52 is displayed instead.
  2. AFL: InternetPostRequest now silently (or with warning 507 under debugger) returns NULL handle instead of error when remote server responds with HTTP Status 50x
  3. Analysis: manual column re-sorting could be bit off if scientific output format (xxxEyyy) was used with different exponents. Fixed.
  4. ASCII importer now handles LastSplitRatio of X:Y where X and Y are 1...32767 (previously only 1..127)
  5. Batch: add "add results to watchlist" action / WatchlistAddResults
  6. Batch: add "clear watchlist" action / WatchlistClear
  7. Batch: add "comment" action
  8. Core/DB: fixed access violation when all data were removed while QuickData was turned on
  9. DebugView: eliminated some internal messages from DebugView output (from release version)
  10. InternetPostRequest - even if URL started with https, previous version wanted to connect to port 80, instead of 443. Fixed.
  11. UI/Listview: since 6.28 exception could occur if single cell text length exceeded 1024 characters. Fixed.
  12. When database is empty, ticker box displays grayed text instead of blank or reminiscent of previous database symbol

KNOWN ISSUES:

  1. None

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

AmiBroker 6.38.0 RC released

Stability: Rank 3 - regular BETA should work fine in most environments

This is a BETA version. Make a backup first

A new RC version (6.38.0) of AmiBroker has been released.

32-bit version:
http://www.amibroker.com/members/download.php?AmiBroker6380.exe
(10 300 856 bytes)

64-bit version:
http://www.amibroker.com/members/download.php?AmiBroker6380x64.exe
(11 022 304 bytes)

If you can not log in into members' area please get your new password by filling the form at: http://www.amibroker.com/login.html

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

UPGRADE POLICY
This version is a free upgrade only for users who registered AmiBroker after October 15, 2018. Users who registered earlier, would need to purchase license upgrade. To find out the version you currently have use Account Information page at http://www.amibroker.com/members/info.php

Remember to BACKUP YOUR FILES FIRST !
Note that this version can only be installed onto previous full installation of version 6.30 or higher from http://www.amibroker.com/download.html

FEATURE HIGHLIGHT 6.38

6.38 provides improvements and new functions in all areas. Details in the change log.

CHANGES FOR VERSION 6.38.0 (as compared to 6.35.1)

  1. 64-bit version uses updated VC2017/2019 runtime
  2. 64-bit version could produce "Invalid parameter" exception from CRT after backtesting when symbols under test had forbidden characters in them like "%". Fixed
  3. 64-bit version: address space layout randomization disabled by /DYNAMICBASE:NO linker option to facilite easier crash location finding
  4. AFL: assignment new matrix value to a variable already holding matrix value did not immediately free memory (at the time of assignment). This memory was only freed at the end of the formula. Now it is freed earlier (at assignment) to lower memory usage.
  5. AFL: GetFnData("lastsplitdate") returns empty val instead of zero if last split date is not set
  6. AFL: GfxDrawImage with PNG file could fail if very same file was accessed simultaneously from multiple threads due to "no-sharing" mode that 3rd party XTP lib used. Fixed by using shareDenyWrite
  7. AFL: new function Chr( code ) returns string representing single character of given ascii code
  8. AFL: new function GetObject( path, class ) providing functionality equivalent to JScript GetObject and VBScript GetObject
  9. AFL: new function GuiSendKeyEvents("ED") - register given characters to be sent as Gui event when keyboard key is pressed. GuiGetEvent will return code == notifyKeyDown and id of given character, for example id == 'D' for D letter
  10. AFL: StaticVarAdd when scalar value was added to already existing static var array sometimes random value would appear. Fixed.
  11. AFL: when file creation or modication date was exact midnight fgetstatus() returned datetime indicating "eod mark" (date without time), now it gives 00:00:00
  12. Analysis: Maximum number of threads per single Analysis window has been increased to 64 (from 32)
  13. Backtester: generation of Buy&Hold stats was not working when "Allow position shrinking" was turned OFF by the user and commission > 0. Fixed
  14. Chart: Data window can now display upto 40 values per single chart pane
  15. Chart: Horizontal line snap to open price (keypress O) or close price (keypress C) was snapping to H-L instead. Fixed
  16. Charts: Snap to price - the meaning of threshold is changed - instead of % of price it now means % of chart height. So 5% will snap within +/-5 of chart height. This allows it to work universally across different securities (stocks/forex) and different zo
  17. IQFeed: improved IQFeed plugin (better support for long EOD histories in mixed mode)
    New Analysis: the name of column "contracts/shares" changes each time you change futures mode to prevent confusion among newbies
  18. Plugins: when AFL plugin crashes (throws structured exception) the editor and indicator windows will display call stack for easier debugging of 3rd party plugins
  19. UI: Dialog boxes are moved back main display screen if multi-monitor configuration was changed and multi-monitor setup is not rectangular (for example monitors of different sizes)
  20. UI: Listview sorting by (single) date column is now 10+ times faster
  21. UI: Listview uses non optimized parsing for str to date conversion for date formats that include names of the months instead of numbers (avoids problems with different names of months in different languages)
  22. UI: Main window and AFL Editor frame is moved back to (0,0) if multi-monitor configuration was changed and multi-monitor setup is not rectangular (for example monitors of different sizes), so saved position falls outside currently available working area
  23. UI: MDI Close/Minimize/Restore buttons are now HighDPI aware
  24. UI: MDI Tab client window buttons are now HighDPI aware
  25. UI: Minimized flicker during docking panes resize by disabling Windows copy bits
  26. UI: Toolbar split-popup buttons are now HighDPI aware
  27. x64 eSignal: reverted to more compatible version compiled with VC2005

CHANGES FOR VERSION 6.35.0 (as compared to 6.31.0)

  1. AFL: new function inverf(x) - inverse of erf function
  2. AFL Editor: added function navigation combo box in the toolbar - detects user defined functions and allows to quicky navigate to function definition
  3. AFL: GetOption("PadAndAlignToReference") allows to query Pad and align setting status (note that this is read-only field, so it will not work with SetOption)
  4. AFL: new function erf(x) - computes Error function https://en.wikipedia.org/wiki/Error_function
  5. AFL: parser warns if empty body is used in 'for' statement, like this: for( i = 0; i AFL: parser warns if empty body is used in 'while' statement, like this: while( condition ) ; // extra semicolon at the end - empty body Warning 510
  6. AFL: SafeDivide( x, y, valueifzerodiv )- safe division that handles division by zero using special handling (replace result with user-defined value)
  7. Batch: added optional parameter to Data Import ASCII command to allow specify format definition file
  8. Batch: added optional parameter to Execute and Wait command to specify current working directory for command
  9. Batch: added optional parameter to Export to File / Export walk-forward to file to specify column separator in CSV files
    -optional parameter defines the column SEPARATOR used for export. Only single character is used. When it is not supplied, comma is used.
  10. Batch: Clipboard Cut/Copy/Paste implemented in batch editor
  11. Batch: Edit->Delete (from main menu) and Edit-Delete All implemented for completeness
  12. Batch: list view uses virtual mode now (owner data)
  13. UI: All owner-draw list views (NOT in dialogs) now feature customizable theme (currently available "system (light) theme" and "black theme") - go to Tools->Customize, "Appearance" tab, "Dark mode for listviews" checkbox
  14. UI: Analysis and RT quote window use now exactly the same RGB values for up/down (green/red) colors for consistency
  15. UI: Custom virtual listview (owner data) supports per-item data now
  16. UI: Found workaround to avoid terrible flicker and bad rendering of list view controls during fast page up/down and side scrolls (even though they are double buffered by Windows and in theory should be smooth).
  17. UI: Identified even more bottlenecks in Windows OS that caused even owner data and owner draw Listview performance to suffer with large number of columns. OS code circumvented. Listview redraw speeds increased more than 5x compared to previous speedy implementation
  18. UI: Implemented resizing of Listview column customization dialog

CHANGES FOR VERSION 6.31.0 (as compared to 6.30.0)

  1. AFL: Access violation in PercentRank when period is wrong. Now error 52 is displayed instead.
  2. AFL: InternetPostRequest now silently (or with warning 507 under debugger) returns NULL handle instead of error when remote server responds with HTTP Status 50x
  3. Analysis: manual column re-sorting could be bit off if scientific output format (xxxEyyy) was used with different exponents. Fixed.
  4. ASCII importer now handles LastSplitRatio of X:Y where X and Y are 1...32767 (previously only 1..127)
  5. Batch: add "add results to watchlist" action / WatchlistAddResults
  6. Batch: add "clear watchlist" action / WatchlistClear
  7. Batch: add "comment" action
  8. Core/DB: fixed access violation when all data were removed while QuickData was turned on
  9. DebugView: eliminated some internal messages from DebugView output (from release version)
  10. InternetPostRequest - even if URL started with https, previous version wanted to connect to port 80, instead of 443. Fixed.
  11. UI/Listview: since 6.28 exception could occur if single cell text length exceeded 1024 characters. Fixed.
  12. When database is empty, ticker box displays grayed text instead of blank or reminiscent of previous database symbol

KNOWN ISSUES:

  1. None

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

AmiBroker 6.35.1 BETA released

Stability: Rank 3 - regular BETA should work fine in most environments

This is a BETA version. Make a backup first

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

32-bit version:
http://www.amibroker.com/members/bin/ab6351beta.exe
(2 447 064 bytes)

64-bit version:
http://www.amibroker.com/members/bin/AmiBroker6351x64.exe
(11 017 280 bytes)

If you can not log in into members' area please get your new password by filling the form at: http://www.amibroker.com/login.html

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

UPGRADE POLICY
This version is a free upgrade only for users who registered AmiBroker after November 28, 2017. Users who registered earlier, would need to purchase license upgrade. To find out the version you currently have use Account Information page at http://www.amibroker.com/members/info.php

Remember to BACKUP YOUR FILES FIRST !
Note that this version can only be installed onto previous full installation of version 6.30 or higher from http://www.amibroker.com/download.html

FEATURE HIGHLIGHT 6.35

6.35 provides:

  1. huge speedups in running huge explorations,
  2. dark theme and 5x speed up for rendering huge list views like (as compared to 6.31)
  3. improved Batch functionality - clipboard support (copy/paste of selected batch items), new optional parameters for batch commands
  4. new AFL functions (SafeDivide, erf(), inverf()) and AFL parser improvements

CHANGES FOR VERSION 6.35.1 (as compared to 6.35.0)

  1. When .abb file was saved in older version and was missing Param2 then Param was incorrectly used as default value. Fixed.
  2. Changed threshold year for two digit year data files to 25 (previously it was 20). So YY is now interpreted as 19YY when YY

    CHANGES FOR VERSION 6.35.0 (as compared to 6.31.0)

    1. AFL: new function inverf(x) - inverse of erf function
    2. AFL Editor: added function navigation combo box in the toolbar - detects user defined functions and allows to quicky navigate to function definition
    3. AFL: GetOption("PadAndAlignToReference") allows to query Pad and align setting status (note that this is read-only field, so it will not work with SetOption)
    4. AFL: new function erf(x) - computes Error function https://en.wikipedia.org/wiki/Error_function
    5. AFL: parser warns if empty body is used in 'for' statement, like this: for( i = 0; i AFL: parser warns if empty body is used in 'while' statement, like this: while( condition ) ; // extra semicolon at the end - empty body Warning 510
    6. AFL: SafeDivide( x, y, valueifzerodiv )- safe division that handles division by zero using special handling (replace result with user-defined value)
    7. Batch: added optional parameter to Data Import ASCII command to allow specify format definition file
    8. Batch: added optional parameter to Execute and Wait command to specify current working directory for command
    9. Batch: added optional parameter to Export to File / Export walk-forward to file to specify column separator in CSV files
      -optional parameter defines the column SEPARATOR used for export. Only single character is used. When it is not supplied, comma is used.
    10. Batch: Clipboard Cut/Copy/Paste implemented in batch editor
    11. Batch: Edit->Delete (from main menu) and Edit-Delete All implemented for completeness
    12. Batch: list view uses virtual mode now (owner data)
    13. UI: All owner-draw list views (NOT in dialogs) now feature customizable theme (currently available "system (light) theme" and "black theme") - go to Tools->Customize, "Appearance" tab, "Dark mode for listviews" checkbox
    14. UI: Analysis and RT quote window use now exactly the same RGB values for up/down (green/red) colors for consistency
    15. UI: Custom virtual listview (owner data) supports per-item data now
    16. UI: Found workaround to avoid terrible flicker and bad rendering of list view controls during fast page up/down and side scrolls (even though they are double buffered by Windows and in theory should be smooth).
    17. UI: Identified even more bottlenecks in Windows OS that caused even owner data and owner draw Listview performance to suffer with large number of columns. OS code circumvented. Listview redraw speeds increased more than 5x compared to previous speedy implementation
    18. UI: Implemented resizing of Listview column customization dialog

    CHANGES FOR VERSION 6.31.0 (as compared to 6.30.0)

    1. AFL: Access violation in PercentRank when period is wrong. Now error 52 is displayed instead.
    2. AFL: InternetPostRequest now silently (or with warning 507 under debugger) returns NULL handle instead of error when remote server responds with HTTP Status 50x
    3. Analysis: manual column re-sorting could be bit off if scientific output format (xxxEyyy) was used with different exponents. Fixed.
    4. ASCII importer now handles LastSplitRatio of X:Y where X and Y are 1...32767 (previously only 1..127)
    5. Batch: add "add results to watchlist" action / WatchlistAddResults
    6. Batch: add "clear watchlist" action / WatchlistClear
    7. Batch: add "comment" action
    8. Core/DB: fixed access violation when all data were removed while QuickData was turned on
    9. DebugView: eliminated some internal messages from DebugView output (from release version)
    10. InternetPostRequest - even if URL started with https, previous version wanted to connect to port 80, instead of 443. Fixed.
    11. UI/Listview: since 6.28 exception could occur if single cell text length exceeded 1024 characters. Fixed.
    12. When database is empty, ticker box displays grayed text instead of blank or reminiscent of previous database symbol

    KNOWN ISSUES:

    1. None

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

AmiBroker 6.35.0 BETA released

Stability: Rank 3 - regular BETA should work fine in most environments

This is a BETA version. Make a backup first

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

32-bit version:
http://www.amibroker.com/members/bin/ab6350beta.exe
(2 447 008 bytes)

64-bit version:
http://www.amibroker.com/members/bin/AmiBroker6350x64.exe
(11 022 864 bytes)

If you can not log in into members' area please get your new password by filling the form at: http://www.amibroker.com/login.html

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

UPGRADE POLICY
This version is a free upgrade only for users who registered AmiBroker after November 28, 2017. Users who registered earlier, would need to purchase license upgrade. To find out the version you currently have use Account Information page at http://www.amibroker.com/members/info.php

Remember to BACKUP YOUR FILES FIRST !
Note that this version can only be installed onto previous full installation of version 6.30 or higher from http://www.amibroker.com/download.html

FEATURE HIGHLIGHT 6.35

6.35 provides:

  1. huge speedups in running huge explorations,
  2. dark theme and 5x speed up for rendering huge list views like (as compared to 6.31)
  3. improved Batch functionality - clipboard support (copy/paste of selected batch items), new optional parameters for batch commands
  4. new AFL functions (SafeDivide, erf(), inverf()) and AFL parser improvements

CHANGES FOR VERSION 6.35.0 (as compared to 6.31.0)

  1. AFL: new function inverf(x) - inverse of erf function
  2. AFL Editor: added function navigation combo box in the toolbar - detects user defined functions and allows to quicky navigate to function definition
  3. AFL: GetOption("PadAndAlignToReference") allows to query Pad and align setting status (note that this is read-only field, so it will not work with SetOption)
  4. AFL: new function erf(x) - computes Error function https://en.wikipedia.org/wiki/Error_function
  5. AFL: parser warns if empty body is used in 'for' statement, like this: for( i = 0; i AFL: parser warns if empty body is used in 'while' statement, like this: while( condition ) ; // extra semicolon at the end - empty body Warning 510
  6. AFL: SafeDivide( x, y, valueifzerodiv )- safe division that handles division by zero using special handling (replace result with user-defined value)
  7. Batch: added optional parameter to Data Import ASCII command to allow specify format definition file
  8. Batch: added optional parameter to Execute and Wait command to specify current working directory for command
  9. Batch: added optional parameter to Export to File / Export walk-forward to file to specify column separator in CSV files
    -optional parameter defines the column SEPARATOR used for export. Only single character is used. When it is not supplied, comma is used.
  10. Batch: Clipboard Cut/Copy/Paste implemented in batch editor
  11. Batch: Edit->Delete (from main menu) and Edit-Delete All implemented for completeness
  12. Batch: list view uses virtual mode now (owner data)
  13. UI: All owner-draw list views (NOT in dialogs) now feature customizable theme (currently available "system (light) theme" and "black theme") - go to Tools->Customize, "Appearance" tab, "Dark mode for listviews" checkbox
  14. UI: Analysis and RT quote window use now exactly the same RGB values for up/down (green/red) colors for consistency
  15. UI: Custom virtual listview (owner data) supports per-item data now
  16. UI: Found workaround to avoid terrible flicker and bad rendering of list view controls during fast page up/down and side scrolls (even though they are double buffered by Windows and in theory should be smooth).
  17. UI: Identified even more bottlenecks in Windows OS that caused even owner data and owner draw Listview performance to suffer with large number of columns. OS code circumvented. Listview redraw speeds increased more than 5x compared to previous speedy implementation
  18. UI: Implemented resizing of Listview column customization dialog

CHANGES FOR VERSION 6.31.0 (as compared to 6.30.0)

  1. AFL: Access violation in PercentRank when period is wrong. Now error 52 is displayed instead.
  2. AFL: InternetPostRequest now silently (or with warning 507 under debugger) returns NULL handle instead of error when remote server responds with HTTP Status 50x
  3. Analysis: manual column re-sorting could be bit off if scientific output format (xxxEyyy) was used with different exponents. Fixed.
  4. ASCII importer now handles LastSplitRatio of X:Y where X and Y are 1...32767 (previously only 1..127)
  5. Batch: add "add results to watchlist" action / WatchlistAddResults
  6. Batch: add "clear watchlist" action / WatchlistClear
  7. Batch: add "comment" action
  8. Core/DB: fixed access violation when all data were removed while QuickData was turned on
  9. DebugView: eliminated some internal messages from DebugView output (from release version)
  10. InternetPostRequest - even if URL started with https, previous version wanted to connect to port 80, instead of 443. Fixed.
  11. UI/Listview: since 6.28 exception could occur if single cell text length exceeded 1024 characters. Fixed.
  12. When database is empty, ticker box displays grayed text instead of blank or reminiscent of previous database symbol

KNOWN ISSUES:

  1. None

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

AmiBroker 6.31.0 BETA released

Stability: Rank 3 - regular BETA should work fine in most environments

This is a BETA version. Make a backup first

A new beta version (6.31.0) of AmiBroker, with new functionality in Batch controller has been released.

32-bit version:
http://www.amibroker.com/members/bin/ab6310beta.exe
(2 422 504 bytes)

64-bit version:
http://www.amibroker.com/members/bin/AmiBroker6310x64.exe
(11 000 224 bytes)

If you can not log in into members' area please get your new password by filling the form at: http://www.amibroker.com/login.html

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

UPGRADE POLICY
This version is a free upgrade only for users who registered AmiBroker after August 1, 2017. Users who registered earlier, would need to purchase license upgrade. To find out the version you currently have use Account Information page at http://www.amibroker.com/members/info.php

Remember to BACKUP YOUR FILES FIRST !
Note that this version can only be installed onto previous full installation of version 6.30 or higher from http://www.amibroker.com/download.html

FEATURE HIGHLIGHT 6.31

6.31 is focused on Batch window improvements and general fixes. See CHANGE LOG for details.

CHANGES FOR VERSION 6.31.0 (as compared to 6.30.0)

  1. AFL: Access violation in PercentRank when period is wrong. Now error 52 is displayed instead.
  2. AFL: InternetPostRequest now silently (or with warning 507 under debugger) returns NULL handle instead of error when remote server responds with HTTP Status 50x
  3. Analysis: manual column re-sorting could be bit off if scientific output format (xxxEyyy) was used with different exponents. Fixed.
  4. ASCII importer now handles LastSplitRatio of X:Y where X and Y are 1...32767 (previously only 1..127)
  5. Batch: add "add results to watchlist" action / WatchlistAddResults
  6. Batch: add "clear watchlist" action / WatchlistClear
  7. Batch: add "comment" action
  8. Core/DB: fixed access violation when all data were removed while QuickData was turned on
  9. DebugView: eliminated some internal messages from DebugView output (from release version)
  10. InternetPostRequest - even if URL started with https, previous version wanted to connect to port 80, instead of 443. Fixed.
  11. UI/Listview: since 6.28 exception could occur if single cell text length exceeded 1024 characters. Fixed.
  12. When database is empty, ticker box displays grayed text instead of blank or reminiscent of previous database symbol

KNOWN ISSUES:

  1. None

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

AmiBroker 6.29.0 BETA released

Stability: Rank 3 - regular BETA should work fine in most environments

This is a BETA version. Make a backup first

A new beta version (6.29.0) of AmiBroker, with lots of new AFL functionality has been released.

32-bit version:
http://www.amibroker.com/members/bin/ab6290beta.exe
(2 371 136 bytes)

64-bit version:
http://www.amibroker.com/members/bin/AmiBroker6290x64.exe
(10 683 768 bytes)

If you can not log in into members' area please get your new password by filling the form at: http://www.amibroker.com/login.html

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

UPGRADE POLICY
This version is a free upgrade only for users who registered AmiBroker after August 24, 2016. Users who registered earlier, would need to purchase license upgrade. To find out the version you currently have use Account Information page at http://www.amibroker.com/members/info.php

Remember to BACKUP YOUR FILES FIRST !
Note that this version can only be installed onto previous full installation of version 6.20 or higher from http://www.amibroker.com/download.html

FEATURE HIGHLIGHT 6.29

6.29 is focused on AFL and UI improvements. See CHANGE LOG for details.

FEATURE HIGHLIGHT 6.28

6.28 is focused on AFL improvements. See CHANGE LOG for details.

FEATURE HIGHLIGHT 6.27

6.27 is focused on improvements of features introduced earlier. See CHANGE LOG for details.

FEATURE HIGHLIGHT 6.26

This version brings static variable declaration, new Voice functions, clickable links in Analysis result list, comment folding in the editor, new mouse hover notifications in GUI controls (notifyMouseEnter / notifyMouseLeave), and many many more - make sure to check CHANGE LOG below.

FEATURE HIGHLIGHT 6.25

This version brings new Gui controls (toggle button, checkbox, radio button), new AFL functions, passing variables by reference, Auto-optimization framework, HTML5 compatibility in Web Research and many more.

FEATURE HIGHLIGHT 6.22

This version is experimental because we are migrating 64-bit version to brand new compiler (VC++ 2017). Such migrations pretty often brings some compatibility risks therefore backup is highly recommended (although you can always go back by just installing previous version). We needed to migrate not only the program itself but many internal libraries taking care not to break backward compatibility.

Note that migration does NOT affect 32-bit version. It is still compiled with old compiler.

Why do we migrate to new compiler with 64-bit version?

  1. New compiler supports new CPU instructions (SSE3/AVX) that we can use to offer better performance
  2. According to our tests new compiler support produces faster code by itself (better optimizations, auto-vectorization, etc)
  3. New compiler is better with error checking (less bugs to slip through)
  4. We don't need to care about compatibility with pre-Vista systems in 64-bits version and all 64-bit capable CPUs are "modern" enough.

Why do we stay with old compiler in 32-bit version?

  1. New compiler does not produce code compatible with older operating systems (XP or earlier). Old compiler offers 100% compatibility with all Windows versions
  2. New compiler requires modern CPUs

Exact performance improvement is function dependent and hardware dependent. Many functions are faster by 30-50% but in some cases such as Min()/Max() functions as large as 8x speed up can be observed in 64-bit version.

FEATURE HIGHLIGHT 6.21
This version features preliminary support for native chart GUI (buttons and edits at the moment). Please be reasonable with Gui* functions and be aware of Windows limits. As all controls in Windows (buttons, edit boxes, etc) are actual Window objects they are subject to Windows limitation. And there is a limit of 10000 windows PER PROCESS. So don't try to create thousands of buttons (like a button for every bar of data) because first you will see huge performance decrease and next you will hit the limit and run into problems (crash), see https://blogs.msdn.microsoft.com/oldnewthing/20070718-00/?p=25963.

Best practice is to keep the number under 100-200. If you need more consider using low-level graphics instead.

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

Here is a sample formula that shows basic usage of Gui* functions:

GuiButton"Custom button"1104010030);

GuiButton"Dynamic "+Date(), 21204015030);
GuiButton"System button"33204010030);
GuiEdit5450401002031 );

GuiSetColors132colorRedcolorBlackcolorRedcolorWhitecolorBluecolorYellow
colorRedcolorBlackcolorYellow );

GuiSetColors33); // default (system) look

editText GuiGetText);

Title "Text entered: " editText "\nLast event: " GuiGetEvent0);

id GuiGetEvent0);
event GuiGetEvent0);

if( 
id == && event == GuiSetText("Button clicked",5);

CHANGES FOR VERSION 6.29.0 (as compared to 6.28.0)

  1. AFL: added GuiDateTime function
  2. AFL: Gui creation functions (GuiButton, GuiEdit, GuiDateTime and others) return guiNew (1) when control is newly created or guiExisting (2) when control already exists. This is useful for one-time initialization when control is being created.
  3. AFL: InternetSetAgent("agent") - new function to set user agent for InternetOpenURL
  4. AFL: new Error 70 - displayed on attempt yo use InternetSetAgent when it is already set or connection was already open
  5. Analysis: added Notice 802: Trade size limite of X% of entry bar volume has been hit N times.
  6. Charts: Vertical line (Y axis line) between chart area and Y axis scale is drawn with ZOrder = 0 instead of ZOrder = 128
  7. Charts: Y-axis scale for huge negative values (below minus 1 billion) was incorrect. Fixed
  8. File: Chart template, complete now also saves the content of files included using #include_once
  9. New Analysis: decreased number of cases when IEEE rounding of fractional steps result in one step less than naive expecation in optimization
  10. UI: 'Backtest settings' caption changed to 'Analysis Settings' and changed the layout of 'general' tab - data settings (that apply to everything mode) grouped separately from purely backtest settings
  11. UI: increased number of user-definable Tool window menu items to 20 (from 10)

CHANGES FOR VERSION 6.28.0 (as compared to 6.27.1)

  1. AFL: AddToComposite will issue error 69 if user passes field code other than "O", "H", "L", "C", "V", "I", "1", "2", or "X"
  2. AFL: another protection for users shooting themselves in the foot: AddToComposite will issue error 68 when user passes invalid symbol string (empty or with characters like comma or new line or tab)
  3. AFL: improved type checking for bad type of array arguments
  4. AFL: New warning 508 is displayed if same category type is used multiple times in the Filter settings window and formula calls GetOption("FilterInclude*") or GetOption("FilterExclude*). Code using such statements is incorrect for such filters.
  5. AFL: now you can pass references as arguments to built-in funcitons and they will be automatically dereferenced ("by value" sematics enforced)
  6. AFL: user-defined functions that return matrix reclaim memory faster than before to avoid large memory consumption on super-long loops calling them
  7. AFL: VarGet was not working properly with matrices on 64 bit version. Fixed.
  8. AQ: 3.29 - when current working directory is set incorrectly it sets it back to where it should be. Correct working dir is required for relative paths to work
  9. Backtest: interest earned on cash balances and charged on margin load is reported separately in backtest report now (if non-zero)
  10. Core: sizes of some hash tables increased to speed up lookups
  11. enable_static_decl created prefixes in original case (both upper and lowercase). Since StaticVar* functions always use lowercase names this made them unable to read declared statics other than all lowercase. Now declared variables are internally lowecase
  12. Gui control custom colors - defaults changed to use Windows default "hot" color (blue) for hover outline and (hover + selected) state is now drawn with hover border and text but 'selected' background
  13. GuiGetCheck returned 0 on owner draw toggle (custom colors) due to Windows limitation. Fixed.
  14. IB plugin: right mouse button click : Backfill Current was causing exception for symbols longer than 26 letters. Fixed. (Version 2.0.10)
  15. If user formula had run-time errors and produced zero trades the "Info" tab issued "Reporting has been turned off by SetOption" since there was no report generated but not because of option, but because of formula error. Fixed (the message is not displaye
  16. IQFeed: in mixed mode EOD data got preference if there is not enough room to fit all intraday and all eod in defined "number of bars"
  17. New Analysis: added 'notices' to Info tab that inform the user about potential problems and recommended actions. Currently one notice is displayed when user tries to use ranking or composites without enabling padding. Will add more notices in the future
  18. New Analysis: progress bar will not display "remaining time" until at least one step is completed. Also if remaing time is > 2 billion years it will display (unknown), and will report remaing time in million years if necessary (for example when user star
  19. Setup 64-bit: program and all plugins use newest compiler and newest VC++2017 runtime
  20. Setup 64-bit: activation key should work without installing VC2005 runtime
  21. UI: "OK" button appears on splash screen only if it does not auto-close

CHANGES FOR VERSION 6.27.0 (as compared to 6.26.0)

  1. AFL edit: preprocessor command (#include/#include_once/#pragma) are highlighted with different color to give visual clue that preprocessor command is NOT regular code
  2. AFL: #pragma enable_static_decl accepts prefix given in quotation marks (as regular string).
  3. AFL: due to changes in 6.25 BETA TimeFrameSet applied on 1-tick base interval could result in division by zero exception. Fixed.
  4. AFL: Error 66 has new meaning now. It is issued to prevent attempts to mix static declarations with old style access. Error 66. Variables with '---' prefix are inaccesible via StaticVarGet/Set/Remove in this formula. This prefix is reserved by #pragma ena
  5. AFL: Removed Error 66: invalid identifier from VarSet/VarGet. Instead of issuing error message, VarGet/VarSet automatically sanitizes invalid identifiers by replacing all characters other than digits and A-Z, a-z letters by underscore
  6. AFL: runtime tokens {chartid}, {symbol}, {interval} are now supported in #pragma enable_static_decl
  7. AFL: SetFormulaName - displays error 67 if user tries to use file-system forbidden characters for formula name
  8. AFL: StaticVarRemove() when called with EMPTY string: StaticVarRemove("") nullifies all static variables declared with static keyword within given formula
  9. AFL: when declared static variable is assigned the NULL value, it will be removed from memory when formula finishes
  10. ASCII importer: importer logged "ran of industry space" even if it didn't. Fixed.
  11. CBT: If user called ApplyStop AND calls EnterTrade from low-level backtest and did not switch backtestRegular mode to raw mode (which should be done), backtester would automatically turn on 2nd phase stops handling to prevent crash
  12. Charts: a crash could occur if user had lots of drawn trendlines on multiple panes and some of them had start date BEFORE first available bar and RT stream was frequently updating. Fixed.
  13. Make #pragma enable_static_decl is now private functionality. This means that it will work just fine but we don't provide any help/support except of what is written in readme/manual
  14. New Analysis: you can now copy dates between "From" and "To" date pickers (right click menu or Ctrl+C/Ctrl+V)
  15. UI: Bar replay From-to controls support copy-paste (right click or Ctrl+C/Ctrl+V)
  16. UI:added preprocessor color picker in Tools->Preferences, "Editor"
  17. 6.27.1 fix: In 6.27.0 VarSet did not work properly. Fixed.
  18. 6.27.1 fix: Backtest: since 6.25 crash could occur if “detailed log” was enabled and trade was not entered due to unsufficent funds because format string was not matching arguments. Fixed.

CHANGES FOR VERSION 6.26.0 (as compared to 6.25.0)

  1. AFL: new static keyword: declare identifier as static variable - a little 'revolution' in static variable use, declare variable as static and use as 'regular' variable, no need to call functions
  2. AFL Editor: contrast of error location indicator on dark backgrounds increased
  3. AFL Editor: C-style comments /* ... */ are now foldable in the editor
  4. AFL Editor: new menu choices View->Fold Comments / Unfold Comments - allow to fold/unfold all multi-line comments (enclosed with /* .... */)
  5. AFL: added constants notifyClicked, notifySetFocus, notifyKillFocus, notifyHitReturn, notifyEditChange, notifySelChange, notifyMouseEnter, notifyMouseLeave
  6. AFL: Another protection against users shooting themselves in foot, VarSet/VarGet now displays error when you try to use characters different than A-Z, 0-9 and '_' in variable names
  7. AFL: Attempt to use single subscript on matrix variable now results in error message "Accessing Matrix elements requires two subscript operators"
  8. AFL: Due to the fact that Windows may send WM_MOUSEMOVE message even if mouse did not move, AmiBroker now has internal check that prevents ReqestMouseMoveRefresh from triggering if mouse position did not change
  9. AFL: GetLastOSError (for getting last error message from Windows)
  10. AFL: GuiButton and GuiToggle in native OS style use background color of the chart for small border instead of default grey
  11. AFL: GuiButton/GuiCHeckBox/GuiToggle/GuiRadio support now new events MouseEnter (64) and MouseLeave(128) which detect hovering without need for constant refreshes
  12. AFL: GuiCheckBox and GuiRadio now support custom colors of text and background
  13. AFL: In 6.25 Gui* keyboard navigation interferred with delete key and possibly other shortcuts due to the way how windows works. Implemented workaround so keys are only intercepted if child window (control) has focus.
  14. AFL: In 6.25 Gui* keyboard navigation was turned on by default, now it is off by default but can be turned on if you use SetOption("GuiEnableKeyboard", True )
  15. AFL: In 6.25 GuiGetCheck returned -1 on unchanged. Now it returns only 0 (unchecked) or 1 (checked)
  16. AFL: In case of Windows INET API error, Internet* functions now report Warning 507 instead of generic error 47. Warning 507 is Level-3 warning, i.e. editor-only, which means it will pop up in the formula editor, but won't break execution in runtime
  17. AFL: Now can use subscript operator [ ] on references to arrays and matrices
  18. AFL: Passing by reference does not create nested references in user-defined function calls
  19. AFL: VoiceSetRate( rate ) - sets SAPI voice (speech synthesis) rate. Rate of 0 (zero) is "normal", negative is slower, positive is faster (allowable range -10..+10)
  20. AFL: VoiceSetVolume( volume ) - sets SAPI voice (speech synthesis) volume (0..100)
  21. AFL: VoiceWaitUntilDone( timeout ) - waits until voice has finished speaking or specified timeout (1..100ms) has elapsed. Returns True if voice finished, False if the timeout elapsed
  22. broker.master file is saved to a new name and renamed later to avoid corruption when Windows decides to shutdown, restart or sleep during save
  23. Dev: 64-bit new compiler (VC2017) broke backward compatibility with singletons that UI lib uses causing infinite loop when High Contrast scheme was used. Workaround implemented.
  24. Misc: 64-bit: Restored correct manifest (from pre6.22) with compat records so Win 10 does not lie about version number and re-added 24-bit large PNG icon
  25. New Analysis: Added support for clickable links. If you put @link URL in any cell of Analysis result list it creates a clickable row. If you double click on the row while holding down ALT key it will open the link

CHANGES FOR VERSION 6.25.0 (as compared to 6.22.0)

  1. 64-bit: In 6.22 the array division could produce 1ulp (units at least place) rounding errors due to too excessive new VC++2017 compiler optimizations. Workaround implemented to avoid that.
  2. Added support for formatDateTimeISON (ISO format NO dashes: YYYYMMDD for end of day and YYYYMMDD HHMMSS for intraday)
  3. AFL Editor: added one-time message "In the Debug mode number of bars is limited to 200 bars. You can change it in Tools->Preferences, Debugger tab" because users don't read docs
  4. AFL: ApplyStop now has 8th argument: ActivationFloor that defines the amount of profit (in dollars or percents, according to stopmode) that must be exceeded before stop is activated
  5. AFL: Gui* - controls are created in the order of occurence in AFL formula (instead shuffled or reverse as in previous version)
  6. AFL: Gui* - keyboard navigation is now enabled (you can tab between controls and use arrows to navigate control groups such as radio boxes)
  7. AFL: IsNull() accepts matrix input and returns 0 (False), i.e. "variable is not null" if variable is of matrix type
  8. AFL: math functions such as sin(), sqrt(), etc can now be applied to matrices (element-wise operation) (previously such attempt resulted in access violation)
  9. AFL: New feature: Passing arguments as reference (allows modification of arguments passed - easy way to return multiple values), to pass by reference use & (address-of) operator before variable identifier
  10. AFL: new function GuiCheckBox - creates check box
  11. AFL: new function GuiGetCheck( id ) - gets 'checked' or "ON" state of toggle, checkbox and radio buttons
  12. AFL: new function GuiRadio - creates radio button
  13. AFL: new function GuiSetCheck( id, checked ) - sets 'checked' or 'ON' state of toggle, checkbox and radio buttons
  14. AFL: new function GuiSetFont( "fontface", size )
  15. AFL: new function GuiToggle - creates toggle button (like normal button but it toggles between "on" and "off" state with each click)
  16. AFL: SetOption("OptimizeSaveParams", True ); - turns on generation of AFL file that contains values of optimization parameters producing best result. The generated file has the same name as formula run but has .opt.afl extension
  17. AFL: When using TimeFrame functions, QuickAFL now uses ratio of requested_interval/current_interval multipled by 30 to better estimate required bars
  18. Analysis: Detailed log displays information about ignored ScaleIn/Outs because of insufficient funds or trade size constraints
  19. Analysis: Detailed log now displays all warnings about skipped/ignored signals in RED color so they are easier to spot
  20. Data: when performing X:Y split and X or Y exceeded 255 the factor was incorrectly displayed (negative) in the Symbol window. Fixed.
  21. formatDateTimeISO and formatDateTimeISON added to syntax highlighter definitions
  22. Scheduler: Repeat "Daily" mode repeated batch run every day even if some days were unchecked. Fixed.
  23. UI: Place Order dialog - allows typing stop distances smaller than 0.1 now
  24. UI: Prefs/Charting: Turning on "Collapse parameter sections" option causes all sections in Parameter window to be collapsed (NOT good idea for newbies as they wont see the controls !)
  25. Web Research: many HTML5 pages did not display properly because of the fact that web browser used old IE7 mode. Now browser uses IE11 mode at minimum for proper HTML5 rendering

CHANGES FOR VERSION 6.22.0 (as compared to 6.21.0)

  1. 64-bit: migrated all code to new compiler VC++2017 which seems to produce better code for x64 resulting in 30...50% speed improvements for many AFL functions. The only negative seems to be much bigger runtime libs
  2. 64-bit: AFL: Sum() function 2x faster
  3. 64-bit: AFL: Max() and Min() functions 8x faster
  4. 64-bit: AFL: Ref() funciton 2x faster
  5. 64-bit: AFL: MACD(), ROC(), StDev(), LinearReg() and many other functions faster by 30-50%
  6. AFL: GetExtraData does not trigger code check and profile warning about referencing future quotes if plugin implements new GetExtraDataEx function
  7. AFL: GuiEdit complained about 2nd parameter instead of 1st (being less than zero)

CHANGES FOR VERSION 6.21.0 (as compared to 6.20.1)

  1. AFL: decreased memory fragmentation when user changes type of variable from array to scalar and back thousands of times
  2. AFL: GuiButton( "Text", id, x, y, width , height , notifyflags ) - creates a button
  3. AFL: GuiEdit( id, x, y, width, height, notifyflags ); - creates an edit field
  4. AFL: GuiGetEvent( num, what = 0 )
  5. AFL: GuiGetText( id ) - get text from control
  6. AFL: GuiSetColors( idFrom, idTo, border , clrText = -1, clrBack = -1, clrBorder = -1, clrSelText = -1, clrSelBack = -1, clrSelBorder = -1, clrHoverText = -1, clrHoverBack = -1, clrHoverBorder = -1, clrDisText = -1, clrDisBack = -1, clrDisBorder = -1
  7. AFL: GuiSetText( "text", id ) - set text of the control
  8. AFL: RequestMouseMoveRefresh() - request formula execution / refresh when mouse is moved INSIDE given chart pane (so it only triggers for ONE window under the cursor)
  9. If Quote.exe is missing and AmiBroker can't do auto-update of quotes, a detailed information is displayed of where it expects Quote.exe file to be present
  10. Plugin loading changed: first AmiBroker attempts to load plugins for "Plugins" subfolder from where Broker.EXE file is located (new behavior) and if subfolder is NOT found, it then defaults to old behavior (using "Plugins" subfolder under current working

KNOWN ISSUES:

  1. None

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

AmiBroker 6.28.0 BETA released

Stability: Rank 3 - regular BETA should work fine in most environments

This is a BETA version. Make a backup first

A new beta version (6.28.0) of AmiBroker, with lots of new AFL functionality has been released.

32-bit version:
http://www.amibroker.com/members/bin/ab6280beta.exe
(2 349 088 bytes)

64-bit version:
http://www.amibroker.com/members/bin/AmiBroker6280x64.exe
(10 687 792 bytes)

If you can not log in into members' area please get your new password by filling the form at: http://www.amibroker.com/login.html

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

UPGRADE POLICY
This version is a free upgrade only for users who registered AmiBroker after February 17, 2016. Users who registered earlier, would need to purchase license upgrade. To find out the version you currently have use Account Information page at http://www.amibroker.com/members/info.php

Remember to BACKUP YOUR FILES FIRST !
Note that this version can only be installed onto previous full installation of version 6.20 or higher from http://www.amibroker.com/download.html

FEATURE HIGHLIGHT 6.28

6.28 is focused on AFL improvements. See CHANGE LOG for details.

FEATURE HIGHLIGHT 6.27

6.27 is focused on improvements of features introduced earlier. See CHANGE LOG for details.

FEATURE HIGHLIGHT 6.26

This version brings static variable declaration, new Voice functions, clickable links in Analysis result list, comment folding in the editor, new mouse hover notifications in GUI controls (notifyMouseEnter / notifyMouseLeave), and many many more - make sure to check CHANGE LOG below.

FEATURE HIGHLIGHT 6.25

This version brings new Gui controls (toggle button, checkbox, radio button), new AFL functions, passing variables by reference, Auto-optimization framework, HTML5 compatibility in Web Research and many more.

FEATURE HIGHLIGHT 6.22

This version is experimental because we are migrating 64-bit version to brand new compiler (VC++ 2017). Such migrations pretty often brings some compatibility risks therefore backup is highly recommended (although you can always go back by just installing previous version). We needed to migrate not only the program itself but many internal libraries taking care not to break backward compatibility.

Note that migration does NOT affect 32-bit version. It is still compiled with old compiler.

Why do we migrate to new compiler with 64-bit version?

  1. New compiler supports new CPU instructions (SSE3/AVX) that we can use to offer better performance
  2. According to our tests new compiler support produces faster code by itself (better optimizations, auto-vectorization, etc)
  3. New compiler is better with error checking (less bugs to slip through)
  4. We don't need to care about compatibility with pre-Vista systems in 64-bits version and all 64-bit capable CPUs are "modern" enough.

Why do we stay with old compiler in 32-bit version?

  1. New compiler does not produce code compatible with older operating systems (XP or earlier). Old compiler offers 100% compatibility with all Windows versions
  2. New compiler requires modern CPUs

Exact performance improvement is function dependent and hardware dependent. Many functions are faster by 30-50% but in some cases such as Min()/Max() functions as large as 8x speed up can be observed in 64-bit version.

FEATURE HIGHLIGHT 6.21
This version features preliminary support for native chart GUI (buttons and edits at the moment). Please be reasonable with Gui* functions and be aware of Windows limits. As all controls in Windows (buttons, edit boxes, etc) are actual Window objects they are subject to Windows limitation. And there is a limit of 10000 windows PER PROCESS. So don't try to create thousands of buttons (like a button for every bar of data) because first you will see huge performance decrease and next you will hit the limit and run into problems (crash), see https://blogs.msdn.microsoft.com/oldnewthing/20070718-00/?p=25963.

Best practice is to keep the number under 100-200. If you need more consider using low-level graphics instead.

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

Here is a sample formula that shows basic usage of Gui* functions:

GuiButton"Custom button"1104010030);

GuiButton"Dynamic "+Date(), 21204015030);
GuiButton"System button"33204010030);
GuiEdit5450401002031 );

GuiSetColors132colorRedcolorBlackcolorRedcolorWhitecolorBluecolorYellow
colorRedcolorBlackcolorYellow );

GuiSetColors33); // default (system) look

editText GuiGetText);

Title "Text entered: " editText "\nLast event: " GuiGetEvent0);

id GuiGetEvent0);
event GuiGetEvent0);

if( 
id == && event == GuiSetText("Button clicked",5);

CHANGES FOR VERSION 6.28.0 (as compared to 6.27.1)

  1. AFL: AddToComposite will issue error 69 if user passes field code other than "O", "H", "L", "C", "V", "I", "1", "2", or "X"
  2. AFL: another protection for users shooting themselves in the foot: AddToComposite will issue error 68 when user passes invalid symbol string (empty or with characters like comma or new line or tab)
  3. AFL: improved type checking for bad type of array arguments
  4. AFL: New warning 508 is displayed if same category type is used multiple times in the Filter settings window and formula calls GetOption("FilterInclude*") or GetOption("FilterExclude*). Code using such statements is incorrect for such filters.
  5. AFL: now you can pass references as arguments to built-in funcitons and they will be automatically dereferenced ("by value" sematics enforced)
  6. AFL: user-defined functions that return matrix reclaim memory faster than before to avoid large memory consumption on super-long loops calling them
  7. AFL: VarGet was not working properly with matrices on 64 bit version. Fixed.
  8. AQ: 3.29 - when current working directory is set incorrectly it sets it back to where it should be. Correct working dir is required for relative paths to work
  9. Backtest: interest earned on cash balances and charged on margin load is reported separately in backtest report now (if non-zero)
  10. Core: sizes of some hash tables increased to speed up lookups
  11. enable_static_decl created prefixes in original case (both upper and lowercase). Since StaticVar* functions always use lowercase names this made them unable to read declared statics other than all lowercase. Now declared variables are internally lowecase
  12. Gui control custom colors - defaults changed to use Windows default "hot" color (blue) for hover outline and (hover + selected) state is now drawn with hover border and text but 'selected' background
  13. GuiGetCheck returned 0 on owner draw toggle (custom colors) due to Windows limitation. Fixed.
  14. IB plugin: right mouse button click : Backfill Current was causing exception for symbols longer than 26 letters. Fixed. (Version 2.0.10)
  15. If user formula had run-time errors and produced zero trades the "Info" tab issued "Reporting has been turned off by SetOption" since there was no report generated but not because of option, but because of formula error. Fixed (the message is not displaye
  16. IQFeed: in mixed mode EOD data got preference if there is not enough room to fit all intraday and all eod in defined "number of bars"
  17. New Analysis: added 'notices' to Info tab that inform the user about potential problems and recommended actions. Currently one notice is displayed when user tries to use ranking or composites without enabling padding. Will add more notices in the future
  18. New Analysis: progress bar will not display "remaining time" until at least one step is completed. Also if remaing time is > 2 billion years it will display (unknown), and will report remaing time in million years if necessary (for example when user star
  19. Setup 64-bit: program and all plugins use newest compiler and newest VC++2017 runtime
  20. Setup 64-bit: activation key should work without installing VC2005 runtime
  21. UI: "OK" button appears on splash screen only if it does not auto-close

CHANGES FOR VERSION 6.27.0 (as compared to 6.26.0)

  1. AFL edit: preprocessor command (#include/#include_once/#pragma) are highlighted with different color to give visual clue that preprocessor command is NOT regular code
  2. AFL: #pragma enable_static_decl accepts prefix given in quotation marks (as regular string).
  3. AFL: due to changes in 6.25 BETA TimeFrameSet applied on 1-tick base interval could result in division by zero exception. Fixed.
  4. AFL: Error 66 has new meaning now. It is issued to prevent attempts to mix static declarations with old style access. Error 66. Variables with '---' prefix are inaccesible via StaticVarGet/Set/Remove in this formula. This prefix is reserved by #pragma ena
  5. AFL: Removed Error 66: invalid identifier from VarSet/VarGet. Instead of issuing error message, VarGet/VarSet automatically sanitizes invalid identifiers by replacing all characters other than digits and A-Z, a-z letters by underscore
  6. AFL: runtime tokens {chartid}, {symbol}, {interval} are now supported in #pragma enable_static_decl
  7. AFL: SetFormulaName - displays error 67 if user tries to use file-system forbidden characters for formula name
  8. AFL: StaticVarRemove() when called with EMPTY string: StaticVarRemove("") nullifies all static variables declared with static keyword within given formula
  9. AFL: when declared static variable is assigned the NULL value, it will be removed from memory when formula finishes
  10. ASCII importer: importer logged "ran of industry space" even if it didn't. Fixed.
  11. CBT: If user called ApplyStop AND calls EnterTrade from low-level backtest and did not switch backtestRegular mode to raw mode (which should be done), backtester would automatically turn on 2nd phase stops handling to prevent crash
  12. Charts: a crash could occur if user had lots of drawn trendlines on multiple panes and some of them had start date BEFORE first available bar and RT stream was frequently updating. Fixed.
  13. Make #pragma enable_static_decl is now private functionality. This means that it will work just fine but we don't provide any help/support except of what is written in readme/manual
  14. New Analysis: you can now copy dates between "From" and "To" date pickers (right click menu or Ctrl+C/Ctrl+V)
  15. UI: Bar replay From-to controls support copy-paste (right click or Ctrl+C/Ctrl+V)
  16. UI:added preprocessor color picker in Tools->Preferences, "Editor"
  17. 6.27.1 fix: In 6.27.0 VarSet did not work properly. Fixed.
  18. 6.27.1 fix: Backtest: since 6.25 crash could occur if “detailed log” was enabled and trade was not entered due to unsufficent funds because format string was not matching arguments. Fixed.

CHANGES FOR VERSION 6.26.0 (as compared to 6.25.0)

  1. AFL: new static keyword: declare identifier as static variable - a little 'revolution' in static variable use, declare variable as static and use as 'regular' variable, no need to call functions
  2. AFL Editor: contrast of error location indicator on dark backgrounds increased
  3. AFL Editor: C-style comments /* ... */ are now foldable in the editor
  4. AFL Editor: new menu choices View->Fold Comments / Unfold Comments - allow to fold/unfold all multi-line comments (enclosed with /* .... */)
  5. AFL: added constants notifyClicked, notifySetFocus, notifyKillFocus, notifyHitReturn, notifyEditChange, notifySelChange, notifyMouseEnter, notifyMouseLeave
  6. AFL: Another protection against users shooting themselves in foot, VarSet/VarGet now displays error when you try to use characters different than A-Z, 0-9 and '_' in variable names
  7. AFL: Attempt to use single subscript on matrix variable now results in error message "Accessing Matrix elements requires two subscript operators"
  8. AFL: Due to the fact that Windows may send WM_MOUSEMOVE message even if mouse did not move, AmiBroker now has internal check that prevents ReqestMouseMoveRefresh from triggering if mouse position did not change
  9. AFL: GetLastOSError (for getting last error message from Windows)
  10. AFL: GuiButton and GuiToggle in native OS style use background color of the chart for small border instead of default grey
  11. AFL: GuiButton/GuiCHeckBox/GuiToggle/GuiRadio support now new events MouseEnter (64) and MouseLeave(128) which detect hovering without need for constant refreshes
  12. AFL: GuiCheckBox and GuiRadio now support custom colors of text and background
  13. AFL: In 6.25 Gui* keyboard navigation interferred with delete key and possibly other shortcuts due to the way how windows works. Implemented workaround so keys are only intercepted if child window (control) has focus.
  14. AFL: In 6.25 Gui* keyboard navigation was turned on by default, now it is off by default but can be turned on if you use SetOption("GuiEnableKeyboard", True )
  15. AFL: In 6.25 GuiGetCheck returned -1 on unchanged. Now it returns only 0 (unchecked) or 1 (checked)
  16. AFL: In case of Windows INET API error, Internet* functions now report Warning 507 instead of generic error 47. Warning 507 is Level-3 warning, i.e. editor-only, which means it will pop up in the formula editor, but won't break execution in runtime
  17. AFL: Now can use subscript operator [ ] on references to arrays and matrices
  18. AFL: Passing by reference does not create nested references in user-defined function calls
  19. AFL: VoiceSetRate( rate ) - sets SAPI voice (speech synthesis) rate. Rate of 0 (zero) is "normal", negative is slower, positive is faster (allowable range -10..+10)
  20. AFL: VoiceSetVolume( volume ) - sets SAPI voice (speech synthesis) volume (0..100)
  21. AFL: VoiceWaitUntilDone( timeout ) - waits until voice has finished speaking or specified timeout (1..100ms) has elapsed. Returns True if voice finished, False if the timeout elapsed
  22. broker.master file is saved to a new name and renamed later to avoid corruption when Windows decides to shutdown, restart or sleep during save
  23. Dev: 64-bit new compiler (VC2017) broke backward compatibility with singletons that UI lib uses causing infinite loop when High Contrast scheme was used. Workaround implemented.
  24. Misc: 64-bit: Restored correct manifest (from pre6.22) with compat records so Win 10 does not lie about version number and re-added 24-bit large PNG icon
  25. New Analysis: Added support for clickable links. If you put @link URL in any cell of Analysis result list it creates a clickable row. If you double click on the row while holding down ALT key it will open the link

CHANGES FOR VERSION 6.25.0 (as compared to 6.22.0)

  1. 64-bit: In 6.22 the array division could produce 1ulp (units at least place) rounding errors due to too excessive new VC++2017 compiler optimizations. Workaround implemented to avoid that.
  2. Added support for formatDateTimeISON (ISO format NO dashes: YYYYMMDD for end of day and YYYYMMDD HHMMSS for intraday)
  3. AFL Editor: added one-time message "In the Debug mode number of bars is limited to 200 bars. You can change it in Tools->Preferences, Debugger tab" because users don't read docs
  4. AFL: ApplyStop now has 8th argument: ActivationFloor that defines the amount of profit (in dollars or percents, according to stopmode) that must be exceeded before stop is activated
  5. AFL: Gui* - controls are created in the order of occurence in AFL formula (instead shuffled or reverse as in previous version)
  6. AFL: Gui* - keyboard navigation is now enabled (you can tab between controls and use arrows to navigate control groups such as radio boxes)
  7. AFL: IsNull() accepts matrix input and returns 0 (False), i.e. "variable is not null" if variable is of matrix type
  8. AFL: math functions such as sin(), sqrt(), etc can now be applied to matrices (element-wise operation) (previously such attempt resulted in access violation)
  9. AFL: New feature: Passing arguments as reference (allows modification of arguments passed - easy way to return multiple values), to pass by reference use & (address-of) operator before variable identifier
  10. AFL: new function GuiCheckBox - creates check box
  11. AFL: new function GuiGetCheck( id ) - gets 'checked' or "ON" state of toggle, checkbox and radio buttons
  12. AFL: new function GuiRadio - creates radio button
  13. AFL: new function GuiSetCheck( id, checked ) - sets 'checked' or 'ON' state of toggle, checkbox and radio buttons
  14. AFL: new function GuiSetFont( "fontface", size )
  15. AFL: new function GuiToggle - creates toggle button (like normal button but it toggles between "on" and "off" state with each click)
  16. AFL: SetOption("OptimizeSaveParams", True ); - turns on generation of AFL file that contains values of optimization parameters producing best result. The generated file has the same name as formula run but has .opt.afl extension
  17. AFL: When using TimeFrame functions, QuickAFL now uses ratio of requested_interval/current_interval multipled by 30 to better estimate required bars
  18. Analysis: Detailed log displays information about ignored ScaleIn/Outs because of insufficient funds or trade size constraints
  19. Analysis: Detailed log now displays all warnings about skipped/ignored signals in RED color so they are easier to spot
  20. Data: when performing X:Y split and X or Y exceeded 255 the factor was incorrectly displayed (negative) in the Symbol window. Fixed.
  21. formatDateTimeISO and formatDateTimeISON added to syntax highlighter definitions
  22. Scheduler: Repeat "Daily" mode repeated batch run every day even if some days were unchecked. Fixed.
  23. UI: Place Order dialog - allows typing stop distances smaller than 0.1 now
  24. UI: Prefs/Charting: Turning on "Collapse parameter sections" option causes all sections in Parameter window to be collapsed (NOT good idea for newbies as they wont see the controls !)
  25. Web Research: many HTML5 pages did not display properly because of the fact that web browser used old IE7 mode. Now browser uses IE11 mode at minimum for proper HTML5 rendering

CHANGES FOR VERSION 6.22.0 (as compared to 6.21.0)

  1. 64-bit: migrated all code to new compiler VC++2017 which seems to produce better code for x64 resulting in 30...50% speed improvements for many AFL functions. The only negative seems to be much bigger runtime libs
  2. 64-bit: AFL: Sum() function 2x faster
  3. 64-bit: AFL: Max() and Min() functions 8x faster
  4. 64-bit: AFL: Ref() funciton 2x faster
  5. 64-bit: AFL: MACD(), ROC(), StDev(), LinearReg() and many other functions faster by 30-50%
  6. AFL: GetExtraData does not trigger code check and profile warning about referencing future quotes if plugin implements new GetExtraDataEx function
  7. AFL: GuiEdit complained about 2nd parameter instead of 1st (being less than zero)

CHANGES FOR VERSION 6.21.0 (as compared to 6.20.1)

  1. AFL: decreased memory fragmentation when user changes type of variable from array to scalar and back thousands of times
  2. AFL: GuiButton( "Text", id, x, y, width , height , notifyflags ) - creates a button
  3. AFL: GuiEdit( id, x, y, width, height, notifyflags ); - creates an edit field
  4. AFL: GuiGetEvent( num, what = 0 )
  5. AFL: GuiGetText( id ) - get text from control
  6. AFL: GuiSetColors( idFrom, idTo, border , clrText = -1, clrBack = -1, clrBorder = -1, clrSelText = -1, clrSelBack = -1, clrSelBorder = -1, clrHoverText = -1, clrHoverBack = -1, clrHoverBorder = -1, clrDisText = -1, clrDisBack = -1, clrDisBorder = -1
  7. AFL: GuiSetText( "text", id ) - set text of the control
  8. AFL: RequestMouseMoveRefresh() - request formula execution / refresh when mouse is moved INSIDE given chart pane (so it only triggers for ONE window under the cursor)
  9. If Quote.exe is missing and AmiBroker can't do auto-update of quotes, a detailed information is displayed of where it expects Quote.exe file to be present
  10. Plugin loading changed: first AmiBroker attempts to load plugins for "Plugins" subfolder from where Broker.EXE file is located (new behavior) and if subfolder is NOT found, it then defaults to old behavior (using "Plugins" subfolder under current working

KNOWN ISSUES:

  1. None

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

Next Page »