Monday, February 20, 2012

Amibroker 5.4 highlights


Version

  • Fully Multi-threaded charting.
    Fully Multi-threaded graphics.
    Massively parallel execution AFL (each chart in separate thread runs pane) * Allows to maximize speed and utilisation of modern multi-core / multi-CPU computers.
    Massively parallel execution of the AFL (each graph pane runs a separate thread) speed and a modern multi-core / multi-CPU to maximize the use of computers.
    For example on your 8-core Intel i7 CPU upto 8 times faster than charts in version will run 5:30. The AFL engine has been completely rewritten from the ground up to allow multiple instances of the engine running simultaneously.
    8-core Intel i7 processor, for example, the charts will continue until 8 times faster than version 5:30. AFL motor completely to allow for simultaneously running multiple instances of the engine from scratch, re-written.
    This not only enables but also enhances responsiveness of the entire application multithreading, as the formula used even in a badly-written chart user is not able to lock or slow the rest of the program. Multi-threading is ON by default. It can not be turned off by unchecking the "Multi-threaded charts" box in the Tools-> Preferences , "AFL" tab but it is strongly discouraged.
    This provides not only multiple but also improves the entire application response, and even used a graphical user formula is poorly written or too slow is not possible to lock the rest of the program. Multi-threading is on by default. This can be turned off in the "Multi-threaded graphics" box unchecking Tools -> Preferences , "AFL" tab, but definitely not recommended.
    Multi-threading should be ON if you want AmiBroker to operate at full speed.
    If you want to run at full speed multi-threading should be ON AmiBroker.
  • 12 new AFL functions
    12 new AFL functions
    • DateTimeAdd - adds specified number of seconds / minutes / hours / days to datetime
      DateTimeAdd - datetime to seconds / minutes / hours / days, adds a certain number of
    • HMA - Hull Moving Average
      HMA - Hull Moving Average
    • FIR - Finite Impulse Response filter
      FIR - Finite Impulse Response Filter
    • PERCENTRANK - calculate percent rank
      PERCENTRANK - compute the rank of
    • Lookup - search for bars with the array specified date / time
      Search - The specified date / time range of the bar with the search
    • FirstVisibleValue - get first visible value of the array
      FirstVisibleValue - the array to get the value of the first visible
    • LastVisibleValue - get out of the last visible array
      LastVisibleValue - the array to get the value of the last visible
    • InGICS - check if given symbol belongs to category specified GICS
      InGICS - check if a given symbol belong to the category mentioned GIC
    • GicsID - get information about GICS category
      GicsID - information about the GIC category
    • PlaySound - to play. WAV sound file
      PlaySound -. WAV audio file to play
    • ShellExecute - execute external program / ​​file
      ShellExecute - External program / ​​run the file
    • _DT - synonym of StrToDateTime
      _DT - synonymous with StrToDateTime
  • Quote Editor improvements and fixes: * Allows user to turn on / off time shift and editing timestamps down to milliseconds, fixed handling of the 12 hour (AM / PM) regional setting
    Quote Editor improvements and fixes: user / time stamps down the millisecond time scrolling and editing , 12-hour fixed processing (AM / PM) Lets you turn on the regional setting
  • Charting improvements: better looking labels value, low-level gfx functions speeded up 4 times.
    Graphical improvements: better value labels appear, four times the speed of low-level gfx functions.
  • Charting-related changes
    Graphics-related changes
    • Data Window and Data Readout is immediate and does not require the extra tooltip AFL execution (values ​​stored in RAM are required to display them during the normal chart available without need to refresh and re-run of the formula).
      Read data from the Data Window and emergency and extra AFL execution (re-run them without the need for a formula to display the values ​​that the current during normal graphics refresh and stored in RAM) does not require tooltip.
      Tooltip variable is now obsolete.
      Number variable is now obsolete.
      Plotting a line without tooltips to display custom values ​​you can use in the Plot () with styleHidden flag.
      If the flag styleHidden Land () without drawing a line that you can use tooltips to display special values.
    • AFL does not require the display execution Interpreation
      Interpreation screen does not require execution of the AFL
    • Inserting indicator parameters are orders of magnitude faster and resetting
      Installing the display and reset the parameters is an order magnitude faster
    • zoom setting is now saved chart layout file and restored when a layout is loaded in
      zoom setting of the graphics and the layout is now saved to the file is loaded back to a layout
  • OLE interface improvements (new IsBusy object and Import method Analysis method of automatically refreshes the UI)
    enhancements OLE interface (UI refreshes to automatically analyze the object and import method IsBusy new method)
  • The AFL engine improvements:
    The AFL engine improvements:
    • detect potential user mistakes that added warnings - such as the assignment within conditional expression or redundant calls to plot () function
      () Function calls to Land or unnecessary in such a conditional expression in assignment - was added to determine the potential user errors, warnings
    • added extra checks for invalid parameter values ​​for many functions and array subscript == null - error message is displayed You APPROPRIATE
      an appropriate error message is displayed - for many functions, and the number of invalid parameter values ​​to be added for an empty token == extra control
    • PlotText optimized to conserve memory and reduce execution time by skipping invisible parts
      Protect and reduce execution time by skipping invisible parts PlotText memory optimized for
  • Fixes Account manager
    Account manager fixes
  • improved compatibility with Windows 7 (high-DPI aware manifest, compatibility with Internet Explorer 9)
    Better compatibility with Windows 7 (high-DPI aware of the manifest, compatibility with Internet Explorer 9)
  • 64bit-specific fixes (including fixing problems with 3rd party DLLs)
    64bit custom fixes (fixing problems with 3rd party DLL included)
  • appearance in new themes and many other improvements and fixes
    themes of innovation and a new look and many other fixes
