|
Privacy Policy
Find Your Edge...If you're still looking for an edge in
the markets, mechanical trading systems are the best way to get it.
Learn more.
|
Release Notes:
Builder
General Notes:
- It's no longer necessary to
uninstall prior versions of
Builder before
installing the new version. A new version that differs in the second digit of
the version number, such as 1.3 vs. 1.2 will be installed in a new folder,
such as "Adaptrade Builder 1.3." A minor update, such as 1.3.1 will be
installed in the same folder and will over-write the existing version (e.g.,
1.3.1 will install over 1.3.0).
- Provided the installation is on the
same computer as the prior installation, no new activation code should
be required. The new version should install already activated.
- Uninstalling or installing
over an older version will not affect any
project files (.gpstrat files) you may have created or saved.
- New versions of Builder are designed
to read files (.gpstrat files) from prior versions. However, once a file is
saved in the new version of Builder, you will not be able to open it in an
older version.
- The window layout stored with a
currently installed version of Builder is not removed when that version is
uninstalled. This means that if a new version, such as 1.3, has a
different window layout than the prior installed version, the layout may
need to be adjusted when the program is first run. The recommended window
layout for the current version of Builder can be gleaned from the images on
the screen shots page. The output
windows in Builder (Performance, Output, Performance Report, Build Report, Equity Curve, Trades List, and
Strategy Code) are dockable pane windows that can be moved by clicking and
dragging.
- The most recent version released is
listed first, followed by prior releases. The most recent release is always
the recommended download version.
Version 1.3.0.0 (4/9/12)
This release adds position sizing options
to the program. Whereas previously, the position size defaulted to "1" and all
trades had the same size, strategies may now use any of six different position
sizing methods, including fixed fractional, fixed ratio, constant value, and
percent of equity. You can elect to have the build process choose the position
sizing method and/or parameter value or set them yourself prior to building.
In addition to position sizing, the following changes and fixes were made in this release:
- More than 60 new performance metrics
were added to provide more control in specifying build goals, including
period returns (daily, weekly, monthly, annual), R-multiples, percentage
drawdown, leverage, Sharpe ratio, and many others.
- A detailed performance report for
each strategy, including results for long and short trades, is now part of
the output. The report can be printed, copied, or saved to a file in several
different formats.
- A build report is generated for each
strategy describing the features of the strategy along with all the settings
used in the build process. The report can be printed, copied, or saved to a
file in several different formats.
- A time range option for trade entries
was added so that the entry time can be limited to the chosen times on
intraday data.
- An option for limit orders to be
filled only when the limit price is exceeded was added, which makes it
possible to build realistic strategies using limit orders on short intraday
bars (e.g., 1 min or tick data).
- A new input data tab -- Evaluation
Options -- was added for the new position sizing settings and options and
the new limit order fill rule option.
- The set of performance metrics used
in the performance tables and in the build metrics list
can now be customized for each strategy.
- The Trade List now includes
additional columns for the position size, entry and exit
signal types (i.e., labels), position trading costs, and gross profit/loss.
- A program options feature was added
to allow the following settings:
- The number of parallel processes
used during the build can be specified to give the user more control
over how the computer's cores are utilized.
- The default set of build metrics
used for new projects can be selected from a list of all available
metrics.
The EasyLanguage code output now includes labels for each order.
An open trade at the end of the trade history is now recorded in the
trade list, where it's marked as "open trade".
The equity curve can now be copied to the clipboard by right-clicking.
A "Recommend Range" button has been added to the Strategy Options tab to
calculate a recommended range of stop values for fixed size protective
stops. Because these stops are now applied per share or contract, rather
than "per trade", a meaningful range of stop sizes is sometimes not obvious.
The button multiples the average true range by 0.25 and by 4.0 to determine
the equivalent dollar stop values for the recommended range.
[bug fix] The "known issue" from the prior release, related to the use
of the SetStopLoss statement for protective stops applied on the bar of
entry, has been eliminated with the addition of position sizing.
[bug fix] When the stop type was changed from ATR to fixed sized stop
for an existing strategy, and the strategy was rebuilt, the stop size was
zero. This has been corrected.
[bug fix] Invalid code output was generated when the symmetry option was
used, then subsequently switched off, before rebuilding using the prior
population as a starting point. This has been corrected.
[bug fix] Percentage stops were incorrectly updated on each bar within
Builder, whereas the generated code specified that they were updated only on
the bar of entry. This has been corrected so that the stops are only
calculated on the bar of entry within Builder.
[bug fix] The risk values in Builder were not calculated correctly in
some cases. This has been corrected.
Upgrading Notes: For those upgrading from a prior version of Builder,
please note the following regarding the use of project files from prior
versions:
 | Previously, the point value was used for the number of shares of stock.
