AmiBroker 6.40.4 Read Me
February 2, 2022 13:17
Backup your data files and entire AmiBroker folder
first!
INSTALLATION INSTRUCTIONS
Run the installer and follow the instructions.
Then run AmiBroker. You should see "AmiBroker 6.40.4" written
in the About box.
See CHANGE LOG below for detailed list of changes. Note that only changes
that affect end-user directly are listed here. Internal code changes/refactoring
is usually not mentioned.
UPGRADE POLICY: This version is a free upgrade for users
who purchased AmiBroker license after December 30, 2019.
WHAT'S NEW IN 6.40:
-
QuickGFX - brand new chart rendering engine
delivering
upto 100x performance boost in chart rendering time as compared to GDI.
GDI rendering speed also improved upto 2x.
In-house developed QuickGFX direct rendering technology completely bypasses
Windows GDI and offers amazing 10x-100x performance gain as compared to GDI
rendering
To enable QuickGFX experimental tech go to Tools->Preferences, "Miscellaneous" tab,
click "Experimental: Use QuickGFX render" and press "Apply" or "OK"
You can see when it is enabled, chart timing footnote (when enabled) will
say "QuickGFX render ...ms" instead of "GDI render ...ms"
This is PROFESSIONAL edition feature only. Users of Standard version would
need to purchase upgrade in order to use this feature.
-
Automatic Analysis improvements
-
Easy Sequencing of multiple Analysis actions via
#pragma sequence(scan,exploration)
and new "Run Sequence" button
without need to write batches. Allows for example single click two-step
analysis runs creating composites or static variables in first step
and using them in second step
- Backtester - 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 disabled)
- huge speedups in running large explorations, dark theme and 5x speed
up for rendering huge list views like (as compared to 6.31)
-
AmiBroker Formula Language new functions / features
- FindIndex( array, value, start_from
= 0, dir = 1 ) - find index of array item matching specified value
- BarsSinceCompare( past, comparison,
current ) - for every bar, compare past array values with current bar
value and return the number of bars since last time comparision was
true
- InternetSetHeaders( "headers" )
- set custom HTTP headers for subsequent web requests
- InternetSetOption( option,
value ) - set HTTP option for internet session
- MxCopy() - in-place copy of rectangular
blocks from one matrix to the other (copy portions of one matrix to
the other matrix)
- _exit() - gracefully ends AFL execution
at the point of the call
- InternetGetStatusCode()
- returns HTTP status code of last InternetOpenURL or InternetPostRequest
call
- Chr( code ) returns string representing
single character of given ascii code
- GetObject( path, class ) providing
functionality equivalent to JScript GetObject and VBScript GetObject
- 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
- inverf(x) - inverse of erf function
- erf(x) - computes Error function https://en.wikipedia.org/wiki/Error_function
- SafeDivide( x, y, valueifzerodiv
)- safe division that handles division by zero using special handling
(replace result with user-defined value)
- new Javascript engine (Chakra) featuring native JSON support (EnableScript("chakra"))
-
AmiBroker Formula Language improvements, enhancements and fixes
- exponentation operator is made 50-100x faster in cases of small integer
exponents of 2, 3, 4 and 5
- GuiSetText() function avoids sending change notifications to prevent
update loops
- ADX function vectorized (2x faster than before)
- added extra parameter for Error() function to stop execution
- internal function signatures changed to allow flexible ordering of
arguments regardless of their type and varargs with
less overhead
- GfxDrawImage with PNG images exclusive file lock removed
- parser warns if empty body is used in 'for' or 'while' statements
- support for gzip and deflate compression in Internet functions
- plugin interface backward compatibility with changing function signatures
- more runtime checks to prevent user errors and other fixes
-
Batch window new features / improvements
- Clipboard Cut/Copy/Paste implemented in batch editor
- Edit->Delete (from main menu) and Edit-Delete All implemented
for completeness
- list view uses virtual mode now (owner data)
- added "add results to watchlist" action / WatchlistAddResults
- added "clear watchlist" action / WatchlistClear
- added "comment" action
- added optional parameter to Data Import ASCII command to allow specify
format definition file
- added optional parameter to Execute and Wait command to specify current
working directory for command
- 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.
-
AFL editor enhancements
- 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)
- 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)
- 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
- when an runtime error is detected debugging session the message bar
shows now number of detected errors (as it did previously during normal "verify"
- when dark mode list views are used watch window default text color
was black making it hardly visible, changed to white
-
User Interface new features and improvements:
- Dark theme for 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
- 5x speed up for rendering huge list views (bypassing Windows rendering)
- Preferences: added Text Tool font setting independent from Axis font
(Preferences->Miscellaneous page)
- Charts: improved text tool with per-study selectable font size
- Parameter names are not truncated in HighDPI screens
-
Database improvements
- new 8-digit ICB structure implemented: https://www.ftserussell.com/data/industry-classification-benchmark-icb
- Database Purify is 10x faster
- OLE: added Stock.Quotations.Adjust function to perform adjustments
programmatically OLE: added Stock.Quotations.Adjust() function. long
Adjust(BSTR pszFieldList, float fMultiplier, float fOffset, DATE dDateTime,
boolean bBefore)
CHANGE LOG
CHANGES FOR VERSION 6.40.4 (as compared to 6.40.3)
- Charts: on specifically prepared formulas producing sparse array a moire
effect with histogram chart can be seen under rare circumstances. Fixed.
- UI:
when Tickerbar was customized in previous versions it could come up as
empty in 6.40.2 until it is RESET via customize dialog. Fixed.
- QuickGFX, simple
bar chart, width > 2, end caps are drawn to ensure that
open/close ticks are visible in high zoom out levels
- Toolbar Zoom in/out auto-repeat
period decreased to 100ms (from 150ms)
- QuickGFX:
styleGradient wasn't supported in 6.40.2-6.40.3. Now it works again (fallback
to GDI)
- Docs: added GuiSetColors to help file
- Charts: 3-color gradient charts could
be drawn incorrectly if user-defined base line level was outside chart
Y axis range. Fixed
CHANGES FOR VERSION 6.40.3 (as compared to 6.40.2)
- OLE: new Quotations.Adjust could enter infinite loop. Fixed
- QuickGFX: fixed
division by zero on gradient fill when top == bottom
- QuickGFX: styleDashed
implemented
- UI: on HiDPI screens Tickerbar dropdown item height was too small
in 6.40.2. FIxed
- UI: Ticker bar has been reimplemented to allow quick handling
of millions of symbols (done in 6.40.2 but missing in change log)
- UI: Ticker
bar search / auto-complete is re-introduced (it was not working in 6.40.2
because TickerBar no longer uses standard combo box and combo box "built-in" features
were absent)
- UI: when Tickerbar was customized in previous versions it could
come up as empty in 6.40.2 until it is RESET via customize dialog. Fixed.
CHANGES FOR VERSION 6.40.2 (as compared to 6.40.0)
- AFL: regression new Error 72 was incorrectly generated when amount was
zero but mode was set to Disable (like in Equity.afl file). The combination
of zero
amount and disable is of course valid and error is no longer produced in
such case.
- New Analysis window: #pragma sequence(scan,backtest) - and new "Run
Sequence" button
to run same formula with same settings several times in sequence using different
modes
- Charts: QuickGFX rendering of cloud style charts is now 100x faster
- Charts:
GDI rendering of cloud style charts is now 2x faster
- 32-bit/Charts: x87 assembly
code used for faster conversion from float to int. This gives +20% performance
improvement in both GDI and QuickGFX rendering
modes
- 64-bit: the size of internal exit signal structure increased to allow
backtest with more than 1 million symbols (at the cost of increased RAM usage).
32-bit
version still uses smaller structure and 1 million symbol limit
- AFL Editor:
Defunct Print menu option removed from context (right-click) menu. Working
Print option is available in File->Print menu
- AFL: _SECTION_BEGIN() - section
name is checked against not allowed control characters
- AFL: array version
of ColorHSB function is 50% faster now
- AFL: new function BarsSinceCompare(
past, comparison, current ) - for every bar, compare past array values with
current bar value and return the number
of bars since last time comparision was true
- AFL: New warning 511 for incorrect
usage of IIF function: "Assignment
within IIF function arguments. Use IIF() return value instead"
- AFL: Param*()
functions check if user passed non-printable/control characters, that are
forbidden in parameter names and display appropriate error message
- AFL: Status("baseinterval")
- new field "baseinterval" returns
database base time interval setting in seconds
- AFL: Warning 501 (assignment
within conditional) is silenced if assignment is made to the variable that
wasn't intitialized before (i.e. it is first
assignment of given variable ever in code)
- ASCII import: combination of $HYBRID
1 without "autoadd" mode produces
an error on non-existing symbols now.
- Charts: 40% speedup in determination
of auto-scale min/max (signficantly affects chart rendering performance for
very large number of bars >500K)
- Charts: Bar-to-XPixel coordinate conversions
speeded up 3x by using assembly in 32-bit and _div64/__emul intrinsics
in 64-bit versions
- Charts: when QuickGFX was enabled multi-color title text
was slightly truncated at the color boundaries. Fixed.
- DB: when user renames
the symbol corresponding Note text file name is renamed accordingly now
- Fixed
regression introduced in 6.39 when the very last value in MA was non-Null
even if there was not enough data
- OLE: added Stock.Quotations.Adjust() function.
long Adjust(BSTR pszFieldList, float fMultiplier, float fOffset, DATE dDateTime,
boolean bBefore)
- QuickGFX: New lines in Title variables caused double spacing.
Fixed
- QuickGFX: styleHistogram was invisible for negative values. Fixed
- UI: Param
window, names of parameters are not tructated on HighDPI screens anymore
- When
worker thread attempted to read string from resources sometimes resource
handle was set incorrectly, this caused
COleException
/ unknown error.
Fixed by replacing faulty MS CString::LoadString implementation.
- QuickGFX: Line width > 1 implemented
- AFL: ADX/PDI/MDI protected against
division by zero when data are completely flat (H == L == C for long periods
of time)
- AFL: Warning 512 added to detect overusage of Foreign/SeForeign
calls
- Analysis report charts: regression: when QuickGFX was enabled, report charts
could cause exception. Fixed.
CHANGES FOR VERSION 6.40.0 (as compared to 6.39.1)
CHANGES FOR VERSION 6.39.1 (as compared to 6.39.0)
- 64-bit uses a bit faster float versions powf and modf instead of double
pow/mod for ^ and % operators (non integers)
- 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
- 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()
- 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
- 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)
- 64-bit: AmiBroker, AmiQuote, AFL Code Wizard migrated to newest VC++ 2019
for even better performance
- AFL Editor: @link commands are executed at mouse
up (instead of previous mouse down) to prevent unwanted text selection when
message boxes are dismissed
- 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)
- 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)
- 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
- 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"
- AFL Editor: when dark mode list views are
used watch window default text color was black making it hardly visible,
changed to white
- AFL/CBT: AmiBroker now displays an error when user passes
incorrect bar number to ProcessTradeSignals() instead of silently skipping
wrong arguments
- 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
- AFL: ADX() function vectorized in 64-bit version
(2x faster than before)
- AFL: backtester crashed when user incorrectly assigned
string value to BuyPrice/ShortPrice/CoverPrice arrays. Fixed.
- AFL: Error("text",
stop=False) function - added extra parameter to stop execution regardless
of "stop execution at first error" preference
setting
- AFL: FindIndex( array, value, start_from = 0, dir = 1 ) - find index of
array item matching specified value
Returns:
NUMBER - the index of matching array item
if value is not found in the array, the function returns -1
Parameters:
array - input data
value - what we are looking for
start - the index to start the search from
dir - the direction of the search, 1 is up, -1 is down
Notes:
start can be positive - then it refers to index number counting from the
beginning of array
or it can be negative then it refers to index counting from the END of
the array
// example find all indices when condition
was true
condition = Cross( C, MA( C, 20 )
);
// search forwards
printf( "Search
forwards:\n" );
for( index = 0;
( index = FindIndex( condition, True, index ) ) != -1;
index++ )
{
printf( "condition is
true at index %g\n", index );
}
// search backwards
printf( "Search
backwards:\n" );
for( index = -1;
( index = FindIndex( condition, True, index, -1 )
) != -1; index-- )
{
printf( "condition is
true at index %g\n", index );
}
- 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
- AFL: increased calculated bar requirements for Wilders()
function for better conformance with QuickAFL
- AFL: Last OS error code is set
by Internet* functions regardless of warning level so you can always retrieve
it using GetLastOSError()
- AFL: MA( C, BarCount ), StDev( C, BarCount ) return
non-Null value
- AFL: new field added to SetOption/GetOpion function calls "MaxPosValue" (per
backtest setting)
- AFL: new function InternetSetHeaders( "headers" )
- set custom HTTP headers for subsequent web requests
For example to enable GZIP compression you need to use:
INTERNET_OPTION_HTTP_DECODING = 65;
InternetSetOption( INTERNET_OPTION_HTTP_DECODING, 1 );
InternetSetHeaders("Accept-Encoding:
gzip, deflate");
- note that InternetPostRequest will automatically add "Content-Type:
application/x-www-form-urlencoded" header unless user specifies their
own Content-Type in the InternetSetHeaders call
- AFL: new function InternetSetOption(
option, value ) - set HTTP option for internet session. Internet Options can
be found here: https://docs.microsoft.com/en-us/windows/win32/WinInet/option-flags
// how to request and handle GZIP compressed HTTP
INTERNET_OPTION_HTTP_DECODING = 65;
InternetSetOption( INTERNET_OPTION_HTTP_DECODING, 1 );
InternetSetHeaders("Accept-Encoding:
gzip, deflate");
ih = InternetOpenURL("http://www.amibroker.com/news.html" );
if( ih )
{
while( ( text = InternetReadString(
ih ) ) != "" )
{
printf( "%s", text
);
}
InternetClose(ih);
}
- AFL: new function MxCopy
- for copying rectangular blocks from one matrix to the other (copy portions
of one matrix to the other matrix)
The function works in-place (ie. no allocation occurs - first argument is a
reference to existing array and that array content would be overwritten)
MxCopy( & dstmatrix, dst_start_row, dst_endrow, dst_start_col, dst_end_col,
src_matrix, src_start_row = -1, src_end_row = -1, src_start_col = -1, src_end_col
= -1 )
src_start/src_end values equal to -1 mean "same value as corresponding
dst_start/dst_end value"
To perform a copy the number of columns multiplied by number of rows in
source and destination "rectangles" must be the same
In other words:
(dst_end_row-dst_start_row+1)*(dst_end_col-dst_start_col+1) == (src_end_row-src_start_row+1)*(src_end_col-src_start_col+1)
- AFL: new function: _exit() - that gracefully
ends AFL execution at the point of the call
- AFL: new function: InternetGetStatusCode
function - returns HTTP status code of last InternetOpenURL or InternetPostRequest
call. HTTP status codes are listed here: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
// Example:
// NON existing page (should result in status code 404)
ih = InternetOpenUrl("http://www.amibroker.com/index3434.html" );
if( ih )
{
printf("HTTP status code:
%g", InternetGetStatusCode( ih ) );
InternetClose( ih );
}
else
{
printf("Internet connection
can not be open because: %s", GetLastOSError()
);
}
- 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
- Charts/Preferences: added Text Tool font setting
independent from Axis font (Preferences->Miscellaneous page)
- Charts: Text
Box tool supports user-selectable font size now (selectable in Study Properties
window)
- Database: new 8-digit ICB structure implemented: https://www.ftserussell.com/data/industry-classification-benchmark-icb
- Got
rid of obsolete "Request data on save" setting that wasn't
performing as expected
- 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 defaul
- 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)
- 64-bit version could produce "Invalid parameter" exception from
CRT after backtesting when symbols under test had forbidden characters in
them like "%". Fixed
- 64-bit version: address space layout randomization
disabled by /DYNAMICBASE:NO linker option to facilite easier crash location
finding
- 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.
- AFL: GetFnData("lastsplitdate") returns empty
val instead of zero if last split date is not set
- 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
- AFL: new function Chr(
code ) returns string representing single character of given ascii code
- AFL:
new function GetObject( path, class ) providing functionality equivalent
to JScript GetObject and VBScript GetObject
- 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
- AFL: StaticVarAdd when scalar value was added to already existing
static var array sometimes random value would appear. Fixed.
- 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
- Analysis: Maximum number of threads per single Analysis
window has been increased to 64 (from 32)
- Backtester: generation of Buy&Hold
stats was not working when "Allow
position shrinking" was turned OFF by the user and commission > 0.
Fixed
- Chart: Data window can now display upto 40 values per single chart pane
- Chart:
Horizontal line snap to open price (keypress O) or close price (keypress
C) was snapping to H-L instead. Fixed
- 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
- 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
- Plugins:
when AFL plugin crashes (throws structured exception) the editor and indicator
windows will display call stack for easier debugging of 3rd
party
plugins
- 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)
- UI: Listview sorting by (single) date column is now
10+ times faster
- 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)
- 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
- UI: MDI Close/Minimize/Restore buttons are now HighDPI
aware
- UI: MDI Tab client window buttons are now HighDPI aware
- UI: Minimized flicker
during docking panes resize by disabling Windows copy bits
- UI: Toolbar split-popup
buttons are now HighDPI aware
- x64 eSignal: reverted to more compatible version
compiled with VC2005
CHANGES FOR VERSION 6.35.1 (as compared to 6.35.0)
- When .abb file was saved in older version and was missing Param2 then Param
was incorrectly used as default value. Fixed.
- Changed threshold year for two
digit year data files to 25 (previously it was 20). So YY is now interpreted
as 19YY when YY < 25, otherwise it is
interpreted as 20YY
CHANGES FOR VERSION 6.35.0 (as compared to 6.31.0)
- AFL: new function inverf(x) - inverse of erf function
- AFL Editor: added function
navigation combo box in the toolbar - detects user defined functions and
allows to quicky navigate to function definition
- 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)
- AFL: new function erf(x) - computes Error function https://en.wikipedia.org/wiki/Error_function
- AFL: parser warns if
empty body is used in 'for' statement, like this: for( i = 0; i < 10;
i++) ; // extra semicolon at the end - empty body Warning 510
- AFL: parser
warns if empty body is used in 'while' statement, like this: while( condition
) ; // extra semicolon at the end - empty body Warning 510
- AFL: SafeDivide(
x, y, valueifzerodiv )- safe division that handles division by zero using
special handling (replace result with user-defined value)
- Batch: added optional
parameter to Data Import ASCII command to allow specify format definition
file
- Batch: added optional parameter to Execute and Wait command to specify
current working directory for command
- 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.
- Batch: Clipboard Cut/Copy/Paste implemented in batch editor
- Batch: Edit->Delete
(from main menu) and Edit-Delete All implemented for completeness
- Batch: list
view uses virtual mode now (owner data)
- 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
- UI: Analysis and RT quote window use now exactly
the same RGB values for up/down (green/red) colors for consistency
- UI: Custom
virtual listview (owner data) supports per-item data now (SetItemData/GetItemData
work with LVS_OWNERDATA)
- 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).
- 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
- UI: Implemented resizing of Listview
column customization dialog
CHANGES FOR VERSION 6.31.0 (as compared to 6.30.0)
- AFL: Access violation in PercentRank when period is wrong (Null/unitialized).
Now error 52 is displayed instead.
- AFL: InternetPostRequest now silently (or with warning
507 under debugger) returns NULL handle instead of error when remote server
responds with HTTP
Status 50x
- Analysis: manual column re-sorting could be bit off if scientific
output format (xxxEyyy) was used with different exponents. Fixed.
- ASCII importer
now handles LastSplitRatio of X:Y where X and Y are 1...32767 (previously
only 1..127)
- Batch: add "add results to watchlist" action / WatchlistAddResults
- Batch:
add "clear watchlist" action / WatchlistClear
- Batch: add "comment" action
- Core/DB: fixed access violation when
all data were removed while QuickData was turned on
- DebugView: eliminated
some internal messages from DebugView output (from release version)
- InternetPostRequest
- even if URL started with https, previous version wanted to connect to port
80, instead of 443. Fixed.
- UI/Listview: since 6.28 exception could occur if
single cell text length exceeded 1024 characters. Fixed.
- When database is
empty, ticker box displays <No symbol> grayed text
instead of blank or reminiscent of previous database symbol
If you experience any problem with this beta version please send detailed
description of the problem (especially the steps needed to reproduce it) to
support at amibroker.com