PureBytes Links
Trading Reference Links
|
Very well done.
Bravo !!
Dimitris Tsokakis
--- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <amibroker@xxxx>
wrote:
> 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:
> http://www.amibroker.com/members/bin/ab4580beta.exe
> and
> 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 area
> you can use automatic reminder service at:
http://www.amibroker.com/login.html
>
> The instructions are available below and in the "ReadMe" file
> ( Help->Read Me menu from AmiBroker )
>
>
> Best regards,
> Tomasz Janeczko
> amibroker.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)
>
> a.. 9 new AFL functions:
>
> NoteGet( "Symbol" );
> - retrieves note linked to "symbol". If symbol is "" (empty
string) then current symbol is used
>
> NoteSet( "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:
> NoteSet("AMD", "Jun 15, 2004: AMD will deliver its first multi-
core processors next year");
>
> ClipboardSet( "Text" );
> - copies the "text" to the Windows clipboard
>
> ClipboardGet()
> - retrieves current contents of Windows clipboard
>
> // this can be used to put dynamically-constructed texts into
> // clipboard
> //
> ClipboardSet( "The price of " + FullName() + " is " + 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.
>
> for( i = 1; i < 10; i++ )
> {
> VarSet( "C"+i, Ref( 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).
>
> b.. 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 buttons
> If 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.
>
> c.. 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.
>
> d.. 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)
>
> a.. profit distribution chart took a bit long when profits were
extremely large - now it is fixed
> b.. changed vertical line selection code to prevent line
disappearing after RT update
> c.. vertical line selection is now working fine in multiple
linked windows displaying different time frames
> d.. chart panes can be now moved up/down using View->Pane->Move
Up/Down without need to re-insert everything to change the order
> e.. fixed 'approx. X days' text in the "Database Settings" window
that reported wrong values in versions 4.53..4.56
> f.. 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)
> g.. 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
ordinary
> text files.
> h.. 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)
>
> a.. fixed crash at address: 0x474f54
> b.. fixed K-ratio calculation. Now follows exactly corrected
Excel sheet from page 89 of "Quantitative Trading Strategies" by Lars
Kestner (published 2003).
> c.. 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)
>
> a.. fixed crash when RT quote window ticker list contained symbol
that did not exist in the database
>
> b.. 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
>
> c.. 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)
>
> a.. implemented workaround to Windows XP status bar display
problem causing plugin status indicator not 'disappearing' sometimes
>
> b.. fixed problem with crash sometimes occuring when calling
Import() OLE automation method
> when 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 not
> set-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)
>
> c.. fputs/fgets/fclose/feof file functions are now protected
against using null file handle
> (common coding error among AFL users)
>
> d.. Parameter names are not truncated in the parameter list
>
> CHANGES FOR VERSION 4.55.0 (as compared to 4.54.0)
>
> a.. Median and Percentile calculations include current bar
> b.. new symbols added via CategoryAddSymbol trigger workspace
ticker list refresh
>
> c.. calling COM methods returning nothing (void) does not
cause "type mismatch" message
>
> d.. duplicate parameters are no longer produced when user
specifies parameter names with trailing/leading spaces in Param
()/ParamStr()/ParamColor()
>
> e.. 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
> f.. Parameters window now is resizable
> g.. 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-DD
> MM/DD/YY
> DD-MM-YY
> etc, 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 settings
>
> ParamTime( "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:SS
> HH:MM
>
> format - 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 settings
>
>
> Examples:
> Title = WriteVal( ParamDate("ParamDateAsDateNum","2004-05-14"),
7.0 );
> Title = ParamDate("ParamDateAsString","2004-05-17",1);
> a.. 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?)
>
> b.. 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 important
> measures 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 slope
> per: 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)
>
> a.. "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 enhanced
> Now 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 = CreateObject("Broker.Application");
> Stocks = AB.Stocks(); // get collection
> Stock = Stocks.Item( Name() ); // currently selected
>
> "FullName : " + Stock.FullName();
> "Alias : " + Stock.Alias();
> "Address : " + Stock.Address();
> "Shares: " + Stock.Issue();
> "Book value: " + Stock.BookValue();
> "Market : " + Stock.MarketID();
> "WebID : " + Stock.WebID();
>
> You can check if OLE object is valid by calling IsNull()
function, example:
>
> AB = CreateObject("Broker.Application");
> Stocks = AB.Stocks(); // get collection
> Stock = Stocks.Item( "INTC" );
>
> if( IsNull( Stock ) )
> {
> printf("COM object invalid (Null) - symbol does not exist\n");
> }
> else
> {
> printf("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)
>
> a.. 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.
> b.. layer properties dialog provides more comfortable setting of
layer visibility
> c.. other minor fixes
>
> CHANGES FOR VERSION 4.53.0 (as compared to 4.52.0)
>
> a.. per-group intraday settings (filtering/daily compression) Use
Symbol->Categories: "GROUP" -> Use own intraday settings, click
> on "Intraday settings" button to define intraday settings
specific to given group.
>
> b.. intraday settings now allow to specify separate day (RTH) and
night (ETH) sessions
>
> c.. time filtering now allows to display:
> a) 24 hours trading (no filtering)
> b) day session only
> c) night session only
> d) day and night sessions only
>
> d.. new intraday time compression mode: Day/Night - shows two
bars (day and night) per day
>
> e.. daily compression can be now based on
> a) exchange time (available since 4.00)
> b) local time (available since 4.50)
> c) day/night session times definable by the user (new)
>
> f.. when "activatestopsimmediately" is turned ON then cash from
stopped out positions is NOT available to enter trades the same day
>
> g.. easy access to selected category settings from Symbol-
>Information window.
>
> h.. 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)
>
> a.. fixed problem with fixup=0 and handling multiple data holes
in a row
>
> b.. 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 3
> to make sure that ASCII importer accepts only symbols that have
no more than 3 characters (this excludes ASX options and warrants)
>
> c.. fixed problem with incorrect very first value of the array
returned by variable-period version of HHV/LLV
>
> d.. fixed Procedure/function parameter overwrite issue when using
built-in price arrays and variable overwrite issue
>
> e.. memory allocated for return value is marked for earlier
freeing so calling user-defined functions inside loops should consume
less memory
>
> f.. Interval() function enhanced. Now accepts format parameter:
> Interval( format = 0 );
> possible values:
> format = 0 - returns bar interval in seconds
> format = 1 - as above plus TICK bar intervals are returned with
negative sign
> so Interval() function applied to 10 tick chart will return -10
> format = 2 - returns STRING with name of interval such
as "weekly/monthly/daily/hourly/15-minute/5-tick"
>
> g.. vertical quote selection line in linked windows is now
independent
>
> h.. changing "same day stops" via SetOption
("ActivateStopsImmediately") in portfolio backtest mode has an effect
now (previously reacted only on manual settings)
>
> i.. SetOption("CommissionMode", mode ) works now in portfolio
mode too (previously worked
> in old backtest mode only)
>
> j.. SetOption("CommissionAmount", amount ) works now in portfolio
mode too (previously worked
> in old backtest mode only)
>
> k.. $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,CLOSE
>
> will 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)
>
> l.. Import wizard now supports new separators 'comma or
space', 'semicolon or space' and 'tab or space'
>
> m.. 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)
>
> a.. 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)
>
> a.. 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/optimize
> 1 : individual backtest/optimize
> 2 : old backtest/optimize
>
> For 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 backtest
> AB.Analysis.Optimize( 0 ); // perform portfolio optimize
>
> b.. 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();
>
> c.. AFL function Now( format = 0 ) accepts new parameter values
>
> Returns current date / time in numerous of formats:
> // formats supported by old versions
> format = 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.51
> format = 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)
>
> d.. Custom indicators:
> If plot name is empty the value of such plot does not appear in
the title
> and 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 title
> Plot( MA( C, 20 ), "MA20", colorGreen );
>
> e.. SetOption( "field", value )
> accepts new fields:
> "CommissionMode" -
> 0 - use portfolio manager commission table
> 1 - percent of trade
> 2 - $ per trade
> 3 - $ 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 )
>
> f.. new AFL function: GetOption( "field" ) - retrieves the
settings, accepted fields the same as in SetOption.
>
> Example:
>
> PositionSize = -100 / GetOption("MaxOpenPositions");
>
> g.. new AFL function: GetRTData( "field" )
> - retrieves the LAST (the most recent) value of the following
fields
> reported 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
refreshed
> way 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");
>
> h.. 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
------------------------ Yahoo! Groups Sponsor --------------------~-->
Yahoo! Domains - Claim yours for only $14.70
http://us.click.yahoo.com/Z1wmxD/DREIAA/yQLSAA/GHeqlB/TM
--------------------------------------------------------------------~->
Check AmiBroker web page at:
http://www.amibroker.com/
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
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:
http://docs.yahoo.com/info/terms/
|