Because Builder now includes position sizing, the point value for stocks
should now be set to 1, and the number of shares should be set (if fixed
size trading is desired) using the position sizing inputs on the Evaluation
Options tab. |
 | Trading costs were previously interpreted as "per position", whereas now
they are "per share or contract". For stock trades, where the point value
previously was used to represent the number of shares, the costs will have
to reduced to be "per share" if the point value is set to 1. |
Version 1.2.3.1 (1/5/12)
This version is mainly a bug fix release.
The following changes and fixes were made in this release:
- [bug fix] When multiple orders were
filled on the same bar, such as an entry and an exit occurring on the same
bar, the fill prices were incorrect in some cases. This has been corrected.
- [bug fix] For fixed dollar stops, the
CurrentShares keyword was omitted from the stop price statement, resulting
in incorrect stop prices for stocks and forex. This has been
corrected.
- [bug fix] For ATR and percentage
stops, when the stops were applied on the bar of entry, the CurrentShares
keyword was omitted from the SetStopLoss statement, resulting in incorrect
values when applied to stocks and forex. This has been corrected.
- [bug fix] When time was provided in
HHMM format in the price file, a value of zero (0000), representing
midnight, was not read correctly, which resulted in an error message
indicating that the time or date field format was incorrect. This has been
corrected, so that a time of 0 is properly recorded as midnight.
- [bug fix] The total elapsed time
displayed in the status bar was not initialized properly after the initial
build, so that it displayed an incorrect value upon subsequent builds until
the first time update. This has been corrected.
- [bug fix] A new routine to detect the
number of logical cores has been implemented in order to address cases for
which the prior function failed to detect the actual number of cores on the
user's computer. This function is used in the parallel processing algorithms
to allocate processing among the available cores.
- Price files can now be read with time
values in the format HHMMSS (e.g., 091500 for 9:15 a.m.). Previously, time
had to be either in Windows-standard format or in HHMM format.
- On the Build Options tab, the genetic
programming options of crossover percentage, mutation percentage, tree
depth, and tournament size have been labeled as "Advanced" to make it
clearer that the default values usually suffice for most applications.
- The default tree depth has been
reduced to 3 from the prior value of 4. In some cases, multiple levels of
nesting of indicators can cause strategies to take too long to evaluate in
TradeStation and MultiCharts. Reducing the tree depth should reduce the
likelihood of obtaining such strategies.
Known issue (posted 1/15/12; corrected in v 1.3): The SetStopLoss statement contains the
keyword CurrentShares, which will have the value zero when there is no open
position. This will result in a stop size of zero, which will trigger an
immediate exit at the entry price. A workaround is to replace "CurrentShares"
with "MaxShares(1)".
Version 1.2.3.0 (11/22/11)
The following features and fixes are part
of this release:
- Two new types of protective stop
orders were added: a fixed size stop and a percentage stop. The fixed size
stop is given in dollars (or your local currency); e.g., a $500 stop. The
percentage stop is placed a given percentage from the entry price; e.g., 2%
of the entry price below the entry for a long trade.
- All three types of protective stops
can be applied on the bar of entry. This option on the Strategy Options tab
is implemented using the SetStopLoss command in EasyLanguage.
- The following new indicators were
added: weighted moving average, triangular moving average, TRIX, CCI,
Bollinger band, Keltner channel, and standard deviation.
- Indicators that previously only
accepted price or price-based indicators as input, such as moving averages,
now also accept other types of indicators as input.
- The check-box option for exiting
end-of-day was removed from the Strategy Options tab because it was
redundant given the recently added ability to specify order types to include
in all strategies. This now allows the build process to consider this exit
type without requiring it to be included in each strategy whereas
previously, the user had to choose whether or not to include it in each
strategy.
- Minimum length values were added to
the indicator and price pattern look-back ranges on the Strategy Options
tab. For example, the indicator look-back range can be specified as "20 to
30".
- The Strategy Options tabbed window
has been separated into three windows: Indicators, Order Types, and Strategy
Options.
- Help buttons, which bring up the
relevant help topic, have been added to each tabbed input window.
- The coloring on the out-of-sample (OOS)
portion of the Trade List window has been changed. Instead of coloring the
entire OOS portion red or green, depending on whether the OOS net profit is
positive or negative, the background color for each row is colored red or
green depending on the trade profit/loss. This provides contrast to the
in-sample part of the list, where the text color is used to differentiate
profits and losses.
- The start bar for evaluating
strategies has been changed to be consistent with how strategies are
evaluated in TradeStation. Previously, if the start date was changed in
Builder, the strategies would use data prior to the new start date for the
required look-back period; e.g., if the MaxBarsBack setting was 90, the
strategy would look back 90 bars prior to the new start date. This has been
changed so that the strategies now start all calculations on the new
starting date.
- An "Elapsed Time" display message has
been added to the status bar during builds.
- The time at which the build process
is completed has been added to the Output window, alongside the existing
total build time.
- The strategy member number has been
added in parentheses to the display windows (Equity Curve, Trade List,
Strategy Code) to make it easier to identify the strategy that has been
selected from the performance tables.
- The MaxBarsBack value has been added
to code heading comment block of each strategy to make it easier to set this
value in TradeStation without having to refer back to the Builder file.
- A beep sound has been added to
indicate when the build process is finished.
- The amount of installed memory
recognized by Builder has been added to the About Builder window.
- There are new colors and icons for
the user interface.
- [bug fix] The EasyLanguage keyword
BarType has been replaced with DataCompression because the latter works for
both TS 9 and TS 2000i, whereas BarType is not recognized in TS 2000i.
- [bug fix] The routine for detecting
memory capacity in the 64-bit version of Builder may not have worked
correctly in some cases. This has been corrected.
- [bug fix] Project files from versions
1.1.0 to 1.1.1 that contained an exit-on-close exit lost that exit when
opened in versions of Builder newer than 1.1.1. This has been corrected.
- [bug fix] When performing an
"Evaluate All", the population member numbers were reset, but the old
numbers were still displayed in the strategy code header comment. This has
been corrected so that the population numbers are not reset.
- [bug fix] When sorting the table of
order types, the "Include" column disappeared. This has been corrected.
Versions 1.2.2.0 - 1.2.2.2 (9/6/11, 9/7/11,
9/20/11)
This release adds the ability to include
custom indicators in Builder. If a custom indicator is plotted on a chart and
the data is saved to a text file, the column of indicator values can be read
into Builder and associated with a text string that represents the code for the
corresponding indicator function used to generate the values in the file. When
Builder uses the indicator in strategies, it includes the text string for the
indicator function code in the entry or exit statement in which the indicator is
used. Provided that function is available in the trading platform when the
strategy is executed, the code will generate the same results as in Builder.
More information on this feature can be found in the section of the
user's guide
entitled Input Data and Settings.
Part of this new feature is the Price File Format window, which allows the
user to specify the columns of data in the text file of price data. This
provides more flexibility for reading price files. For example, the minimum
allowable price file now consists of the date and closing price, whereas
previously it was necessary to include date, time, open, high, low, and close.
Any column that should be ignored or skipped over can be labeled as such. The
label for any column in the file can be selected from a list that includes date,
time, open, high, low, close, volume, up-tick volume, down-tick volume,
indicator (for custom indicator data), and don't read/ignore. Similarly, there
is now a checkbox for combining the up-tick and down-tick volumes into total
volume. The Price File Format window is opening automatically when reading in a
new price file and can be opened again at any time from the Markets tab in order
to change the settings.
[bug fix] Version 1.2.2.1 corrects a bug in version 1.2.2.0 that can cause
sporadic program crashes when using custom indicators with a return type of
"price". Otherwise, version 1.2.2.1 is identical to 1.2.2.0.
[bug fix] Version 1.2.2.2 corrects a bug that can cause occasional program
crashes when building on intraday data when the exit end-of-day option is
selected.
[bug fix] Version 1.2.2.2 improves the use of custom indicators when more
than one custom indicator uses the custom return type. In version 1.2.2.0 and
1.2.2.1, different custom indicator returning custom return values could not be
compared to each other. In version 1.2.2.2, it's possible for different custom
indicators returning custom values to be compared to each other. For example, if
you have several correlation indicators, each returning custom values in the
range -1 to +1, the different indicators may now be compared to each other, such
as correlation(C of data1, C of data2, 14) < correlation(C of data1, C of data3,
14).
Version 1.2.1.1 (8/8/11)
This release corrects several errors
related to the new order processing engine developed for the prior release that
can occur when using the new option to allow trades to reverse existing
positions. Specifically, the changes in this version are as follows:
- [bug fix] When the option to "Wait
for exit before entering new trade" was unchecked, certain exit orders
previously were entered at incorrect prices when there was an open position
on the same bar and the buy (sell) stop price was below (above) the open.
This has been corrected.
- [bug fix] When the option to "Wait
for exit before entering new trade" was unchecked and the option to
exit-at-close was selected (checked), an extra variable (EndofSess) was
added to the entry condition statements, which prevented entry orders from
being placed. This has been corrected.
- A more refined assumption about the
order of prices on a given bar has been incorporated into Builder. In
general, it's not possible to know whether the high or low occurred first on
a given bar given only the open, high, low and close. Consequently, when
multiple orders are executed on the same bar, it's necessary to assume which
occurred first, the high or the low. Typically, when the bar closes up, it's
assumed that the low occurs first. However, when the close and the open are
at the same price, Builder now looks at whether these prices are closer to
the high or the low. If they're closer to the high, it's assumed that the
high occurs first.
- The way in which the population is
initialized when "Reset on Build" option is unchecked has been changed.
Previously, the program just copied the members from the current population
without re-evaluating them. It was assumed that in this case they would be
used to continue building on the same price data. Now, the members that are
copied from the prior population are re-evaluated before continuing. This
makes it easier to develop strategies that can work across multiple markets.
For example, you can build a few generations on one market, select a
different market under the Markets tab, and, with the Reset on Build option
unchecked, build a few generations on the second market. The second build step
will start the build using the population members generated on the first
market and evolve them from there using the second market's data. You could
then repeat the process for other markets.
- The name of the project (.gpstrat)
file is now included in the comment header block at the top of each
strategy. To include this in existing strategies, just select the given
strategy and select Evaluate from the Build menu.
Known issue in v 1.2.1.1:
When using the AccumDist function in
intraday strategies, the volume in the price file should be the sum of the up
tick and down tick volumes. Typically, the up and down tick volumes are present
in separate fields in the price file. When Builder asks whether the two volume
fields should be combined, it's necessary to say "yes" in order for the
AccumDist function to evaluate correctly. However, with some symbols, the
intraday volume in TradeStation is defined as the up tick volume only, so it's
necessary to say "no" when asked to combine the two volume fields. For these
symbols, the AccumDist function should be excluded from the build set or
incorrect results may be obtained.
Version 1.2.1.0 (7/27/11)
This release includes versions compiled
specifically for both 32-bit and 64-bit versions of Windows. Under 64-bit
Windows, programs can allocate more than 2GB of memory, which is the limit under
32-bit Windows. This means that the 64-bit version of Builder can handle larger
population sizes and longer price files. While the 32-bit version (and all prior
releases) will work under both 32 and 64-bit versions of Windows, it's
recommended that the 64-bit version be installed on computers running 64-bit
Windows.
Please note that both the 32 and 64-bit
versions of this release are compiled from the same code and are functionally
identical, including the Builder (.gpstrat) files generated. Because they're the
same program, only one may be installed on any given computer. If you first
install the 32-bit version, it will be necessary to uninstall it if you later
decide to install the 64-bit version. If your computer runs 64-bit Windows, it's
strongly recommended that you install the 64-bit version; otherwise, it will be
necessary to install the 32-bit version.
Other changes in version 1.2.1.0 are as follows:
- An "Include" column has been added to
the Order Build Set table. Checking rows in this column specifies that the
checked order type is to be included in every generated strategy. For
example, to include a money management (protective) stop exit in each
strategy, check the Include column for the protective stop order type.
- An option has been added to the
Strategy Options tab: "Wait for exit before entering new trade". In prior
versions, this was always true for generated strategies. If this option,
which is checked by default, is unchecked, new entries can reverse existing
positions; e.g., a short entry can reverse a long trade before the long
trade exits on its own.
- A more versatile and accurate
strategy order processing engine has been developed to support both current
and future program requirements. This enables the simulation of more complex
combinations of trading orders and yields more accurate results, including
more accurate drawdown calculations. Somewhat slower processing times may be
noticed.
- The About Builder window now includes
the label "Windows 32-bit Edition" or "Windows 64-bit Edition" depending on
which version is installed. The number of processor cores recognized by
Builder is also displayed in this window.
- The View window on the Markets tab
now allows full row selection to highlight the row of data clicked on.
- [bug fix] The highest and lowest
indicator functions are now initialized better to give accurate results on
bars prior to the MaxBarsBack setting.
- [bug fix] End-of-session logic used
to filter entry and exit statements didn't work correctly on tick data where
multiple ticks had the same time stamp. The end-of-session logic has been
removed for tick and range bars.
- [bug fix] Trade exits based on the
time limit condition (e.g., trade only between 10:30 and 12:30) were not
executing properly on some data where the session end time preceded the
session start time. This has been corrected.
- [bug fix] Time-based conditions for
entry and exit didn't take into account the time range limit set by the
user. Also, the number of bars for the "exit at N bars" exit was based on
the total number of bars in the day, rather than the number of bars in the
time range selected by the user for trading. Both issues have been
corrected.
- [bug fix] Trades exiting on the last
bar of the chart were not recorded or listed in the performance tables. This
has been corrected.
- [but fix] In certain cases, a long
entry and a short entry can both be filled at the open on the same bar, such
that the second order reverses the position established by the first entry
order, leaving the position dependent on which order is filled first. The
cases of both entries being stop orders and both entries being limit orders
were not properly accounted for in prior versions. This has been corrected.
Known issue in v 1.2.1.0 (corrected in
version 1.2.1.1):
With the "Wait for
exit before entering new trade" option turned off (unchecked) and the exit
end-of-day option selected, there will be an extra EndofSess variable added to
the entry conditions. The erroneous entry conditions look like the following
(depending on other options selected):
If EndofSess and (EntriesToday(Date) < 10 or EndofSess)
and EntCondL then begin
The first EndofSess should not be present and should be removed in
TradeStation before running the strategy. After removing the erroneous variable,
the above statement should read as follows:
If (EntriesToday(Date) < 10 or EndofSess) and EntCondL
then begin
The results shown in Builder are not affected by the code error. This issue
will be corrected in the next release.
Versions 1.2.0.2 (5/24/11)
The substantially faster build speed of
version 1.2 makes it feasible to process much larger files of price data
covering longer time periods. Unfortunately, this also means that the program
can require more memory to process these larger files than is available from the
computer. To avoid program crashes resulting from memory allocation errors,
version 1.2.0.2 now includes memory management features that monitor Builder's
memory usage. When more than 95% of the computer's memory is allocated and
additional memory is required during the build process, Builder sends an error
message to the Output window and exits the build. The message suggests reducing
either the population size or the size of the price file. In most cases, the
memory management routines shut down the build process while avoiding a program
crash. The build parameters can then be changed and the build rerun.
The new memory features in version 1.2.0.2
also increase the size of the population that can be built before running into
memory problems by roughly 50%.
Other changes in this version are as follows:
- The help files and PDF user's guide
have been updated with the latest changes and features through this version.
- Previously, if the evaluation date
range was changed so that it included periods both before and after the
range of dates used in the build, only the largest of the two periods was
included in the evaluation range. This was the out-of-sample period. This
was done because Builder only tracks one out-of-sample period at a time --
either preceding or following the in-sample period, but not both. However,
this meant that the user could select a date on the Markets tab, evaluate
the strategy, and the strategy would not necessarily be evaluated over the
entire chosen range of dates. This has been changed so that the evaluation
is performed over the entire date range selected by the user on the date
range bar on the Markets tab. If there are periods both preceding and
following the build period, then the largest of those will be identified as
the out-of-sample period.
- [bug fix] The option to limit trades
to specified times of day on the Strategy Options tab did not cause trades
to exit properly at the end of the time range in cases where the trading
session spanned two days, such as with some forex data. This has been corrected.
Versions 1.2.0 and 1.2.0.1 (4/29/11 and
5/4/11)
These versions contain substantial
improvements in strategy building speed along with several enhanced strategy
logic features. The
new features and improvements in these versions are as follows:
- The build algorithm has been fully
parallelized to take full advantage of multi-core processors. Builder
detects the number of physical cores on the computer and processes
population members in parallel on the different cores.
- The strategy evaluation algorithm has
been rewritten to improve processing speed. In combination with the new
parallelized version of the build algorithm, initial testing indicates speed
improvements of up to 25 times on a dual core machine compared to prior
versions.
- An option to limit trades to
specified times of day has been added to the Strategy Options tab. For
example, an intraday strategy may be specified to trade only between 9:00 am
and 12:00 pm. In this example, no trades will be entered prior to 9:00 am
and any trade open at 12:00 pm will be closed at market.
- Logical conditions for exiting trades
have been added. These conditions, which are equivalent to the entry
conditions, are evolved along with the entry conditions during the build
process. The conditions (one for long trades; another for short trades) are
used to exit the trades at market. Accordingly, an "Exit at Market" order
type has been added to the Order Build Set.
- Price-based indicators can now apply
to other price-based indicators. For example, it's now possible to evolve
logical conditions such as Average(XAverage(H, N1), N2), MACD(Highest(C,
N1), N2, N3), and Momentum(Lowest(Average(C, N1), N2), N3). The following
indicators have this capability: Average, XAverage, Highest, Lowest,
RateofChange, RSI, Momentum, and MACD.
- The crosses above/crosses below
operator has been added and can be seen in the Indicator Build Set.
- A new build metric has been added to
measure the maximum value of the MAE (maximum adverse excursion) across all
trades. This metric (Max MAE) is listed in the Build Metric table (Build
Goals tab) and complements the Ave MAE metric that was added previously.
Minimizing the Max MAE may improve trade quality.
- Variables have been added in the
generated EasyLanguage code for the entry prices for stop orders and for
target exit prices.
- More flexibility has been added in
reading text files of price data. The file may now start with an optional
line of labels. The lines of price data are assumed to consist of date,
time, O, H, L, C, Volume1, Volume2. The last two fields are optional and
contain volume information, such as the total volume or down tick and up
tick volume, respectively. If two fields following the closing price are
found, the user is prompted as to whether the two fields should be added
together to get the total volume. For tick or intraday data, the two volume
fields would generally represent up and down tick volume and should be
combined to get the total volume.
- A "View" button has been added to the
Markets tab. Clicking the button opens a simple tabular display of the price
data for the market selected in the Market Data table.
- [bug fix] An error that caused
end-of-day exits to occur at the end of the calendar day, rather than at the
end of the trading session, primarily on forex data, has been corrected. The
error affected intraday strategies with the "Exit End-of-Day" option
selected for which the session starting time was later than the session
ending time (i.e., the session spanned two calendar days).
- [bug fix, v 1.2.0.1] The setting for
whether the two volume fields in a price file are combined to get the total
volume was not recorded properly, which caused the program to prompt again
for the same information. This has been corrected.
- [bug fix, v 1.2.0.1] A bug that
caused the program to crash when the Cancel button was clicked in certain
circumstances has been corrected.
- [bug fix, v 1.2.0.1] A bug that
caused memory leaks when the Cancel button was clicked in certain
circumstances has been corrected.
- [bug fix, v 1.2.0.1] An error that
resulted in the Crosses above/below indicator to continue to be included in
strategies after the user removed it from the build set has been corrected.
- [bug fix, v 1.2.0.1] When all but a
small number of indicators were removed from the build set, the mutation
operator caused a program crash. This has been corrected.
Version 1.1.1 (1/15/11)
This is mainly a "bug fix" release to
correct several small errors in version 1.1.0, described below. If you currently have version 1.1.0
installed, you should read the items below to determine if installing this
version would correct any discrepancies you may have noticed in your results
compared to the corresponding results in TradeStation. The changes in this
version are as follows:
- [bug fix] On intraday data, the
Chaikin oscillator incorrectly used "volume" as the first input, rather than
"ticks." This has been corrected. This only applies to intraday data, which
includes tick and range bars. Please note that re-evaluating strategies that
incorrectly use "volume" as the input will not change the input to "tick."
The strategies must be rebuilt in order to obtain the correct code.
- [bug fix] When setting a limit on the
number of entries per day on intraday data ("EntriesToday(date) < x"), the
EasyLanguage code mistakenly examined the last bar of the day when
evaluating the number of entries for the first bar of the day. In some
cases, this prevented entries on the first bar of the day. This has been
corrected. Re-evaluating a strategy that limits daily entries on intraday
data will re-write the code to the correct form.
- [bug fix] The number of entries per
day was not calculated correctly on intraday data when two entries occurred
on the same bar. This has been corrected. Re-evaluating a strategy that
includes such trades will correct the strategy results in Builder.
- [bug fix] When using Range bars in
Builder, the OpenD, CloseD, HighD, and LowD functions did not match
TradeStation. In TradeStation, these functions are set to return -1 on
Range/Momentum bars. Builder previously calculated the correct values for
the functions, which generated a mismatch between Builder and TradeStation.
This has been corrected. Re-evaluating a strategy that contains these
functions when the data is Range bars will correct the performance results
in Builder.
- [bug fix] When using Range bars in
TradeStation, the SetExitOnClose command is inactive. Previously in Builder,
this command worked as expected, which produced a mismatch between Builder
and TradeStation. This has been corrected. Selecting the "Exit end-of-day"
option in Builder will still insert the SetExitOnClose command in the
EasyLanguage code, but the command will not be recognized when evaluating
the strategies, either in Builder or in TradeStation, when range bars are
used. Re-evaluating a strategy that contains this command on range bar data
will correct the performance results in Builder.
- Improvements to reading price files.
Builder can now read trade times in a variety of formats, including the
format used when saving price data from MultiCharts (e.g., 2:36:02 PM). A
MultiCharts price file will generally be read correctly by Builder up
through the volume field (date, time, O, H, L, C, Volume). Also, volume is
now an optional field. If the volume field is not present, the volume values
will be set to zero. For files saved from the TradeStation Data View window
on intraday data, volume consists of two fields, up volume and down volume.
The two values are added together to obtain the "volume" value for each bar.
If the second field (down volume) is not present, the volume will be set to
the first volume field.
Version 1.1.0 (11/12/10)
This is the final release of version 1.1.0
and replaces version 1.1.0 Beta, described below. This release includes fully
updated documentation consisting of the PDF
user's guide and the html help files that are accessible from within the
running program. In addition to the documentation, several other changes and
fixes have been implemented since the beta version was released. These include:
- If the program can't read the price
data file or the format is incorrect, an error message is now displayed.
- [bug fix] An error in evaluating the
order of entries when both long and short entries occur at the open has been
corrected.
- [bug fix] An error where the open
trade equity at the end of the in-sample period was not accounted for at the
start of the out-of-sample period (when out-of-sample follows in-sample) has
been corrected. The drawdown not includes the open loss at the end of the
period.
- The absolute value operator is now
used by default when forming the price difference for entry and exit stop
and target orders unless the user has excluded absolute value from the build
set. This should reduce the likelihood of ill-formed entry orders, such as a
buy stop order below the market.
- [bug fix] A memory error that could
cause the program to crash when building on intraday data has been
corrected.
- [bug fix] An error in which the views
were not updated after the population was re-initialized following a restart
based on out-of-sample performance has been corrected.
- [bug fix] The horizontal scroll bars
on the Markets and Build Options tabs now work properly.
- [bug fix] An error in which the
slider control on the Markets tab was initialized with the in-sample and
out-of-sample periods reversed when the out-of-sample preceded the in-sample
has been corrected.
- The functionality of the Cancel
button has been improved so that the program cancels more quickly.
Previously, the program had to wait for the current population member to
finish building before cancelling, which could make it seem like the program
was "hanging" when building on long data files.
- [bug fix] An out-of-memory error that
could crash the program when a large population size or large tree depth was
selected now generates an error message recommending that the population
size or tree depth be reduced.
- [bug fix] An error in which the
"Reset on out-of-sample performance" field didn't permit a "." character for
decimal numbers, such as the correlation coefficient, has been corrected.
- [bug fix] An error in which the
AccumDist function (accumulation distribution) used "volume" as the input,
rather than "ticks", when building on intraday data has been corrected.
Version 1.1.0 Beta (10/1/10)
This version is a major update of version
1.0.1. The following are some of the more notable features and changes in this
version:
The settings table has been replaced by a series of tabbed windows that
provide additional options and more intuitive controls, such as slider bars,
spin buttons, tables, etc. The tabbed windows are: Markets, Strategy Options,
Build Goals, and Build Options. A brief description of each one follows. The
windows are shown on the Screen Shots page.
Markets Tab. This window provides a table of any price data files
that have been selected. The build process will be run on whichever file is
selected in the table. Following the build, any selected strategy may be
evaluated on a different market by selecting the market from the table and
selecting Evaluate from the Build menu.
This window also allows you to:
- Select the start and end dates for analysis, and
- Segment the data into in-sample and out-of-sample segments using a
slider control. The build process will take place on the in-sample
segment, and, following the build, the strategies will be evaluated on
the out-of-sample data.
Strategy Options Tab. This window presents the list of available
indicators and entry and exit orders in two table. The two tables represent
the "build set". By clicking on each entry in the table, the associated
indicator or order type can be added or removed from the build set. Removing
an item means it will not be considered during the build process. By
default, all items are initially included in the build set. This means all
items may be chosen during the build process, although whether or not any
given indicator or order type is used will depend on how it affects strategy
performance.
This tab also includes other strategy options, such as long/short
symmetry, market sides (long only, short only, or long/short), etc.
Build Goals Tab. This window contains a table of performance
weightings to guide the build process. In this version of Builder, a number
of new performance metrics have been added (see below). Additionally, you're
no longer limited to merely weighting each performance metric. You can now
select a target value for each metric. For example, if you want guide the
build process to strategies with 200 trades, you can click in the Type
column in the table in the row for the number of trades and select "Target"
from the pull-down menu. Then enter a value of 200 for the target value. You
would also enter a weight value to indicate how important this target value
is relative to any other metrics you've selected. You can leave only a
weight value for any metric that you want to minimize or maximize while
selecting both a target and a weight for any metrics that you want to
specify more precisely.
Build Options Tab. This window contains options that affect the
build process, such as the population size, number of generations, tree
depth, crossover percentage, etc. There is also a new option on this tab
that resets the build process if the out-of-sample results don't meet your
goals. You can have the program check the out-of-sample results every x
generations, and start over if a specified performance value is not met.
Other new features in version 1.1.0 include:
- Support for tick and range bar data.
- Support for TS 2000i. Select TS 2000i on the Build Options tab under
Code Output and re-evaluate a strategy using the Evaluate command (Build
menu) to convert the code to TS 2000i format.
- A new price data file format is available to make it easier to copy data
from TradeStation. While viewing a chart in TradeStation, just right-click
the mouse and select "View Data Window". This option can also be found in
the View menu in TradeStation. This will bring up a small window that shows
the price data in the chart window. Click the disk icon in the
upper-left-hand corner of the data window to save the price data to a text
file. You can then select this file in the Markets tab in Builder, which is
now capable of reading this format directly. This means the WriteOutPrices
function is no longer needed for current versions of TradeStation, although
it is still supported.
- When reading a price file, Builder now auto-detects the bar type, bar
size, session times, date range, and tick size.
- The tick size is used to round fill prices to the nearest tick.
- The number of entries per day for day trading strategies can be limited
to a maximum value via an option on the Strategy Options tab.
- Limit entry orders are now allowed.
- The out-of-sample (OOS) performance is listed in a table of results and
shown on the equity curve. If the OOS results are profitable, the OOS part
of the equity curve is shaded green; otherwise, it's shaded red.
- The trade-by-trade results are listed in a table. The trades in the OOS
segment are shaded with a green background if the OOS segment is profitable
or red if the OOS segment is unprofitable. In the in-sample segment, winning
trades are shown in green text while losing trades are shown in red text.
The trade data can be saved to a text file by right-clicking in the table
and selecting "Save to file". The file format is compatible with
Market System Analyzer (MSA).
- New indicators: volume, DI-/DI+, DMI, Accumulation/distribution, Chaiken,
momentum, MACD, FastK, FastD.
- New performance metrics: Ave win, ave loss, win/loss ratio, ret/DD
ratio, ave bars in trades, ave bars in wins, ave bars in losses, max win,
max loss, average maximum adverse excursion.
- Additional complexity has been added to the entry and exit orders by
generalizing the way stop and target prices are calculated.
- Specifying the number of generations as zero is now allowed. Doing this
produces a population of randomly-generated strategies. This can be a good
way to see the variety of strategy logic available from the program.
- The fidelity of the strategy evaluations relative to those in
TradeStation has been improved. Any differences between Builder's
performance reporting and the results of running the same strategy in
TradeStation should now be minor, with most differences erring on the
conservative side.
Several bug fixes have been made, including:
 | The time-based exit order (exit when time exceeds a target value)
incorrectly used >, rather than >=. This has been corrected. |
 | The drawdown calculation incorrectly omitted the trading costs on trade
exit. This has been corrected. |
Version 1.0.1 (5/27/10)
This version added an equity curve plot and a table of performance results to
version 1.0.0.
Version 1.0.0 (3/28/10)
Initial release. This version is no longer
available for download.

Adaptrade Builder
$995 (now thru
5/31/2012) $1495 Lifetime License v1.x

Terms & Conditions
Ordering Information

|

|