PureBytes Links
Trading Reference Links
|
Hello,A new beta version (4.58.0) of
AmiBroker has just been released.
It is available for registered users only from
the members area at:<A
href=""><FONT face=Arial
size=2>http://www.amibroker.com/members/bin/ab4580beta.exe<FONT
face=Arial size=2>and<A
href=""><FONT face=Arial
size=2>http://www.amibroker.net/members/bin/ab4580beta.exe
(File size: 795 727 bytes, 795
KB)If you forgot your user name / password to the members areayou
can use automatic reminder service at: <A
href=""><FONT face=Arial
size=2>http://www.amibroker.com/login.html<FONT face=Arial
size=2>The instructions are available below and in the "ReadMe" file(
Help->Read Me menu from AmiBroker )<FONT face=Arial
size=2>
Best regards,Tomasz
Janeczkoamibroker.com
AmiBroker 4.58.0 Beta Read Me
July 10, 2004 1:31
THIS IS A BETA VERSION OF THE SOFTWARE. EXPECT BUGS !!!
Backup your data files and entire AmiBroker folder
first!
INSTALLATION INSTRUCTIONS
IMPORTANT: This archive is update-only. You have to install full
version 4.50 first.
Just run the installer and follow the instructions.
Then run AmiBroker. You should see "AmiBroker 4.58.0 beta" written in the
About box.
Many thanks to all providing detailed descriptions how to reproduce given
bug.
See CHANGE LOG below for detailed list of changes.
CHANGE LOG
CHANGES FOR VERSION 4.58.0 (as compared to 4.57.0)
9 new AFL functions: NoteGet( "Symbol" );-
retrieves note linked to "symbol". If symbol is "" (empty string) then current
symbol is usedNoteSet( "Symbol", "Text..." );-
sets text of the note linked to "symbol". If symbol is "" (empty string)
then current symbol is used. If you overwrite note from AFL level that
is opened at the same time in Notepad editor the editor will ask you (when you
switch the focus to it) if it should reload new text or allow to save your
manually entered text. Example:<FONT
color=#000000>NoteSet<FONT
color=#000000>("AMD",
"Jun 15, 2004: AMD will deliver its first
multi-core processors next year"<FONT
color=#000000>);ClipboardSet( "Text"
);- copies the "text" to the Windows
clipboardClipboardGet()- retrieves current
contents of Windows clipboard<FONT
color=#008000>// this can be used to put dynamically-constructed texts
into //
clipboard //
<FONT
color=#0000ff>ClipboardSet( <FONT
color=#ff00ff>"The price of " + <FONT
color=#0000ff>FullName() + <FONT
color=#ff00ff>" is " + <FONT
color=#000000>Close
);VarSet( "varname", value )- sets
the value of dynamic variable*VarGet( "varname"
)- gets the value of dynamic
variable*StaticVarSet( "varname", value
)StaticVarSetText( "varname", "value" )- sets the
value of static variable**StaticVarGet( "varname"
)- gets the value of static variable*** Dynamic variables
are variables that are named dynamically, typically by creating a variable
name from a static part and a variable part. For example, the following
example dynamically constructs the variable name from a variable prefix and a
static suffix.<FONT
color=#800000>for( i = <FONT
color=#ff00ff>1; i < <FONT
color=#ff00ff>10; i++ ) { <FONT
color=#0000ff>VarSet( <FONT
color=#ff00ff>"C"+i, <FONT
color=#0000ff>Ref( <FONT
color=#000000>C, -i ) ); }
// creates variables C1, C2, C3, C4, ....,
C10 equal to Ref( C, -1 ), Ref( C, -2 ), ..., Ref( C, -10
) //
respectively** Static variable - the variable
has static duration (it is allocated when the program begins and deallocated
when the program ends)and initializes it to Null unless another value is
specified. Static variables allow to share values between various
formulas.Only NUMBER and STRING static variables are supported now (not
ARRAYS).
new Preferences: Intraday setting"Override: Weekly/monthly bars use
day of last trade"when checked (default) then weekly/monthly charts always
use timestamp of the day of last trade within a week/month (may not be Friday
or last day of the month) regardless of what is set in "Time stamp of
compressed intraday bars shows" radio buttonsIf you uncheck this box and
"time stamp of compressed intraday bar" is set to END TIME of the interval,
then weekly bars will be time-stamped with last day of the week (sunday) and
monthly bars will be time-stamped with last day of the month regardless if
trading has occured on that day or not.
AddToComposite now by default deletes all previous data instead of setting
existing fields to zero at the start of the scan.The flag default flag 1
has now the name of atcFlagDeleteValues the old flag (now optional)
atcFlagResetValues now has value of 32. Most formulas using ATC should not be
affected by that change.
AA: Settings: "Pad and align to reference symbol" is now available for all
AA modes (not only portfolio backtest).This allows for example to turn on
aligning when running scans with AddToComposite and thus ensuring that data
holes do not generate valleys in composites. This is useful to create intraday
composites when data holes/misalignment is often. (when creating intraday
composites it is now recommended to check alignining as well as changing "Time
compressed bars use START (or END) time of interval" in
Tools->Preferences->Intraday)
CHANGES FOR VERSION 4.57.0 (as compared to 4.56.1)
profit distribution chart took a bit long when profits were extremely
large - now it is fixed
changed vertical line selection code to prevent line disappearing after RT
update
vertical line selection is now working fine in multiple linked windows
displaying different time frames
chart panes can be now moved up/down using View->Pane->Move Up/Down
without need to re-insert everything to change the order
fixed 'approx. X days' text in the "Database Settings" window that
reported wrong values in versions 4.53..4.56
when "show arrows" option is selected in AA window then correct interval
is selected in the chart (it was not functioning properly for beta versions
4.53..4.56 and intraday data)
added Notepad window (View->Notepad) that allows to store free-text
notes about particular security. Just type any text and it will be
automatically saved / read back as you browse through symbols. Notes are
global and are saved in "Notes" subfolder as ordinarytext files.
implemented browser-like history Back/Forward in menu View->History and
in the toolbar,(keyboard shortcuts Back: Ctrl+Alt+LEFT, Forward:
Ctrl+Alt+RIGHT, you can change it in Tools->Prefs->Keyboard) Please note
that due to customization features of the toolbar on old installations the
Back/Forward buttons will not appear unless added manually (click with RIGHT
mouse button over standard toolbar, select "CUSTOMIZE" menu and add
Back/Forward buttons.)
CHANGES FOR VERSION 4.56.1 (as compared to 4.56.0)
fixed crash at address: 0x474f54
fixed K-ratio calculation. Now follows exactly corrected Excel sheet from
page 89 of "Quantitative Trading Strategies" by Lars Kestner (published 2003).
because of many people not reading the comment regarding new "Limit trade
size as % of entry bar volume" setting, implemented checking for volume = 0 in
data files. If volume is equal to 0 in your data file then this trade size
limit does not apply.
CHANGES FOR VERSION 4.56.0 (as compared to 4.55.1)
fixed crash when RT quote window ticker list contained symbol that did not
exist in the database
added Toolbar customization:right-click over any toolbar and choose
"CUSTOMIZE" menu to add/remove/arrange toolbar buttons. You can also press ALT
key and move/arrange buttons within one toolbar without needing to open
"customize" dialog
eSignal plugin 1.7.1: fixed problem with zero data when the user selected
not enough bars to load (mixed mode requires a bit more bars)
CHANGES FOR VERSION 4.55.1 (as compared to 4.55.0)
implemented workaround to Windows XP status bar display problem causing
plugin status indicator not 'disappearing' sometimes
fixed problem with crash sometimes occuring when calling Import() OLE
automation methodwhen AB was not running.Versions 4.54-4.55 are
localization-enabled and month names are localized too, localized strings have
to be setup at the start of the program, but this was working correctly only
if GUI was launched. When creating AB OLE object without GUI month name string
were notset-up correctly and this caused problems. (This fixes problems
with CSI/UA export as well as AQ trying to import to non-existing instance of
AB)
fputs/fgets/fclose/feof file functions are now protected against using
null file handle(common coding error among AFL users)
Parameter names are not truncated in the parameter list
CHANGES FOR VERSION 4.55.0 (as compared to 4.54.0)
Median and Percentile calculations include current bar
new symbols added via CategoryAddSymbol trigger workspace ticker list
refresh
calling COM methods returning nothing (void) does not cause "type
mismatch" message
duplicate parameters are no longer produced when user specifies parameter
names with trailing/leading spaces in Param()/ParamStr()/ParamColor()
now it is safe to call AB.RefreshAll() from inside of AmiBroker because
this method is protected against locking up / looping by not allowing
consequent refresh if previous refresh occured in less than one second
Parameters window now is resizable
Parameters window now support date and time parameters.Corresponding
new AFL functions are:ParamDate( "Name", "Default date", format = 0 );
where:"Name" is a string holding parameter name"Default date"
is a string holding date in any any
format:YYYY-MM-DDMM/DD/YYDD-MM-YYetc, etc.format -
defines return value format, allowable values are:0 - return value is a
NUMBER and holds DateNum. Ie: 990503 for May 3, 1999,1 - return value is a
STRING formatted holding date according to your windows regional
settingsParamTime( "Name", "Default time", format = 0
);where:"Name" is a string holding parameter name"Default time" is
a string holding date in any of the following
formats:HH:MM:SSHH:MMformat - defines return value format,
allowable values are:0 - return value is a NUMBER and holds TimeNum. Ie:
133515 for 13:35:15 1 - return value is a STRING formatted holding time
according to your windows regional
settingsExamples:Title = WriteVal(
ParamDate("ParamDateAsDateNum","2004-05-14"), 7.0 );Title =
ParamDate("ParamDateAsString","2004-05-17",1);
portfolio/individual backtester/optimizer, new setting in
AA->Settings->Portfolio:"Limit trade size as % of entry bar volume"
(default = 10%)This prevents from entering the trades greater than
given percentage of entry bar's volume.For example if backtesting daily
data and today's volume for thinly traded stock is 177,000 shares, setting
this to 10% will limit the maximum trade size to 17,700 shares (10% of total
daily volume). This prevents from 'affecting the market'by huge orders.
IMPORTANT NOTE:Some instruments like MUTUAL FUNDS come without
VOLUME data. To backtest such instruments please set this field to ZERO (0).
This effectively turns OFF this feature. Otherwise you won't be able to enter
any trade at all. Suggestions are welcome how to handle this problem
automatically (maybe just detect if bar's volume is ZERO and then allow
entering any size?)
K-ratio calculation changed following the change made by its creator, Mr.
Lars Kestner.Quoting from the book "Quantitative Trading Strategies"
from 2003 by Lars Kestner:[ - - - ]" The K-ratio is a unitless
measure of performance that can be compared across markets and time periods. [
- - - ] Traders should search for strategies yielding K-ratios greater
than +0.50. Together, the Sharpe ratio and K-ratio are the most
importantmeasures when evaluating trading strategy performance. Note: When
I created the K-ratio in 1996, I thought I had created a robust measure to
evaluate performance. In mid-2000, trader Bob Fuchs brought a small error to
my attention regarding the scaling of the K-ratio. He was correct in his
critique and I have corrected the error in this text. Publications prior to
2002 will show a different formula for the K-ratio. The updated formula in
this book is correct."
Mr Lars Kestner has corrected his formula based on this
critique:K-ratio = slope / ( sterr * per )
slope: Linear regression slope of equity line sterr: Standard error of
slopeper: Number of periods in the performance test
Special thanks to Jeremy Berkovits who brought that to my
attention.
CHANGES FOR VERSION 4.54.0 (as compared to 4.53.1)
"Allow mixed EOD/intraday data" mode added (controllable from
File->Database Settings->Intraday, checkbox with the same name) it
allows to work with database that has a mixture of intraday and EOD data in
one data file. If this is turned on then in intraday modes EOD bars are
removed on-the-fly and in daily mode EOD bars are displayed instead of time
compressed intraday or if there is no EOD bar for corresponding day then
intraday bars are compressed as usual.
This mode works in conjunction with new versions of plugins that allow
mixed data. Mixed mode is now supported by MarketCast plugin (1.1 or
higher)(Australia) and eSignal plugin (1.7.0 or higher) only.
Mixed mode allows intraday plus very long daily histories in one
database.
Note that this is EXPERIMENTAL feature.
+ Real-Time quote window enhancedNow only fields that are changed
change the background to 'yellow' and if the value in given field increases
then it is displayed in green if decreases then is displayed in red. This
allows easy identification of movement.
+ all strings in the program moved to resources for easy localization
+ fixed problem with SetForeign()+FullName() returning symbol instead of
full name of foreign security.
+ added new AFL function IsContinuous() to check if "continuous" flag is
turned on in Symbol->Information window
+ OLE properties can be retrieved (DISPATCH_PROPERTYGET) directly from AFL
now using parameterless function syntax. This allows reading values exposed by
OLE automation directly from AFL code. Example:
AB = <FONT
color=#0000ff>CreateObject(<FONT
color=#ff00ff>"Broker.Application"); Stocks =
AB.Stocks(); // get collection<FONT
color=#000000> Stock = Stocks.Item( <FONT
color=#0000ff>Name() ); <FONT
color=#008000>// currently selected
"FullName : " +
Stock.FullName(); "Alias : "<FONT
color=#000000> + Stock.Alias(); "Address :
" + Stock.Address(); <FONT
color=#ff00ff>"Shares: " + Stock.Issue();
"Book value: " +
Stock.BookValue(); "Market : "<FONT
color=#000000> + Stock.MarketID(); "WebID :
" + Stock.WebID();
You can check if OLE object is valid by calling IsNull() function,
example:
AB = <FONT
color=#0000ff>CreateObject(<FONT
color=#ff00ff>"Broker.Application"); Stocks =
AB.Stocks(); // get collection<FONT
color=#000000> Stock = Stocks.Item( <FONT
color=#ff00ff>"INTC" ); <FONT
color=#800000>if( <FONT
color=#0000ff>IsNull( Stock ) ) {
printf<FONT
color=#000000>("COM object invalid (Null) - symbol
does not exist\n"); } <FONT
color=#800000>else {
printf<FONT
color=#000000>("COM object valid - you can access
its methods\n");
}
+ IsEmpty/IsNull and IsTrue functions operate with scalars and OLE
dispatches without upsizing them to array
CHANGES FOR VERSION 4.53.1 (as compared to 4.53.0)
addressed problem with broker.layers file. Now version 4.53.1 correctly
reads broker.layers file saved with older versions however note that old
versions are not compatible with new format.
layer properties dialog provides more comfortable setting of layer
visibility
other minor fixes
CHANGES FOR VERSION 4.53.0 (as compared to 4.52.0)
per-group intraday settings (filtering/daily compression) Use
Symbol->Categories: "GROUP" -> Use own intraday settings, clickon
"Intraday settings" button to define intraday settings specific to given
group.
intraday settings now allow to specify separate day (RTH) and night (ETH)
sessions
time filtering now allows to display:a) 24 hours trading (no
filtering)b) day session onlyc) night session onlyd) day and night
sessions only
new intraday time compression mode: Day/Night - shows two bars (day and
night) per day
daily compression can be now based ona) exchange time (available since
4.00)b) local time (available since 4.50)c) day/night session times
definable by the user (new)
when "activatestopsimmediately" is turned ON then cash from stopped out
positions is NOT available to enter trades the same day
easy access to selected category settings from Symbol->Information
window.
Workspace tree supports in-place editing of market, group, sector,
industry and watch list names. Single click on category name and just enter
the name
CHANGES FOR VERSION 4.52.0 (as compared to 4.51.1)
fixed problem with fixup=0 and handling multiple data holes in a row
added new commands to ASCII format definitions:$MINTICKERLEN
<number> - defines minimum accepted length of the ticker
symbol$MAXTICKERLEN <number> - defines maximum accepted length of
the ticker symbol For example ASX users may wish to use$MAXTICKERLEN
3to make sure that ASCII importer accepts only symbols that have no more
than 3 characters (this excludes ASX options and warrants)
fixed problem with incorrect very first value of the array returned by
variable-period version of HHV/LLV
fixed Procedure/function parameter overwrite issue when using built-in
price arrays and variable overwrite issue
memory allocated for return value is marked for earlier freeing so calling
user-defined functions inside loops should consume less memory
Interval() function enhanced. Now accepts format parameter:Interval(
format = 0 );possible values:format = 0 - returns bar interval in
secondsformat = 1 - as above plus TICK bar intervals are returned with
negative signso Interval() function applied to 10 tick chart will return
-10format = 2 - returns STRING with name of interval such as
"weekly/monthly/daily/hourly/15-minute/5-tick"
vertical quote selection line in linked windows is now independent
changing "same day stops" via SetOption("ActivateStopsImmediately") in
portfolio backtest mode has an effect now (previously reacted only on manual
settings)
SetOption("CommissionMode", mode ) works now in portfolio mode too
(previously workedin old backtest mode only)
SetOption("CommissionAmount", amount ) works now in portfolio mode too
(previously workedin old backtest mode only)
$SEPARATOR command in ASCII importer definitions now allows to import
files that have fields separated by more than one separator characters
Separator string (array of characters) must be enclosed in quotation marks. If
there is only one separator character (as in old versions) then quotation
marks are needed.For example files with joined date and
time$SEPARATOR ", "$FORMAT
DATE_YMD,TIME,OPEN,HIGH,LOW,CLOSEwill be able to import file like
this:2004-02-04 12:30,3.41,3.44,3.40,3.42 (note date and time field
are separated by space not by comma)
Import wizard now supports new separators 'comma or space', 'semicolon or
space' and 'tab or space'
ASCII importer and Quote Editor properly distinguish records with time
specified as 00:00:00 from EOD records (without time)
CHANGES FOR VERSION 4.51.1 (as compared to 4.51.0)
OLE interface methods numbering adjusted to maintain backward
compatibility with previous versions and other programs referring to old OLE
interface
CHANGES FOR VERSION 4.51.0 (as compared to 4.50.10)
OLE automation interface changes:
Analysis.Backtest and Analysis.Optimize now support new "Type"
parameter.Type can be one of the following values:0 : portfolio
backtest/optimize1 : individual backtest/optimize2 : old
backtest/optimizeFor backward compatibility Type parameter is optional
and defaults to 2(old backtest/optimize)
Example code:AB = new
ActiveXObject("Broker.Application");AB.Analysis.Backtest( 0 ); // perform
portfolio backtestAB.Analysis.Optimize( 0 ); // perform portfolio
optimize
OLE automation interface new object: "Commentary"This object has 5
methods:- BOOL LoadFormula( STRING pszFileName ) - loads the formula-
BOOL SaveFormula( STRING pszFileName ) - saves the formula- void Apply() -
displays the commentary - BOOL Save( STRING pszFileName ); - saves
commentary output (result) to the file (use after call to Apply())- void
Close() - closes the commentary window
Commentary object is accessible from Broker.Application object via
Commentary property:
Example code:AB = new
ActiveXObject("Broker.Application");AB.Commentary.LoadFormula("C:\\Program
Files\\AmiBroker\\AFL\\MACD_c.afl");AB.Commentary.Apply();AB.Commentary.Save("Test.txt");AB.Commentary.SaveFormula("MACDTest.afl");//AB.Commentary.Close();
AFL function Now( format = 0 ) accepts new parameter values
Returns current date / time in numerous of formats: // formats
supported by old versionsformat = 0 - returns string containing current
date/time formatted according to system settings format = 1 - returns
string containing current date only formatted according to system settings
format = 2 - returns string containing current time only formatted
according to system settings format = 3 - returns DATENUM number with
current date format = 4 - returns TIMENUM number with current time
format = 5 - returns DATETIME number with current date/time // new
formats available from version 4.51format = 6 - returns current DAY
(1..31) format = 7 - returns current MONTH (1..12)format = 8 - returns
current YEAR (four digit) format = 9 - returns current DAY OF WEEK (1..7,
where 1=Sunday, 2=Monday, and so on)format = 10 - returns current DAY OF
YEAR (1..366)
Custom indicators:If plot name is empty the value of such plot does not
appear in the titleand does not appear in the data tool tip
Plot( C, "Price", colorWhite, styleCandle );Plot( MA( C, 10 ), "",
colorRed ); // NOTE that this plot name/value will NOT appear in the
titlePlot( MA( C, 20 ), "MA20", colorGreen );
SetOption( "field", value )accepts new fields:"CommissionMode" -
0 - use portfolio manager commission table1 - percent of trade2 -
$ per trade3 - $ per share/contract
"CommissionAmount" - amount of commission in modes 1..3
"MarginRequirement" - account margin requirement (as in settings), 100 = no
margin
"ReverseSignalForcesExit" - reverse entry signal forces exit of existing
trade (default = True )
new AFL function: GetOption( "field" ) - retrieves the settings, accepted
fields the same as in SetOption.
Example:
PositionSize = -100 / GetOption("MaxOpenPositions");
new AFL function: GetRTData( "field" )- retrieves the LAST (the most
recent) value of the following fieldsreported by streaming real time data
source )(Note 1: this function is available ONLY in PROFESSIONAL
edition,calling it using Standard edition will give you NULL values for
all fields)(Note 2: works only if data source uses real time data source
(plugin) )(Note 3: availablity of data depends on underlying data
source- check the real-time quote window to see if given field is
available )(Note 4: function result represents the current value at the
time of the call/formula execution/, and they will be refreshed depending
on chart or commentary refresh interval/settable in preferences/. Built-in
real time quote window is refreshedway more often (at least 10 times per
second) )
Supported fields:"Ask" - current best ask price "AskSize " -
current ask size"Bid" - current best bid price "BidSize " - current
bid size"52WeekHigh" - 52 week high value"52WeekHighDate" - 52 week
high date (in datenum format)"52WeekLow" - 52 week low
value"52WeekLowDate" - 52 week low date (in datenum format)"Change" -
change since yesterdays close"Dividend" - last dividend
value"DivYield" - dividend yield"EPS" - earnings per share"High" -
current day's high price"Low" - current day's low price"Open" -
current day's open price"Last" - last trade price"OpenInt" - current
open interest"Prev" - previous day close"TotalVolume" - total today's
volume"TradeVolume" - last trade volume"ChangeDate" - datenum
(YYYMMDD) of last data change"ChangeTime" - timenum (HHMMSS) of last data
change"UpdateDate" - datenum (YYYMMDD) of last data update"UpdateTime"
- timenum (HHMMSS) of last data update"Shares" - total number of shares
Example:"Bid = "+GetRTData("Bid");"Ask =
"+GetRTData("Ask");"Last = "+GetRTData("Last");"Vol =
"+GetRTData("TradeVolume");
"EPS = "+GetRTData("EPS");"52week high = "+GetRTData("52weekhigh");
Custom indicators:Default names and graph values appear in the title
when using old-style graph0, graph1, graph2 statements in the custom
indicators
HOW TO REPORT BUGS
If you experience any problem with this beta version please send detailed
description of the problem (especially the steps needed to reproduce it) to bugs
at amibroker.com
Check AmiBroker web page at:
http://www.amibroker.com/
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Sponsor
ADVERTISEMENT
Yahoo! Groups Links
To visit your group on the web, go to:http://groups.yahoo.com/group/amibroker/
To unsubscribe from this group, send an email to:amibroker-unsubscribe@xxxxxxxxxxxxxxx
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
|