DATETIMEADD
- Adds specified number of seconds / minutes / hours / days to datetime
- To Datetime seconds / minutes / hours / days, adds a certain number of 
Date / Time
SYNTAX
DateTimeAdd (datetime, amount, interval = inDaily)
DateTimeAdd (datetime, amount, range = inDaily)
RETURNS
The function adds specified amount of 'Intervals' to datetime input array.
Datetime function input array, 'ranges' adds a certain amount.
Allows for example to calculate the datetime back 5 days or 13 months into the future.
5 days or 13 months to calculate the future again, for example datetime provides.
INPUT:
INTRODUCTION:
  • datetime - scalar or array - the datetime value to add to (for example returned by Now (), DateTime () or StrToDateTime / _DT or ConvertDateTime functions)
    datetime - scalar or array - ((Now, returning for example), Date () or StrToDateTime / ConvertDateTime _DT or functions), add a datetime value
  • amount - number of 'Intervals' to add (seconds / minutes / hours / days / etc - Depending on interval-parameter)
    amount - add to the 'interval' number (seconds / minutes / hours / days / etc - depend on the parameter range)
  • interval - specifies unit you want to add, units are supported in1Second, in1Minute, inHourly, inDaily, inWeekly, inMonthly, inQuarterly, inYearly
    range - specifies the unit you want to add, support units in1Second, in1Minute, inHourly, inDaily, inWeekly, inMonthly, inQuarterly, has inYearly
RETURNS:
RETURNS: 
datetime (scalar or array) - returned depends on input type
datetime (scalar or array) - returns the input depends on the type of 

EXAMPLE
EXAMPLE / / Example 1: 

x = Now ( 5 ); 
printf ( "11 days from the now" + DateTimeToStr ( DateTimeAdd (x, 11 , inDaily )) 

/ / Example 2 (commentary): 

x = Now ( 5 ); 
printf ( "now is" + DateTimeToStr (x)), 

for (shift = - 12 ; shift <= 12 ; shift + +) 
{ 
printf ( "% g seconds from now is" + DateTimeToStr ( DateTimeAdd (x, shift, 1 )) + "\ n" , shift); 
printf ( "% g minutes from now is" + DateTimeToStr ( DateTimeAdd (x, shift, in1Minute )) + "\ n" , shift); 
printf ( "% g hours from now is" + DateTimeToStr ( DateTimeAdd (x, shift, inHourly )) + "\ n" , shift); 
printf ( "% g days from now is" + DateTimeToStr ( DateTimeAdd (x, shift, inDaily )) + "\ n" , shift) ; 
printf ( "% g weeks from now is" + DateTimeToStr ( DateTimeAdd (x, shift, inWeekly )) + "\ n" , shift); 
printf ( "% g months from now is" + DateTimeToStr ( DateTimeAdd (x, shift , inMonthly )) + "\ n" , shift); 
printf ( "% g quarters from now is" + DateTimeToStr ( DateTimeAdd (x, shift, inQuarterly )) + "\ n" , shift); 
printf ( "% g years from now is " + DateTimeToStr ( DateTimeAdd (x, shift, inYearly )) + "\ n \ n" , shift); 

}
SEE ALSO
SEE
DateTimeDiff () function, DateTimeToStr () function, DateTimeConvert () function, DateTime () function
 HMA
- Hull Moving Average
Moving averages, summation
Moving averages, the total

SYNTAX
HMA (array, range)
RETURNS
ARRAY
FUNCTION
Implements Hull Moving Average.

Hull Moving Average applies.
It is functionally equivalent to the following, code:

This is functionally equivalent to the following code: function HMA_AFL (array, period) 
{ 
fast = WMA (array, period / 2 ), 
slow = WMA (array, period); 
return WMA ( 2 * fast - slow, sqrt (period)); 
} 
EXAMPLE

SEE
MA () function, WMA () function
MA () function, WMA () function, as you can see HullMovingAverage 5:40 AmiBroker version is now put into service with the indicator can write a single line!! FIR

- Finite Impulse Response filter
Moving averages, summation
Moving averages, the total

SYNTAX
FIR (array, coefficients, size)
FIR (array, coefficients, size)
RETURNS
ARRAY

FUNCTION
This function implements the general-purpose Finite Impulse Response filter (FIR) http://en.wikipedia.org/wiki/Finite_impulse_response

This function, general-purpose Finite Impulse Response filter (FIR) applies http://en.wikipedia.org/wiki/Finite_impulse_response 

The output is call the convolution of the input table with coefficents (impulse response table).
Output and input coefficents ARAY table (table impulse response) is a convolution. 

Necessary if the function performs automatic normalization of the coefficient table (if its sum is not 1)
(He is not a sum) if necessary, automatically normalize function makes the coefficient table 

INPUTS:
INPUTS:
  • array - array to be smoothed input
    Array - The input sequence to be corrected
  • coefficients - array of FIR coefficients
    coefficients - number of FIR coefficients
  • size - number of coefficients (filter_order + 1)
    size - the number of coefficients (filter_order + 1)
It is functional (but 2 + times faster) following, the AFL equivalent of:
(But 2 + times faster), the AFL following equivalent functional: function FIR_AFL (input, coeff, size) 
{ 
result = 0 ; 
sumcoeff = 0 ; 
for (i = 0 ; i < min (size, BarCount ); i + +) 
{ 
sumcoeff + = coeff [i]; 
result + = coeff [i] * Ref (input, - size + i + 1 ); 
} 
return result / sumcoeff; 
} 
EXAMPLE
EXAMPLE / / for example 5 bar weighted moving average can be written: 
coeff [ 0 ] = 1 ; 
coeff [ 1 ] = 2 ; 
coeff [ 2 ] = 3 ; 
coeff [ 3 ] = 4 ; 
coeff [ 4 ] = 5 ; 

FIR ( Close , coeff, 5 ); / / Another example: FIR Filter with ALMA is considered / / shifted Gaussian coefficents can be implemented as follows: functionALMA_AFL (input, range, offset, sigma) 
{ 
local m, im, s, Coeff , 

m = floor (Offset * (range - 1 )), 
s = range / sigma; 

for (i = 0 ; i < min (range, BarCount ); i + +) 
{ 
im = i - m; 
Coeff [i] = exp (- (im * im) / ( 2 * s * s)); 
} 
return FIR (input, Coeff, range); 
} 

PERCENTRANK
- Calculate percent rank
- Percentage calculating rank 

SYNTAX
PERCENTRANK (array, range)

PERCENTRANK (array, range)
RETURNS

RETURNS
ARRAY

ARRAY
FUNCTION

FUNCTION
INPUTS:
Aarray - input data
  • Array - the data entry
  • range - range lookback
    range - range of lookback
Returns percent rank (0 .. 100) of the current element of the array with all elements over the specified range.
Element in the array gives the rank of all elements of the specified range (0 ... 100). 

A value of 100 indicates that the current element of the array is the Highest lookback for the given range, while a value of 0 indicates that the current value is the lowest range for the given lookback.

A value of 0 indicates that the current value is the lowest for the lookback interval value of 100, the highest for the range of the array element indicates that the lookback.
It is equivalent (but 2x faster) to:

This is equivalent (but faster than 2x) to: function PercentRank2 (Data, Periods) 
{ 
count = 0 ; 
for (i = 1 ; i <= Periods; i + +) 
{ 
Count + = Data> Ref (Data,-i); 
} 
return 100 * Count / Periods; 
}

LOOKUP (SEARCH)

Lookup (array, datetime, mode = 0)
Search (array, datetime, mode = 0)
RETURNS

RETURNS
NUMBER

NUMBER
FUNCTION

FUNCTION
The function searches for the bar with specified datetime and returns the value from the same position of the input array.

The datetime function returns the value from the same position with the bar looks and the input array. 

Parameter 'mode' search is performed Decides how exact match is not found in the case when:
Parameter 'mode' when searching for an exact match is found, how to decide when:
  • mode = 0 - find exact match, otherwise return null
    mode = 0 - to find an exact match, otherwise return null
  • mode = -1 - find exact match, otherwise return nearest predecesor (past last bar is if it will return a datetime value last bar)
    mode = -1 - to find an exact match, otherwise the nearest predecesor (datetime the last bar of the previous bar, the value of past returns) return
  • mode = -2 - find exact match, otherwise return nearest predecessor EXCEPT the very last bar (last bar if past is searched, it will return a datetime Null)
    mode = -2 - to find an exact match, otherwise the closest ancestor of the last bar EXCEPT (called datetime the last bar will return to the past while she is empty) return
  • mode = 1 - find exact match, otherwise return nearest successor (first bar, it will return if before first bar is datetime value)
    mode = 1 - find an exact match, otherwise the nearest successor (the first bar before the first bar returns datetime) return
  • mode = 2 - find exact match, otherwise return nearest successor EXCEPT the very first bar (first bar before if it is searched, will return a datetime Null)
    mode = 2 - find an exact match, otherwise the closest successor to the first bar EXCEPT (datetime sought before the first bar is empty it will return to) return
This function uses a binary search and it is very fast many times faster than previous methods such as the AFL-based FindValueAtDateTime () presented in the past.

This function uses a very fast and many times faster than binary search FindValueAtDateTime presented in the past (), such as the AFL-based method is faster than before.
Any call to FindValueAtDateTime (input, dt, value) can be replaced now with Lookup (input, value) (here is no need to pass dt-datetime).

Any call for FindValueAtDateTime (input, dt, value) now search (input, value) (where there is no need to pass a datetime dt-) can be replaced with.
NOTE: This function does not affect required QuickAFL bars, bars that therefore it will only search in arrays are actually loaded.

NOTE: This function does not affect QuickAFL bars needed, so they really look for arrays loaded rods.
For indicators that it may mean it will not be able to find out if it is invisible, unless you use SetBarsRequired () function to Ensure that more bars are loaded.

For indicators to make sure that you have more bars SetBarsRequired () can use the function as long as it does not appear that the value may not be able to find. 

EXAMPLE
EXAMPLE InputDate = "2011-04-05" , 
Title = "Close value at (or before)" + InputDate + "is" + Lookup ( Close , _DT (InputDate), - 1 );

SEE ALSO
DateTime () function, StrToDateTime () function, _DT () function

Date () function, StrToDateTime () function, _DT () function FIRSTVISIBLEVALUE


- Get first visible value of the array

- Get the value of the first visible array 

Indicators
SYNTAX

SYNTAX
FirstVisibleValue (array)

FirstVisibleValue (array)
RETURNS

RETURNS
NUMBER

NUMBER
FUNCTION

FUNCTION
When used in charts / indicators / Interpretation of the function returns the values ​​of the array at the first visible bar.
Charts / indicators / function is used to interpret the array returns the values ​​from the first visible at the bar.
In other (non-indicator) function returns the array elements with subscripts of modes 0
Other (non-display) modes with indices of array elements function returns 0.
These functions do not affect QuickAFL Note that, so instead of LastValue LastVisibleValue may be used.
QuickAFL these functions, so it does not affect LastVisibleValue may be used in place note LastValue.
These functions are intended to complement already available via HighestVisibleValue and LowestVisibleValue functionality.
These functions are designed to complement the functions already available with HighestVisibleValue and LowestVisibleValue. 

EXAMPLE
SAMPLE x = C ; 
Plot (x, "x" , colorRed ) 
Plot ( FirstVisibleValue (x), "FVV" , colorGreen ) 
Plot ( LastVisibleValue (x), "lvv" , colorBlue );
SEE ALSO

SEE
HighestVisibleValue () function, LowestVisibleValue () function, LastVisibleValue () function LASTVISIBLEVALUE
- Get value of last visible array
- Get the value of the series last visible 

SYNTAX
LastVisibleValue (array)
LastVisibleValue (array)
RETURNS

FUNCTION
When used in charts / indicators / Interpretation of the function returns the values ​​of the array at the last visible bar.
Charts / indicators / function is used to interpret the array returns the values ​​from the last visible bar.
In other (non-indicator) function returns the array element with subscripts modes of BarCount-1.
Other (non-display) modes, the function returns the array element with BarCount-1 indices.
These functions do not affect QuickAFL Note that, so instead of LastValue LastVisibleValue These functions are used may be intended to complement already available via HighestVisibleValue and LowestVisibleValue functionality.
QuickAFL these functions, so LastVisibleValue HighestVisibleValue These functions are designed to complement and replace the function of LowestVisibleValue LastValue already may have been used over the note does not affect. 

EXAMPLE
SAMPLE x = C ; 
Plot (x, "x" , colorRed ) 
Plot ( FirstVisibleValue (x), "FVV" , colorGreen ) 
Plot ( LastVisibleValue (x), "lvv" , colorBlue );
SEE ALSO
FirstVisibleValue () function, HighestVisibleValue () function, LowestVisibleValue () function INGICS

Test GICS membership
- Test GIC membership 
Information / Categories

SYNTAX
InGICS ("gics_code")

InGICS ("gics_code")
RETURNS

FUNCTION
The function performs yes / no if test given current symbol belongs to GICS GICS category for example if the symbol is set for 15103020 InGics ("15"), InGICS ("1510"), InGics ("151 030") and InGics ("15.10302 million "), but all others will ALL return true (like InGics (" 20 ")) will return false.
15103020 for the symbol in the GIC InGics ("15"), InGICS ("1510"), InGics ("151 030") and InGics ("GIC 15.10302 million belong to the category given to the function of the icon, for example yes / no test performs") will return ALL the right, but others (InGics (such as "20")) will return false.
EXAMPLE printf ( "GICS (0) =" + GicsID ( 0 )); 
printf ( "GICS (1) =" + GicsID ( 1 )); 
printf ( "GICS (2) =" + GicsID ( 2 )) 

for (i = 10 , i < 90 , i + = 1 ) 
{ 
gics_code = StrFormat ( "% 02.0f" , i); 
printf ( "In Gics" " + gics_code + "=% S \ n" , InGics (gics_code) ); 
}
SEE ALSO

GicsID () function, InWatchList () function, InWatchListName () function
GicsID () function, InWatchList () function, InWatchListName () function GICSID

FUNCTION
The function gets information about current symbol GICS category.

The function retrieves information about the icon GIC category.
  • mode = 0 - returns a string containing GICS code alone (such as the "15,103,020")
    mode = 0 - solo GIC returns a string containing the code ("15,103,020", etc.)
  • mode = 1 - returns a string containing GICS category name (such as the "Paper Packaging")
    mode = 1 - GIC category name (for example, "Paper and Packaging", etc.) returns a string containing
  • mode = 2 - returns a string containing both code and name (such as the "15,103,020 Paper Packaging")
    mode = 2 - code and name ("15,103,020 Paper and Packaging", etc.) and returns a string containing
EXAMPLE
EXAMPLE printf ( "GICS (0) =" + GicsID ( 0 )); 
printf ( "GICS (1) =" + GicsID ( 1 )); 
printf ( "GICS (2) =" + GicsID ( 2 )) 

for (i = 10 , i < 90 , i + = 1 ) 
{ 
gics_code = StrFormat ( "% 02.0f" , i); 
printf ( "In Gics" " + gics_code + "=% S \ n" , InGics (gics_code) ); 
}
SEE ALSO

InGICS () function, INDUSTRYID () function, GroupID () function, MARKETID () function, SECTORID () function
InGICS () function, INDUSTRYID () function, groupId () function, MARKETID () function, SECTORID () function 
EXAMPLE
PlaySound ("c: \ \ windows \ \ media \ \ ding.wav");
PlaySound ("c: \ \ windows \ \ media \ \ ding.wav"); ShellExecute

SYNTAX
ShellExecute ("filename" "arguments", "working" showcmd = 1)
ShellExecute ("file", "independent", "working" showcmd = 1)
RETURNS
The function opens a file or executable runs. Function tries to open a file or executable. 
It is equivalent of the Windows API ShellExecute, with one difference, it always uses the "open" verb.
With one difference, equal to the Windows API ShellExecute always "open" verb uses.
This Allows running executables, scripts, opening files using the document associated Their editors, etc.
This work is carried out, scripts, such as document files using landing provides the associated editors
If the function succeeds, it returns a value greater than 32
If the function succeeds, returns a value greater than 32.
If the function fails, it returns an error value indicates that the cause of the failure.
If the function fails, an error value indicates the cause of failure.
For possible error codes, consult the Microsoft documentation: http://msdn.microsoft.com/en-us/library/bb762153 (VS.85). aspx

Possible error codes, see the Microsoft documentation: . http://msdn.microsoft.com/en-us/library/bb762153 (VS.85 aspx) 

EXAMPLE
ShellExecute ("notepad.exe", "", "");
ShellExecute ("notepad.exe", "", ""); _DT
- Convert string to datetime

_DT ("Date string");
_DT ("Date string");


FUNCTION
Representing converts a string date / time DateTime value to the Corresponding number (that can later be compared to the output of DateTime () function for example).
(Later DateTime (for example) is comparable to the output function) string of numbers representing DateTime date / time value of the converts.
This function is synonym / shortcut for StrToDateTime function.
This function is synonymous with / for links to the StrToDateTime function.
SEE
StrToDateTime () function
StrToDateTime () function

Saturday, February 18, 2012

Amibroker 5.5 Highlights


AmiBroker 5.50.4 official release

ATTENTION: This version is free only for users who registered after September 1st, 2009. See Upgrade Policy and Pricing section below for more details.
CHANGES FOR VERSION 5.50.4 (as compared to 5.50.3)
  1. New Analysis: “Show arrows for actual trades” sometimes used date range from old AA. Fixed
  2. New Analysis: Individual backtest – custom metrics columns would not appear if very first symbol under test does not generate ANY trades. Fixed.
  3. UI: when you float a maximized MDI window it becomes little smaller so it does not overlap MDI tabs.
  4. Print/Print Preview: circle/arc/rectangle objects outside current view are properly clipped on printouts
  5. New Analysis: When user cancelled optimization in the middle and ran backtest afterwards then this single follow up backtest could be incorrect and required another run to produce correct result again. Fixed.
  6. When timeshift != 0 then duplicate range markers could appear at day boundary. Fixed.
  7. Small rounding issue in ray drawing fixed
  8. When multiple chart panes were using SetForeign on rare occassions foreign call could fail (return other symbol data) Fixed.
CHANGES FOR VERSION 5.50.3 (as compared to 5.50.2)
  1. Blank chart can be closed using flyout minitoolbar now
  2. Fixed crash @7C8097FF when trying to drag drop indicator on chart when database is empty
  3. Formulas: Ichimoku cloud added
  4. Formulas: faster version of Portfolio Equity formula
  5. Formulas: styleNoLabel is now default for all “Band” formulas (Bollinger/Keltner/Percent)
  6. New Analysis: Individual backtest: setting different report mode took place only after second run / second symbol. Fixed.
  7. New Analysis: proper symbol list refresh is triggered when composites are created or user calls SetOption(”RefreshWhenCompleted, True );
  8. New Analysis: Walk forward tab table did not display custom metrics. Fixed.
  9. PlotVAPOverlay did not draw the very last level line. Fixed. Also done some cosmetic tweaks.
  10. TC2K/TC2KFunds plugins updated to check Wow6432Node registry key on 64-bit installations (should avoid TC2k detection issue on 64-bit Windows)
  11. Ticker bar prevents from adding empty ” symbol names
  12. When database is empty or chart does not have properly selected symbol the information note is displayed in the chart window (instead of blank chart)
  13. When settlement delay was set to zero, then interest rate setting was ignored (5.46-5.50.2). Fixed.
CHANGES FOR VERSION 5.50.2 (as compared to 5.50.1)
  1. New Analysis and Old AA: HoldMinBars > 0 can now be used together with AllowSameBarExit=True
  2. New Analysis: SeparateLongShortRank required proper MaxLongPos and MaxShortPos definitions in order to work. Now if they are missing defaults are applied as in old AA.
  3. New Analysis: If current formula is open in the formula editor it is auto-saved prior to running any Analysis (as old AA did)
  4. New Analysis: on attempt to load analysis project file that contains formula path that does not exist or is not writable AmiBroker will create the formula in the “FormulasImported” folder instead of not creating it at all
  5. New Analysis: on Backtest/Optimization current formula is saved in @LastBacktestFormula registry key so it can be referenced by Individual Equity formula
  6. New Analysis: when formula is picked from the folder that is inside current working directory, then relative path is used and stored in project instead of absolute path previously used
  7. New Analysis: WinXP-only – RMB click column descend/ascend menus were not working due to Windows XP bug. Fixed.
  8. Plugins: IQFeed plugin uses new faster IQFeed API, downloads less and uses way more efficient method to backfill 1/5/15-second base time intervals. Attention: you need to use new IQClient 4.8.1.7 or higher.
  9. Plugins: IQFeed: added “You can’t close plugin window” on attempt to close working IQFeed window.
    Settings: ‘Stops’ tab: N Bar stop has priority check box state was not saved. Fixed
  10. UI: Category list now features new icons and decreased indentation
  11. UI: Chart tree, Layout tree in “Explorer” theme
  12. UI: Floating non-chart windows (account/web browser/analysis) are not closed when switching layouts.
  13. UI: Owner-draw listviews now fully implement ellipsis item truncation mechanism, but using ExtTextOut only which is 6 times faster than DrawText that Windows uses
CHANGES FOR VERSION 5.50.1 (as compared to 5.50.0)
  1. New Analysis: Individual Backtest implemented. Note that it runs with approx same speed as old AA as Individual Backtest is single threaded for reasons explained in the User’s manual.
  2. New Analysis: toolbar icons for parameters and settings changed to avoid confusion with the icon for preferences
  3. UI: Symbol List uses Windows 7/Vista style
  4. New Analysis: Toolbar customization is now saved
  5. MRU (most recently used) file menu moved to submenu and MRU list increased to 10 items
  6. Charts: fixed small alignment problem on Y axis when using fixed (nonproportional) font
  7. New Analysis: backtester object now has EquityArray property that returns entire equity array (not just current value).
  8. New Analysis: AddToComposite with atcDeleteValues | atcEnableInPortfolio did not delete previous values. Fixed
  9. New Analysis: “Interval” menu item in the auto-repeat group renamed to “AR interval” because some users interpreted it wrong (as periodicity)
  10. New Analysis: OLE interface implemented. 
  11. Charts: more tweaks for Y axis algorithm for readability. Now in Tools->Preferences, “Charting” the user may select different grid stepping: Instead of default 1, 2, 5, 10 grid stepping, user may select to use 2.5 step instead of 2 (Use 2.5 step in Y axis)
  12. GetFnData() supports new field “Alias” – return Alias field without need to use OLE
  13. GetOption supports new fields: ApplyTo and Filter*, eliminates the need to use OLE for that purpose
  14. Fix for FPU inaccurracies in range bars implemented
CHANGES FOR VERSION 5.50.0 (as compared to 5.49.2)
  1. New Analysis: “Save” creates now a Analysis project (.apx) file that includes all settings and formula needed in single file. The file itself is in human readable XML format
  2. UI: File open dialog now has “All supported files” option in the “Files of type”
  3. UI: PopupWindow is now resizable (see size gripper in the lower-right corner)
  4. AFL: PopupWindow function has additional parameters to control width/height and flag that controls whenever popup window captures input focus
  5. New Analysis: ApplyStops applied in non-regular modes are passed to 2nd phase properly now.
  6. New Analysis: “Show current trade arrows” fixed.
  7. New Analysis: View->Filtering menu options were not available when New Analysis was active. Fixed.
  8. New Analysis: Standard Edition has a limit of max 2 threads per Analysis window instance.
  9. UI: Log window clicking on error displayed AFL Editor and marked Line+1, Col+1 char position instead of proper place. Fixed
  10. New Analysis: Errors are now displayed in a modern message bar instead of dialog box
  11. UI: holding down Ctrl and Q keys simultaneously while AmiBroker is starting resets all menus/command bars to defaults
  12. New Analysis: scroll bar properly works when “Walk forward” tab is active
  13. New Analysis: Walk forward tab content can be now copied using Edit->Copy / Ctrl+C
  14. New Analysis: when “wait for backfill” was turned on and external data source was very slow to repond (like IQFeed during backfill) subsequent calls to Status(’stocknum’) could give non-unique numbers. Fixed.
  15. New Analysis: Copy to clipboard includes headers now
  16. New Analysis: Column customization/state persistence implemented
  17. Charts: New Y axis grid algorithm for clearer display on condensed charts
  18. AFL: CategoryGetSymbols supports new categoryAll (all symbols in the database) and new Mode parameter
  19. AFL: Added Warning 503. Using OLE / CreateObject / CreateStaticObject is not multi-threading friendly. See Users’ Guide “”Efficient use of multithreading”" for more details.
  20. AFL: Added ThreadSleep( milliseconds ) function. It suspends current thread for specified number of milliseconds (maximum is 100 ms). Works only from NON-UI threads. When called from UI thread the function does NOTHING and returns immediatelly. Please do NOT abuse this function. Using it may negatively impact performance.
  21. AFL: Added StaticVarCompareExchange function. Provides atomic interlocked compare/exchange functionality
CHANGES FOR VERSION 5.49.2 (as compared to 5.49.1)
  1. New Analysis: added Optimize->3D Optimzation chart menu
  2. New Analysis: buttons for Portfolio Equity/Individual Equity charts added
  3. New Analysis: Info Bar added (that duplicates some of the info that normally appears on the Info Tab). It can be turned on using Settings->Info Bar
  4. New Analysis: Report generation is now OFF by default when running optimization/walk forward as in old AA. This gives about 0.9 sec gain per step.
  5. New Analysis: Single-symbol optimization made faster by caching already compressed quote array on subsequent steps
  6. New Analysis: the check for Status(”StockNum”) was sensitive to blanks between parenthesis, function name and string parameter. Now it is made insensitive to blanks.
  7. New Analysis: when “Range” was “n last bars” or “n last days”, Status(”rangefromdate”) gave date of preceding bar. Fixed.
  8. UI: “Performance” tooltip title was not always updated on time. Fixed.
  9. UI: “Wait for plugin” window displays progress bar with “marquee” style instead of circle of dots
CHANGES FOR VERSION 5.49.1 (as compared to 5.49.0)>
  1. New Analysis: “Backtest started”, “Exploration started” text in the info tab appeared twice per run (instead of once). Fixed
  2. New Analysis: Backtest report did not include formula code. Fixed.
  3. New Analysis: Fixed crash that could occur when running analysis with Range set to “N recent bars” and N was exceeding number of quotes.
  4. New Analysis: Float/Normal/Close popup menu RMB menu was active everywhere in floating window instead of only caption area. Fixed.
  5. New Analysis: Implement single-thread start when Status(”StockNum”) is detected in the code. Other threads are started when first symbol processing is completed.
  6. New Analysis: Send to Analysis did not update formula combo box properly in certain scenarios: when formula X was selected, then formula Y, then formula X again. Fixed.
  7. New Analysis: Testing on unaligned data sometimes took longer than expected because of the work necessary to bring signals in order. Now a smart method avoids most of the memory transfers and can give 10x speedup on backtesting very long unaligned intraday data.
  8. Old AA: status bar displays true timing for fair comparisons between old AA and new Analysis. Watching progress bar numbers was misleading as it closed before all processing was truly complete, so it looked like old AA completed sooner than it really did
  9. UI: menu item for Old Automatic Analysis restored as apparently some users got lost. Also attempt to run old Automatic analysis displays an information about new Analysis window
CHANGES FOR VERSION 5.49.0 (as compared to 5.48.0)
  1. Web Research: turned on “silent” mode – should prevent error message boxes displayed by IE engine.
  2. UI: when focus is switched to floating document window, the application menu is switched to proper context
  3. UI: When File->Close was used on floating pane, document was closed but docking pane was not. Fixed.
  4. UI: The toolbar button and menu option to launch old Automatic Analysis window are now hidden (can be brought back by using Tools->Customize), old AA can also be launched from new Analysis via Analysis->Old Analysis menu
  5. UI: New menu options and toolbar button to launch new analysis window
  6. UI: Moved all menu items controlling visibility of docking windows to “Window” menu
  7. UI: floating state of windows can now be turned on/off using right-click menu over tab / floating window caption
  8. UI: File->Save (when currently selected window is a chart) command now saves Chart template. To save database use “Save database” instead.
  9. UI: Defaults for data window are changed, so extra OHL display is turned off by default as currently PlotOHLC displays all 4 prices in the tooltip and data window already
  10. UI: Data window scroll bars are hidden and do not flicker when updating
  11. UI: Adjusted item Y offset for owner drawn listviews for consitent look with old layout of system listviews in Windows XP and earlier OSes
  12. UI: Account, Analysis and Web research windows don’t use client edge/border anymore – gives slicker / less crowded look
  13. UI: “Save All” toolbar button removed, “Save database” button added to replace it
    QuoteEngine: Range bars algorithm improved significantly
  14. Quote array uses 20480 bytes (512 quotes) allocation chunk size (exactly 5×4KB page) now
  15. New Analysis: when floating pane is made normal from/to dates were reset to today. Fixed.
  16. New Analysis: when Apply To: Filter is defined so NO symbol matches the criteria, appropriate message is displayed when trying to run Analysis and action is terminated instead of displaying progress bar forever
  17. New Analysis: when analysis window is “floating” double click/show arrows/sync affects active MDI chart just like old AA did, as opposed to last one (when analysis is not floating)
  18. New Analysis: Optimization parameter setup stage uses now not more than 100 bars. This reduces setup time.
  19. New Analysis: implemented import / export, File menu now has Import HTML and Export HTML/CSV commands
  20. New Analysis: Implemented “Wait for backfill” option. This slows down analysis sequence so AmiBroker waits for external RT data source to deliver backfill data
  21. New Analysis: Custom backtester uses “last backtest settings” when calling GetStatus() instead of old AA settings
  22. New Analysis: auto-repeat interval edit field did not allow to enter values if moved to main toolbar via customization. Fixed.
  23. Formula Editor Analysis toolbar button now operates on New Analysis window
  24. Default for timestamping of intraday compression changed to “Show START time of interval”
  25. Charts: Tooltips automatically display also OHL prices (in addition to close) when Plot style is set to candlestick, bar or when PlotOHLC was used
  26. Charts: AFL error message color is now definable in Tools->Preferences, “Color” tab
CHANGES FOR VERSION 5.48.0 (as compared to 5.47.0)
  1. New Analysis: custom metrics columns were invisible in backtest/optimizations. Fixed. (#91031)
  2. New Analysis: backtest did not display proper column names when Report mode was different than trade list. Fixed. Also added support for changing report mode via SetOption().
  3. New Analysis: Auto-repeat Scan/Explore implemented (aka. “Run every” in old AA) (use drop down menu next to “Settings” button)
  4. New Analysis: Showing arrows by double click implemented
  5. New Analysis: Sync chart on select option implemented (use drop down menu next to “Settings” button)
  6. Fixed window activation issue after RMB click in chart window when non-chart floating windows are active
  7. New Analysis: Cancelling walk-forward did not restore date range and settings and didn’t reset internal step counter. Fixed.
  8. New Analysis: Formula path disappeared when window was made floating. Fixed.
  9. New Analysis: in 5.47 non-exhaustive optimizers sometimes stopped after first step in walk-forward. Fixed.
  10. Charting: scroll bar zoom function remains active even at extreme zoom in levels
  11. New Analysis: Fixed problem with opt steps warning dialog appearing sometimes in the out-of-sample tests in walk forward sequence
  12. New Analysis: Signal heaps are separated now, allowing to run concurrent backtest/optimizations in many analysis windows
  13. New Analysis: removed unnecessary refreshes of symbol list during optimizations that caused slowdowns when user had large database
  14. New Analysis: The size of control fields is properly adjusted with regards to DPI
  15. New Analysis: Status(”StockNum”) was always zero in 5.47 and earlier. Now it is set properly.
  16. Fixed Error 53 message that was giving an error when proper ” (quotation mark espace sequence) was used
CHANGES FOR VERSION 5.47.0 (as compared to 5.46.0)
  1. New Analysis: implemented Walk-Forward testing (use drop arrow next to Optimization button)
  2. New Analysis: last used ApplyTo/Range/From/to dates/filters and other settings are saved when Analysis window is closed
  3. Fibonacci retracement- modifying Z-order affected only control trendline, not all lines as it should. Fixed.
  4. Default title for new analysis window is “AnalysisX” (instead of “Unnamed”) where X is consecutive number 1, 2..
  5. attempt to use Say() on computer without sound card or without driver installed does not result in throwing exception/crash report, but it is rather silently ignored
  6. AFL engine: new error 53: incorrect espace sequence. Error is issued when user forgets that single slash must be written as \
  7. Fixed “slow response” problems some users reported when switching symbols)
CHANGES FOR VERSION 5.46.0 (as compared to 5.45.0)
  1. New Analysis: Exhaustive multi-threaded optimization implemented
  2. New Analysis: Smart (non-exhaustive) multi-threaded optimization implemented in a way compatible with existing optimizer plugins
  3. Slight modification to the way how compressed bar charts are drawn (so bars with H==L are better visible)
CHANGES FOR VERSION 5.45.0 (as compared to 5.44.1)
  1. 64-bit version compiled with new version of C runtime (Microsoft security update)
  2. Fixed date/time column sorting in virtual list views when regional date format was different than yyyy-MM-dd
  3. AFL: ClipboardSet() returns True (1) when clipboard has been successfully set. Sometimes clipboard is locked by another applications and then write can fail (ClipboardSet() will return zero/False then)
  4. New Analysis: Changed alignment of Date/Time column to left in backtest result list.
  5. Most AFL engine setup moved to worker threads. Result – smaller UI thread load in MT charts (better scalability) and much faster (upto 2x) explorations/scans in New Analysis window
  6. New Analysis: added “Info” tab that provides some summary information about analysis (number of rows, timings, backtest summary) – contents can be copied using Ctrl+C / Edit->Copy
  7. New Analysis: first-phase backtest signal processing and ranking moved to non-UI threads, enabling better parallelism, results in better backtest performance (upto 2x in with trivial codes)
CHANGES FOR VERSION 5.44.1 (as compared to 5.44.0)
  1. Removed dialog box with partial timings that appeared after backtest in the new analysis window. (It was introduced in 5.44.0 for performance fine-tuning purposes, but not really needed for end-user).
CHANGES FOR VERSION 5.44.0 (as compared to 5.43.1)
  1. New Analysis: fixed AddToComposite()
  2. New Analysis: Interval() function was working incorrectly in new analysis window. Fixed.
  3. New Analysis: Backtest ~~~EQUITY symbol did not have “use only local database” set in 5.43.1. Fixed.
  4. New Analysis: Backtest performance improved by removing some unnecessary list view refreshes (now it should never be slower than old AA even with simplest formulas)
CHANGES FOR VERSION 5.43.1 (as compared to 5.43.0)
  1. When range different than “All quotes” was selected, backtest in new Analysis window could produce incorrect results in 5.43.0. Fixed.
CHANGES FOR VERSION 5.43.0 (as compared to 5.42.0)
  1. New Analysis Window: multi-threaded Backtest feature implemented (experimental)
  2. Load/Unload buttons removed from Plugins dialog.
  3. ListViews: the last line (partially shown) in RT quote window was not easily selectable. Fixed
  4. New Analysis window: Implemented Parameters dialog
  5. AFL: GetCursorMouseButtons() sometimes missed clicks when multithreading was on and formula took ages to execute. Now it is now 100% reliable.
  6. Auto-selection of proper layer based on selected viewing interval
  7. IRA accounts support – implemented Settlement delay in backtester, via SetOption(”SettlementDelay”, x )
  8. Zoom in/out toolbar buttons zoom in finer steps (+/-10%)
  9. Analysis ListView, RMB menu new option: “Add Rank column” – adds a column with ordinal rankings based on current sort or just row number column when list is not sorted
  10. New feature: Adding new chart/research/account/analysis via (+) tab
  11. New Analysis window: Implemented SetSortColumns
  12. New Analysis window: Implemented AddSummaryRows
CHANGES FOR VERSION 5.42.0 (as compared to 5.41.0)
  1. Implemented right click menu in new Analysis windows (Add symbols to watchlist/Show arrows functionality)
  2. Zoom in/out toolbar buttons now have auto-repeat feature
  3. In 5.41.0 Ctrl+C from list view copied text without tabs (column separators). Fixed
  4. In 5.41.0 did not refresh progress dialog optimization status list. Fixed. (owner draw list view initial size is retrieved in PreSubclass now)
  5. In 5.41.0 did not display Time&Sales in reverse order (newest on top). Fixed.
CHANGES FOR VERSION 5.41.0 (as compared to 5.40.0)
  1. New Analysis window (File->New->Analysis) – featuring multithreaded Scan and Exploration
    Performance note: to fully benefit from multithreading it is best to use AmiBroker local NATIVE database (not external) as it is the only database that can deliver data quickly enough. Tests show that on AmiBroker native databases scans and explorations are 100% scalable to multiple cores
    – i.e. for example would run upto 8 times faster on 8 CPU/core machine. IMPORTANT: This window is work-in-progress. Multithreaded Backtest and Optimization features will be added later.
  2. Totally rewritten listview with very efficient owner draw code speeds up list view scrolling/resizing/repainting more than 10 times. Native system ListView control is terribly slow on Windows XP/Vista/7 (surprisingly it was many times faster in Win9x!)
  3. AFL: AddColumn – added mini bar charts to explorations
  4. Mini-chart in RT Quote window. Mini chart shows where LAST price is within LOW-HIGH range.
  5. AFL: Percentile() does a param check for range > 0 now
  6. Errors and warnings are now displayed in red color in the indicator pane
  7. During actual GDI chart rendering AmiBroker measures time and if it exceeds 500ms timeout it stops rendering with Warning 901.
  8. Warning 502: Calling Plot()/PlotOHLC over 500 times is displayed in indicator in runtime to prevent abuse
  9. All list views, pressing Ctrl and NumPad’+’ automatically adjusts column widths to content
  10. If data are missing in the in-memory cache, Foreign() calls from non-GUI threads use synchronous retrieval method for reliability.
  11. Old and new Analysis window: outputting millions of rows to listview is much faster now
  12. All list views – Ctrl+A (Select All) made much faster
UPGRADE POLICY AND PRICING
  1. The upgrade is FREE for all users who purchased AmiBroker after September 1st, 2009
  2. The users who purchased AmiBroker before September 1st, 2009 would need to buy upgrade if they want to use this newest version ($99 – Standard Edition, $139 – Professional). If you don’t want to pay – you may continue using previous version(s) infinitely.
  3. To find out when you have purchased AmiBroker and how long your free upgrade period is, use “Account Information” page in the members area at
  4. To purchase new license or upgrade please use our ordering page at: