Versions of Adaptrade Builder
Release Notes
-
It's not necessary to uninstall prior versions of
Builder before installing the new version, regardless of the version number. For example,
versions 4.3.0 and 3.4.0 can be installed side-by-side, alongside 4.2.1, 2.5.0, etc.
-
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 project 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 most recent version released is
listed first, followed by prior releases. The most recent release is always
the recommended download version.
Version 4.7.0/4.7.1 (July 3/July 6, 2024)
Versions 4.7.0/4.7.1 includes several program improvements and bug fixes.
The following changes and fixes were made for this release:
-
The "Exit after" and "Trade entry" time-of-day options have been extended to work correctly
when the trading session spans two calendar days. For example, if the session starts at 5:00 pm and ends
the next day at 4:00 pm, it was not possible in prior versions to set an entry time range of 10:00 pm to 8:00 am
because the second time had to be later than the first time. The new formulation properly handles this.
-
The speed of converting intraday data files to other bar sizes and/or session times has been increased for
large files (e.g., changing the bars size on the Build Symbols window for a file of 1 million 1-minute bars).
-
The Data View window now allows the user to click the close button to cancel the loading if it's taking too long.
Also, if there's a file reading error, it now notes in the window that an error occurred and
reminds the user to look in the Messages window for the detailed error message.
-
Price data files with blank lines -- at the beginning, middle, or end of the file -- can be read correctly,
whereas previously, blank lines had to be manually removed to avoid a file reading error.
-
The File Open command can now be used to open .gpcode files, which open in the editor.
-
The code pane has been updated to match the code pane in the editor.
-
The font for the Messages window has been changed to match the font used in the other output windows in the program.
-
The font for dialog (input) windows, such as the drop-down windows on the ribbon menu, has been changed to be
slightly larger and more readable.
-
When a symbol is added to the Build Symbols window via the button on the Symbols window for the symbol library
(or using the right-click menu),
the symbol is now also added to the Evaluation Symbols window. Also, the buttons on the symbol library have been renamed to
"Add to Library" (previously "Add New Symbol") and "Add to Project" (previously "Add to Build").
-
A Properties button, which opens the Symbol Properties window, has been added to the Build Symbols and Evaluation Symbols
windows. Optionally, as in prior versions, the entry in the Market Symbols table can be double-clicked to open
Symbol Properties.
-
The Tips & Hints section of the user's guide (Usage Topics) has been expanded and updated.
Similarly, the tips on the Welcome screen have been updated to reflect recent changes to the program.
-
A new set of themes -- Office 2022 -- has been added, which is a variation on the existing Office 2019 themes.
In addition, the colors for some themes have been modified to make the colors more consistent across the different windows
and panes; this includes the Carbon theme and several of the blue theme options.
-
[bug fix] The program could crash under the following conditions: start with population where all strategies are short-only.
Change to long/short, uncheck reset-on-build, and build.
-
[bug fix] Bar times were not being read correctly when the time was given in 12-hour format (i.e., with AM/PM label)
for times with the hour "12" when using the custom format option on the Data Format window.
This did not affect 24-hour times or any settings using the "locale" formatting option.
-
[bug fix] In NT8, custom indicators with inputs that reference a member variable, such as Input.X1, were processed incorrectly
in the part of the code that plots the indicators, resulting in code errors.
-
[bug fix] When a custom indicator label was used as column heading in a price data file and it contained parentheses
or commas, the characters were incorrectly
removed under the assumption they represented negative numbers or the thousands separator, respectively.
Now, provided the label is quoted (e.g., "MyFunction(C, 14)"), it's properly read and used to initialize
the custom indicator function field on the Data File Format window.
-
[bug fix] The font color on the equity curve for Visual Studio 2019 Dark theme was incorrect.
-
[bug fix, 4.7.0] Using the auto-save option in version 4.7.0 caused a program crash.
-
[bug fix, 4.7.0] The options to save and retrieve file formatting and data formatting settings on the Data File Format
and Data Format windows were inoperative in 4.7.0.
Note: Changes were made to the platform files for MT4. The files AdaptradeBuilderInclude.mqh and AdaptradeBuilderLib.ex4
must be re-installed for version 4.7 if you build or intend to build strategies for MT4 in version 4.7.
The indicators for MT4 do not need to be re-installed. No changes were made to the platform files for other
scripting languages. Please refer to the user's guide (Getting Started,
Installation Instructions) for details on installing the platform files.
Version 4.6.0 (December 20, 2023)
Version 4.6.0 corrects two bugs and includes one program improvement.
The following changes and fixes were made for this release:
-
The way percentage-based entries and exits are calculated was changed so that they
work correctly with negative prices. This affects percentage-based protective stop orders, in
which the exit
price is based on a percentage of the market price, percentage-based target exits, and
percentage-based entry stop and limit orders. For positive price data, the calculated prices are exactly the
same as in
prior versions; the change only affects the results for negative price data, such as prices that result from
back-adjusting over a long time horizon.
-
[bug fix] The program could crash or the program window
could go blank during building, sometimes after a large number of generations were completed, regardless of the
program settings. This bug is only present in version 4.5.
-
[bug fix] On the Trades List window, if no trades were selected and the user right-clicked on the heading row and selected
"Copy to CSV" or "Copy to HTML" from the context menu, the program would close.
-
No changes were made to the user's guide or to Adaptrade Editor for this version.
Note: No changes were made to the platform files for version 4.6. If your platform files are up-to-date
through version 4.5,
there's no need to re-import them into the platform for this release. Please refer to the user's guide (Getting Started,
Installation Instructions) for details on installing the platform files.
Version 4.5.0 (November 17, 2023)
Version 4.5.0 is mainly a bug-fix release. The following changes and fixes were made for this release:
-
A change was made to the way "included" exit order types are interpreted by the program. If multiple protective stop,
target exits, or trailing stop orders are selected in the "Include" column, the program will pick one of the included order types
at random. That way, you'll be guaranteed to get one of the included order types, but you're still leaving it up to
the program to choose which one. For example, if you "include" all three types of protective stop orders, one of
the stop orders will be included in each strategy. The same process applies to target exits and to trailing stops.
Previously, if multiple types in the same category of exit order were "included", the first one in the orders
list was included in each strategy.
-
Two new options were added for opening the editor from within Builder: (1) Double-clicking on the strategy in the
Build Results table, and (2) right-clicking on the code pane and selecting a new menu option on the context (pop-up) menu.
-
[bug fix] When including a neural network, variable definitions and declarations were missing or incorrect for some strategies.
-
[bug fix] When running the significance test on symbols with custom indicators, the program was unable to find the
custom indicator values, so it terminated the test. In other cases, the program could crash due to multiple warning
windows being opened at once from multiple processing threads.
-
[bug fix] If too many order types were "included" on the Order Types window, it could cause a program crash.
-
[bug fix] The average percentage loss metric value was incorrectly calculated by dividing by the number of winning trades,
rather than the number of losing trades
-
[bug fix] When a multiplier of ATR (e.g., X1 * AveTrueRange) appeared in a logical condition (though not when it appeared in orders),
it was set to zero in the Builder back-test. The bug only affected "constant * ATR", not "ATR * constant".
-
[bug fix] The build report didn't list "included" indicators.
-
[bug fix] When Builder saved a trade list to a MSA file, it failed to record the trade data format as English (US)
format and set the account locale format to the user's current locale setting.
-
Several changes were made to the user's guide: (1) An incorrect description of buy stop orders when using the
bid/ask spread was corrected (Symbols and Settings, Symbol Library, Symbol Settings, Bid/Ask Spread), (2) text
was added to Build Settings, Indicators and Order Types to explain that for included indicators, the indicators
are added to all entry and exit conditions (EntL, EntS, ExitL, ExitS), to the neural network, and to entry prices
(if an included indicator is a price), and (3) text was added to Build Settings, Evaluation Options, Significance Test
Panel to point out that if the test is run after the build is completed, the test cannot be run if the build data
are not available.
-
This version of Builder also includes a new version of Adaptrade Editor, version 1.4.0, which is a minor bug-fix release.
For details, please see the release notes for Editor.
Note: No changes were made to the platform files for version 4.5. If your platform files are up-to-date
through version 4.4,
there's no need to re-import them into the platform for this release. Please refer to the user's guide (Getting Started,
Installation Instructions) for details on installing the platform files.
Version 4.4.0 (April 20, 2023)
Version 4.4.0 adds an "Include" column to the Indicators window. Indicators can be included in each strategy,
similar to the "Include" column for order types. Checking the Include column for an indicator means the build process
will include the indicator in each logical condition (long entry, short entry, long exit (if applicable), short exit
(if applicable)), and in at least one neural network input (if present). If one of the order price indicators is included and
price-based orders are used, the included indicator will be used as the first price in the order.
Because of the stochastic nature of the evolutionary algorithm, it's not possible to guarantee the
inclusion of indicators in every strategy, although in most cases, the selected indicators will be present.
In addition, the following changes and bug fixes were made for this release:
-
A change was made to the algorithm for generating neural network inputs to make it more efficient.
A consequence is that neural network inputs now tend to have more variables than in prior versions;
i.e., they're more complex.
-
[bug fix] When the "well formed" stop/limit order option was selected (Evaluation menu, Order Placing Options),
the order price used to perform the entry
restriction calculation was set to zero in the Builder back-test for $-based and %-based stop and limit orders,
resulting in zero long trades for stop orders and zero short trades for limit orders in Builder for these order types.
Because the generated code was correct, this resulted in discrepancies between the results in Builder and those in the
trading platform. The "well-formed" option worked correctly for price-based stops and limits. Note that $-based
and %-based stops and limits don't benefit from the "well-formed" option since those order types are well-formed
by definition.
Note: No changes were made to the platform files for version 4.4. If you installed them for version 4.3,
there's no need to re-import them into the platform for this release. Please refer to the user's guide (Getting Started,
Installation Instructions) for details on installing the platform files.
Version 4.3.0 (December 15, 2022)
Version 4.3.0 adds strategy "lock options", contained in a new drop-down window on the Build menu. The lock options
prevent the build process from modifying the selected parts of the strategy logic and entry and exit orders. For
example, you could use the editor to write a strategy that buys on a 5-point pull-back. You could then import the
strategy into Builder and use the cloning feature to duplicate the strategy across the population. If you then use the
lock options to lock the long entry conditions, the program will evolve the exit conditions while leaving the entry
condition unchanged. In that way, you can find the optimal exit conditions for your entry condition.
In addition, the following changes and bug fixes were made for this release:
-
[bug fix] With the option "Wait for exit before entering new trade" turned off, if an entry order for a new
trade was placed for the same bar as the exit order for an open trade, the entry could be filled in the back-test
at the wrong price (e.g., a long target exit and a long stop entry on the same bar).
-
[bug fix] If a data field in a symbol file had more than 10 decimal digits and a custom formatting option was used,
the decimal part was converted to zero.
-
[bug fix] In generating NinjaScript 8 and AFL (AmiBroker) code, the parameter range for fixed size stops was
incorrectly used to set the limits for fixed size target inputs, which could result in compilation errors in
cases where the target size was outside of the parameter range for fixed size stops.
-
For NinjaTrader 8, several changes were made to the AS_OrderProcessing.cs file to improve behavior of the strategies
when running in Replay mode.
-
A new version of the built-in editor, Adaptrade Editor version 1.3, is included with this release.
-
[bug fix] Editor: The window for entering constant values converted any negative number to its positive.
-
[bug fix] Editor: Changing the constant for price-based entry and exit orders to zero left the constant in place,
such as EntryPrice = Price1 + constant, where constant was zero. The variable for the constant is now removed in
this case.
-
[bug fix] Editor: Opening a strategy from Builder that had the symmetry option "on" could cause a mismatch in the
inputs if the symmetry was removed in the editor. Symmetric strategies are now converted to non-symmetric when
opened in the Editor so that the inputs, which would otherwise be shared between the long and short sides, are
now duplicated for each side of the market.
-
Editor: The wording on the Options tab was changed from "Limit entries per day" and
"Limit entry times" to "Restrict entry times" and "Restrict entries per day" so as not to be confused with limit orders.
Note: The file for NinjaTrader 8 (NinjaTrader8.Adaptrade.zip) was modified for this version and must be re-installed
into NinjaTrader 8 in order for strategies generated by this version of Builder to compile and run properly
in NT 8. Only the file AS_OrderProcessing.cs within the zip file was changed.
Please refer to the user's guide (Getting Started, Installation Instructions) for details on installing the platform files.
Versions 4.2.0 and 4.2.1 (August 26, 2022 and September 4, 2022)
Version 4.2.0 adds several new options for specifing stop and limit entry and exit orders. Entry and exit orders can use a
fixed
number of points relative to a specified price, such as "Highest(H, 10) + 25". Exit orders no longer need to be relative
to the entry price; for example, "Exit long at Lowest(L, 15) stop" or "Exit long at Average(H, 30) limit". For both
entry and exit orders, Bollinger bands, Keltner channels and any custom indicator returning a price value can now be
used as one of the specified prices. Version 4.2.1 corrects three bugs found in 4.2.0 (see below).
In addition, the following changes and bug fixes were made for this release:
-
New behavior for stop and limit entry orders: The close of the current bar is checked against the
limit/stop price,
and the order is only placed if the close is on the correct side of the entry price (e.g., for a long stop order,
the close must be below the stop price). New strategies default to the new behavior, which can be overridden via an
option on the Evaluation menu. The default behavior for strategies developed in prior versions is
if the order price is on the wrong side of the market, the order is automatically converted to a
market order. Older strategies can be converted to the new behavior by selecting the new option and re-evaluating the
strategy.
-
The first line of labels in a data file is parsed if present and used to initialize the field labels, including for custom indicators.
Any field not recognized as a standard field (OHLC, volume, uptick, downtick) is considered a custom indicator, and the custom
indicator name is added to the table of custom indicators on the Data File Format window.
Field enclosures can be "", <>, or none.
-
When clicking the View Data button, the window now opens immediately and displays "Loading data. Please wait..." until
the data are loaded and displayed in the window. Also, when using this window from either the symbol library or the
Build and Evaluation Symbols windows, the View Data window can be kept open while selecting different symbols to view.
-
For custom indicators, the View Data window now displays the custom indicator function name in the column heading,
rather than "Indicator 1", "Indicator 2", etc.
-
When adding custom indicator specifications to the Data File Format window, the table of custom indicators now
scrolls to the position of the most recent entry after adding a new indicator, rather than returning to the top of
the table after each new entry, which makes it more convenient to add new entries after reaching the bottom of the
visible table.
-
A warning message box was added so that if the user has the bar size option selected and also has custom indicators in the build set,
a warning is displayed. Custom indicators should not generally be used with the option for changing the bar size.
-
A new version of the built-in editor, Adaptrade Editor version 1.2, is included with this release.
-
[bug fix] When using custom indicators in some cases, the indicator name could be displayed either as a blank (empty) string or
as a string of random characters.
-
[bug fix] On the Build Symbols and Evaluation Symbols window, when the Include check-box was clicked or the
Series drop-down was changed, a program crash could occur in some cases.
-
[bug fix] Setting the number of concurrent (parallel) processes (View menu, Program Options) to a number greater than 64
caused a program crash.
-
[bug fix] The length of the "Trading Period" on the Performance Report incorrectly reported the number of days in
cases where the length was given in years and days.
-
[bug fix] On the Data File Format window, when the Number of Inputs for a custom indicator was changed, it changed
the the number of inputs for all other custom indicators to the same value.
-
[bug fix] When building for AmiBroker, the input for the Trix indicator was not included in the code, and the function
input was unassigned.
-
[bug fix; version 4.2.1] AmiBroker code: The "[bar]" subscript was left off the closing price for the stop/limit
entry order condition added in 4.2.0 in which the stop/limit order is not placed unless the order price is
on the right side of the market.
-
[bug fix; version 4.2.1] AmiBroker code: The standard deviation indicator was mis-copied in version 4.2.0 to StdDev
from the correct name StDev. Versions prior to 4.2.0 had the correct name.
-
[bug fix; version 4.2.1] For Bollinger bands and Keltner channels used in price-based entry and exit orders, the
input for the number of standard deviations was incorrectly applied, resulting in incorrect indicator values.
Note: No changes were made to the platform files for version 4.2. If you installed them for version 4.1,
there's no need to re-import them into the platform for this release. Please refer to the user's guide (Getting Started,
Installation Instructions) for details on installing the platform files.
Version 4.1.0 (March 15, 2022)
Version 4.1 includes a new strategy "cloning" feature that can be used to copy and optionally mutate any member of the
main population to either add to or replace existing members. Cloned members can be mutated by parameter
values only or by parameter values and logic. The cloning feature, which is accessible via the right-click menu of the
Build Results table, provides a quick and easy way to seed the main population with variations of an existing strategy
in order to start the build process from that strategy.
In addition, the following changes and bug fixes were made for this release:
-
For NinjaTrader 7/8, changes were made to the AS_OrderProcessing.cs file to prevent the submission of orders
when the same type of order is cancel-pending. This function should be re-installed into the NinjaTrader
environment following the installation instructions in the user's guide (Getting Started, Installation).
-
A new version of the built-in editor, Adaptrade Editor version 1.1, is included with this release.
-
[bug fix] When closing an editor window, if the editor prompted the user to save changes to the strategy prior
to closing the window, the changes were not saved back to Builder in some cases.
-
[bug fix] In MT4, indicators applied to secondary data series with volume as an input could cause a program
crash in some cases.
-
[bug fix] Shift values were not being applied to custom indicators.
-
[bug fix] The custom format option on the Data Format window incorrectly processed 2-digit years,
resulting in unreadable dates.
-
[bug fix] If the detailed equity curve was displayed and a strategy was selected from the Build Results that did
not display the detailed equity curve, it could cause a program crash.
-
[bug fix] When using a custom format on the Data Format window, if the thousands separator was the same as the
decimal separator, it could cause a formatting error for number fields
-
[bug fix] When saving Ninja strategies from the code window using "Save NinjaScript Strategy to File", the program
used the wrong parameter ranges unless the user explicitly entered the range values. Setting the ranges using the
"Use Defaults" buttons didn't register the values, even though the correct ranges appeared in the strategy code.
-
[bug fix] If one side of a strategy was deactivated in the editor then saved to Builder and re-opened in the editor,
that side was still active in the editor.
-
[bug fix] If position sizing was changed in Editor and saved for a strategy in Builder, the position sizing
could revert to the previous values when the strategy was re-opened in the Editor.
-
[bug fix] If the code type of the strategy was different than the code type currently selected on the Evaluation
menu, the strategy would open in the Editor with the code type on the Evaluation menu, rather than the code
type of the strategy.
-
[bug fix] The program could crash after pausing and resuming.
-
[bug fix] On the Metrics window, the Load and Save buttons didn't work correctly for non-English locales.
-
[bug fix] In the editor, if the Accumulation/distribution or Chaiken indicators were applied to intraday data,
an error message was erroneously displayed indicating that the "Ticks" indicator
-- an implicit input to the indicator -- was not supported.
-
[bug fix] When opening a strategy in the editor where the entry condition was a custom indicator returning
true/false, the condition was not listed in the Conditions table.
-
[bug fix] In the editor, the pull-down menu of conditions on the Orders tab did not always select the correct
condition in cases where two condition differed only by the shift value.
-
[bug fix] In the editor, when multiple "UNKNOWN_INDICATOR"s were present, only the first one was colored red.
Note: Because changes were made to the AS_OrderProcessing.cs file for NT7/8 for this version,
the zip files (NinjaTrader.Adaptrade.zip for NT7; NinjaTrader8.Adaptrade.zip for NT8) should be
re-imported into the NinjaTrader platform for this release.
Versions 4.0.0 (September 3, 2021) and 4.0.1 (September 12, 2021)
Version 4 adds Adaptrade Editor as an integrated component to Builder. Adaptrade Editor is a
stand-alone Windows-based point-and-click
trading strategy editor that allows you to create and/or edit strategies. You can open Editor directly from within Builder
with any strategy in
either population (main or Top Strrategies) to change the strategy logic, settings, parameter values, etc.
You can also create new strategies and add them to either population. Editor can be accessed either via the Build menu,
File menu, or by right-clicking a strategy in the Build Results table. Because Editor is its own program, it has a separate
user's guide and help files.
Version 4.0.1 corrected a bug in Adaptrade Editor that incorrectly used semicolons in place of commas for input variable
declarations in the EasyLanguage code displayed by Editor. Otherwise, 4.0.1 is identical to 4.0.0.
In addition, the following change and bug fixes were made for this release:
-
[bug fix] Custom indicators returning true/false could cause a program crash due to improper handling of the
logical "not" operator during mutation operations.
-
[bug fix] If position size was entered as a fractional number, the fraction was retained, even though position size is,
by definition, an integer value in Builder.
Note: No changes were made to the platform files for this version. If you installed them for version 3.4
or later,
there's no need to re-import them into the platform for this release. Please refer to the user's guide (Getting Started,
Installation Instructions) for details on installing the platform files.
Version 3.4.0 (June 10, 2021)
The primary change to Builder for version 3.4.0 is the addition of import and export commands for individual trading
strategies. These commands can be accessed either via the File menu or using the right-click (context) menu of the
Build Results tables. Exporting strategies saves them to files with the extension .gpcode. These files can subsequently
be imported back into any current project file, into either the main or Top Strategies population. This provides a way
to save individual strategies separately from project files. In addition, by importing previously exported strategies
into the main population (and unchecking "Reset on Build"), you can "seed" the initial population with your favorite,
previously built strategies.
In addition, the following change and bug fixes were made for this release:
-
Strategies can now be deleted from the main population, and strategies can be copied into the
main population from Top Strategies.
-
[bug fix] For multi-data strategies in NinjaTrader 7/8, a run-time error ("object reference not set to an
instance of an object") could occur when starting the strategy in simulation or real-time.
-
[bug fix] For multi-data series in NinjaTrader 7/8, some parts of the strategy code were not adequately restricted based
on the data series, which could cause multiple incorrect entries at the start of the strategy back-test.
-
[bug fix] Integer inputs, such as day-of-week, chosen by the build process were not rounded to the nearest integer,
which could affect comparisons involving >= or <= operators.
-
[bug fix] If the neural network option was checked but there were no neural network inputs, which could happen if the
population was started from a prior population ("Reset on Build" unchecked) without the neural network option, the entry
condition could include the NNOutput variable, which would be undefined.
Note: Several changes were made to the AS_OrderProcessing.cs file for NT7/8 for this version, which
means the zip file (NinjaTrader.Adaptrade.zip for NT7; NinjaTrader8.Adaptrade.zip for NT8) needs to be
re-imported into the platform for this release. Please refer to the user's guide (Getting Started,
Installation Instructions) for details on installing the platform files.
Version 3.3.3 (March 28, 2021)
Version 3.3.3 corrects two bugs that affect strategies for NinjaTrader 7 and NinjaTrader 8. No other changes
were made for this release. If you don't use NinjaTrader, it's not necessary to upgrade to this version as it is
functionally the same as version 3.3.2 for strategies in EasyLanguage, MQL4 (MetaTrader 4), and AFL (AmiBroker).
The first bug fix in this release prevents multiple orders from being sent at the same time, which can cause a
reversal entry (long to short or short to long) for specific combinations of strategy settings in NT7 and NT8. The
second fix applies to intraday strategies with an end-of-day exit in NT7 and NT8. On historical data, but
not in real-time, these strategies could place orders at incorrect times in some cases where the order was placed
on the last bar of the session.
Note: Several changes were made to the AS_OrderProcessing.cs file for NT7/8 for this version, which
means the zip file (NinjaTrader.Adaptrade.zip for NT7; NinjaTrader8.Adaptrade.zip for NT8) needs to be
re-imported into the platform for this release. Please refer to the user's guide (Getting Started,
Installation Instructions) for details on installing the platform files.
Version 3.3.2 (March 22, 2021)
Version 3.3.2 corrects the lack of backwards compatibility for strategies in 3.3.0 that included a neural
network. If strategies created in version 3.2.0 or older that include a neural network are evaluated in 3.3.0,
different results will be
obtained as a result of the updates to the neural network function in 3.3.0. While this has no effect on
strategies created in 3.3.0, with or without a neural network, it breaks compatibility with previously created
strategies if they include a neural network. Version 3.3.2 corrects this so that older strategies with a neural
network generate the same results when evaluated in 3.3.2 as in older versions of Builder (assuming the same
data and settings). In the platform, compatibility is achieved by using a different NNCompute function, called NNCompute2,
for new strategies that include a neural network. Previously generated strategies will continue to call the
original NNCompute function when running in the platform.
Note: Because this version includes the new NNCompute2 function for all platforms, the corresponding
platform files for NNCompute need to be installed for newly generated strategies that contain neural networks to
compile in the platform without errors. In addition, please see the notes below for
version 3.3.0.
Version 3.3.0 (March 20, 2021)
Two significant changes were made to Builder for version 3.3.0. The neural network has been improved by adding
bias nodes and by replacing the activation function for hidden nodes. The activaton function for hidden nodes, which
was previously tanh, now uses the ReLU (rectified linear unit) function. Recent research with deep neural networks
has demonstrated superior performance
for hidden nodes with ReLU. In addition, to improve order management for NinjaTrader 7/8 strategies,
existing orders are now modified ("ChangeOrder() function"),
rather than cancelled and replaced wherever possible. This significantly reduces the number of cancelled
orders for NinjaTrader.
In addition, the following bug fixes were made for this release:
-
[bug fix] When a large number of members of Top Strategies were deleting during building, the program could hang.
-
[bug fix] The program crashed when NinjaTrader code (NT7 or NT8) was saved to a file
via right-clicking the code pane or via the File menu.
-
[bug fix] The Typical price and floor trader pivots were not allowing shifting.
-
[bug fix] The look-back value for floor trader pivots and consecutive bars up/down was not correct.
-
[bug fix] The robustness test was not randomizing the input for floor trader privots or fixed values for
the consecutive bars up/down indicator.
-
[bug fix] When custom indicators were present for multiple data series, the wrong data series could be chosen for a
custom indicator.
-
[bug fix] For NinjaTrader 7, the AS_OrderProcessing function had an incorrect type declaration that prevented the
saving of results from the Strategy Analyzer.
-
[bug fix] When forming limit and stop order prices using Pivot_R and Pivot_S, either one could have been chosen,
which could sometimes result in prices that were already hit by the time the order was placed. For example, a
long limit price could be above the market, rather than below it, if Pivot_R was used. Now, Pivot_R is only selected
for long stops and short limits and Pivot_S for short stops and long limits.
Note: Changes were made to the neural network files for all platforms for this release and
must be re-installed (if installed previously) in order for the strategies generated by
Builder 3.3.0 and later to work properly. The AS_OrderProcessing.cs file for NT7/8 has also
been changed and needs to be re-installed for NinjaTrader users. NinjaTrader strategies generated with prior versions
should be re-evaluated in version 3.3.0 to update the strategy code with the order processing changes.
Version 3.2.0 (November 25, 2020)
The most significant additions to Builder for version 3.2.0 are ideal trades and the Ideal Matches metric, which were
discussed in a
recent newsletter article. Building strategies to maximize the
Ideal Matches metric guides the population towards strategies that tend to be as close as possible to the so-called ideal
trades, which the user can view on the price chart and which represent trades with a specified profit and risk.
In addition, two new price-based indicators were added in this release:
floor trader pivots and the "typical price". These indicators represent commonly used price levels and can be used both
in entry and exit conditions as well as in prices for stop and limit orders for both entries and exits.
In addition, the following bug fixes were made for this release:
-
[bug fix] The end-of-week exit type was dimmed in the Order Types menu for non-EasyLanguage code types but
was not removed from the build set. So if it was present in the build set prior to selecting a non-EasyLanguage code type,
it could appear in the strategy logic, causing end-of-week exits, but not be present in the strategy code
(where it would be invalid for that code type).
-
[bug fix] A bug in the display of messages in the Messages window could cause a program crash.
-
[bug fix] Pausing and un-pausing the program could cause a program crash, particularly for large populations.
-
[bug fix] When the Top Strategies build results tables were scrolled during building, the program could crash.
-
[bug fix] When the Reset Layout button was used, the drop-down menu on the Build Results tables was not redrawn and you
couldn't change from one table to the next.
-
[bug fix] The Build Report did not show the optional day-of-week for the "Exit after" time option on the Strategy Logic menu.
-
[bug fix] The Limit Order Options dialog opened the wrong help file when the help icon ("?") was clicked.
-
[bug fix] Several clarifications were made to the user's guide/help files.
Note: Changes were made to the platform files for all platforms for this release and
must be re-installed (if installed previously) in order for the strategies generated by
Builder 3.2.0 and later to work properly. These changes pertain only to the new indicators: TypicalPrice, AS_PivotS, and
AS_PivotR. For platforms for which the indicators can be installed individually, only these new indicators need to be installed
if version 3.1 has been previously installed.
Version 3.1.0 (August 19, 2020)
Version 3.1.0 includes a number of bug fixes and other improvements. The
following changes and bug fixes were made for this release:
-
An end-of-week order type has been added for use with the EasyLanguage code type; no other scripting languages support an
end-of-session order that can be limited to a specific day. The end-of-week order type exits any open position at the session close
on Friday. For a similar option for other code types, please see the next item below.
-
The "Exit after" time option on the Strategy Logic menu has been expanded to include an optional day-of-week condition. For example,
you can include the following exit type: "exit after 12:45 pm on Friday". Any day of the week may be selected, including "All days",
which is the default and produces the same behavior as in prior releases.
-
On the Data File Format window, the "None" format on the drop-down menu for saved file formats reverts the formatting back to
the original file format, so if a new format is selected or the column formatting is cleared, selecting "None" from the drop-down
will restore the formatting.
-
For the View Data window, the number of significant digits for display was increased to 10.
-
The user interface theme "Office 2019" was added to the "Theme" menu. This is an updated variation of the Office 2016 theme,
including both dark and "colorful" themes.
-
[bug fix] In some cases the range values for NinjaScript 8 properties (for inputs) did not contain the input value,
which prevented the strategy from being compiled.
-
[bug fix] In exit conditions based on the number of bars since entry for NinjaTrader 8, the function BarsSinceEntryExecution()
excluded the input referencing the data series. The same problem was present with BarsSinceEntry() for NinjaTrader 7.
-
[bug fix] The new cost option for "percent of trade" was based on a percentage of the trade profit/loss, whereas it should have
been a percentage of the trade value. It's now based on trade value (i.e., the product of entry price, position size, and point value).
-
[bug fix] Cancelling the significance test caused the program to crash and close.
-
[bug fix] When the tick size was changed on Symbol Properties, it reverted back to the default after building with that symbol.
-
[bug fix] The custom date and time formatting options on the Data Format window didn't work correctly when no time field was present.
-
[bug fix] When an NinjaTrader 8 strategy lost its connection during real-time trading and then reconnected, if it had open orders,
NinjaTrader 8 disabled the strategy, saying it can't modify a historical order that transitions to "live".
-
[bug fix] The congestion count function/indicator could get stuck in a loop if the price data had an anomalous pattern,
such as zero-height bars or all bars were the same. The function is now limited to a maximum count of 100 bars.
-
[bug fix] On the Data File Format window, when a saved file format was selected, it applied it but didn't show it on the grid.
Also, the column formatting was incorrect in some cases when the number of columns and/or the number of custom indicators
changed for a selected file format.
-
[bug fix] For some files of price data containing a field for the symbol, Builder interpreted the file as containing a line of
column labels, which prevented it from reading the first row of data.
-
[bug fix] For MetaTrader 4, the "SharesPerLot" variable was only correct for forex, not stocks or futures.
SharesPerLot is now set to either 100000 for forex or 1 for stocks/futures.
-
[bug fix] MetaTrader 4 code price rounding was incorrect for non-forex. It now rounds to the nearest tick size for non-forex.
-
[bug fix] In EasyLanguage and NinjaTrader 7/8 code, the variable EndofSess was declared in certain cases when it was not used.
-
[bug fix] On Symbol Properties, if the user attempted to change one of the dropdown menus (Symbol Type, Bar Type, Cost Type)
by typing in a new value, and then clicked the dropdown button, it could cause a program crash.
-
[bug fix] Price (O, H, L, C) values of 0 resulted in a file reading error, which prevented some back-adjusted price data
files from being read.
Note: Changes were made to the platform files for all platforms for this release and
must be re-installed (if installed previously) in order for the strategies generated by
Builder 3.1.0 and later to work properly. Please see the notes for the trial version for further details.
Version 3.0.0 (May 19, 2020)
The most significant new feature in version 3.0.0 is the addition of NinjaTrader 8 as a code output option.
Other changes include the addition of the following new indicators: Ulcer index, RocketRSI, consecutive bars up, consecutive
bars down, and congestion count. The Ulcer index calculates the average
percentage drawdown in price, providing a general measure of downside risk in the market. RocketRSI is John Ehlers' improved version of the RSI
index. The congestion count returns the number of consecutive bars where there is at least one price in common among all bars. High numbers
indicate a "congested" or range-bound market. The number of consecutive bars up and down, along with the congestion count, expand Builder's
repertoire of indicators for price pattern-based strategies.
In addition, the following improvements and bug fixes were made for this release:
-
Two new trading cost options were added: "Amount per trade" and "Percent of trade". These are in addition to the existing
"Amount per share" option. The option is selected on the Symbol Properties window and is used to interpret and apply the entered cost value.
-
Two new metrics were added: (1) Average Length of Trades, which complements the existing metrics "Ave Length of Losses" and "Ave Length of Wins",
and (2) Return on Maximum Drawdown.
-
A new code option on the Position Sizing menu allows you to select between accumulating the equity for position sizing purposes as the strategy
executes or basing the position size on the entered value of equity ("Starting Equity"). The latter is more suitable for live trading, where
you would typically want to base the position size on the current value of account equity.
-
True/false (boolean) custom indicators can now use two new logical operators: "not" and "not-equal". This simplifies the expression of logical
statements and removes an asymmetry that previously resulted from converting 1/0 to true/false. Now, VarL1 == 1 means "VarL1 is true" and
VarL1 != 1 means "VarL1 is false", in which VarL1 is the custom true/false indicator. This implies you might see statements such as
CondL1 && (VarL1 == 1), CondL1 = VarL2 != N1 (in which N1 is either 0 or 1), CondS1 == (VarS2 != 1), (VarL4 != 1) || (VarL5 == 1), and so on.
-
Data files that contain quoted fields and numbers with a thousands delimeter (e.g., "12,300.45") can now be read properly. Among other things,
this means that the equity table from Market System Analyzer (MSA) can be read into Builder as an equity curve symbol.
-
The risk-based calculations for Van Tharp's metrics -- R-multiples, total R, std dev of R-mults, SQN -- now use the average loss
for any trade where the trade risk is undefined. The average loss is calculated over all segments, including both long and short trades.
-
The performance of the equity plotting has been improved for curves with a large number of trades and for plotting of the detailed
equity curve. Unnecessary redrawing has been eliminated.
-
On the Symbol Properties window, the number of decimal digits of precision for the tick size, bid/ask spread, and trading costs has been increased.
-
The buy-and-hold PL per share metric has been modified slightly to exclude trading costs.
-
[bug fix] For strategies using multiple data series with code written in EasyLanguage, the data series within the variable declarations
was missing; e.g., it wrote "Var: VarL1(0);" rather than "Var: VarL1(0, data2);".
-
[bug fix] The copy commands (Copy Table, Copy to CSV, Copy to HTML) for the Build Results table didn't copy all rows and put the elements in
the wrong order for tables larger than the window size. The same problems were present for the Copy to CSV and Copy to HTML commands for the
Trades Pane.
-
[bug fix] For strategies with fixed ratio position sizing with code written in NinjaScript 7, the Equity and StartEquity variables were
not declared or defined.
-
[bug fix] For strategies using multiple data series in AmiBroker (AFL code), if the time frame of the different series was the same
as the primary series, it gave a warning message. Moreover, if the warning message was overridden, incorrect variable names were sometimes
used in the statements for neural network inputs.
-
[bug fix] In AmiBroker code, the equity symbol (Foreign(\"~~~EQUITY\", \"C\")) was used to represent the accumulated equity value for
position sizing, which required the strategy to be run twice: once to define the EQUITY symbol and a second time to use it. To avoid this
complication, equity is no longer accumulated for AmiBroker. The new "Equity Calculation" option on the position sizing menu is not available
for AmiBroker code, which always uses the current (input) value of account equity for position sizing.
-
[bug fix] R-Multiples were calculated incorrectly when variable position sizing was used due to the fact that the P/L values were not
calculated "per share".
-
[bug fix] The average risk metric was calculated over all trades, rather than over only the trades for which risks were defined, which
distorted the result in cases where not all trades had a defined risk value.
-
[bug fix] The Sharpe and Sortino metrics didn't include months with no trades, whereas such months should have been counted as having a return of zero.
-
[bug fix] On the Build Symbols and Evaluation Symbols windows, the available date range changed to the selected date range after re-opening the window.
-
[bug fix] The Build Symbols and Evaluation Symbols windows allowed the user to choose dates outside the date range of the primary symbol(s)
(i.e., over dates only available on secondary symbols, for which no trades were generated) in some circumstances.
-
[bug fix] Equity curve symbols were mistaken for primary price symbols, which could cause a program crash.
-
[bug fix] When a price data file was in order of descending dates and less than the entire date range was selected for building, an
error message was displaying indicating that the file could not be read, and the build process was terminated.
-
[bug fix] For the case where the build process failed due to too little data -- e.g., if there were fewer bars of data than the look-back
length of the strategy -- the build process failed to put out an error message or look for a new strategy (as it does when strategies fail
when TRIX doesn't evaluate properly). It now puts out a message and tries to find a new strategy that needs fewer bars of data.
-
[bug fix] The equity plot could "hang" when it had only one trade with zero net profit.
-
[bug fix] Reloading the chart while the program was building on the same data could cause a crash.
-
[bug fix] The option selected on the price chart to "Show Trades" was not being recorded for storage in the project file.
-
[bug fix] The maxbarsback value was not correct for custom indicators that used a shift value.
-
[bug fix] In some cases, the Trading Orders window displayed redundant exit orders for the same trade, such as a market order and a limit
order. Also, orders were repeated in some cases.
-
[bug fix] Key messages to the Messages window, such as the message indicating completion of the build process, were not being added to the
message queue when the build process finished very quickly, which prevented the messages from being displayed.
Note: Changes were made to the platform files for all platforms for this release and
must be re-installed (if installed previously) in order for the strategies generated by
Builder 3.0.0 and later to work properly. Please see the notes for the trial version for further details.
Version 2.5.0 (Dec 29, 2019)
Version 2.5.0 adds the ability to include multiple data series in the same strategy. For example, a
strategy for trading individual stocks could include logic based on interest rates and forex prices. Up to 20
different symbols can be included in the same strategy, and secondary symbols need not be of the same time frame as
the primary symbol. For example, if the primary symbol is 5-minute bars of a stock index future, daily bars of a
forex symbol could be added as a secondary symbol. Or the same symbol can be added multiple times with
different bar sizes, such as 5-minute bars, 60-minute bars, and daily bars of the E-mini S&P futures.
In addition, the following changes and bug fixes were made for this release:
-
A new Data Format window allows for the number and date formatting options to be directly selected, such as the
decimal delimiter and date separator symbol, as an alternative to formatting numbers and dates
using "locales". In prior versions, only locales were available; now, either locales or the new Data Format window
may be used.
-
The formatting options selected on the Data File Format window, including the formatting selected on the new
Data Format window, can be saved and are displayed in a pull-down menu for reuse. Similarly, the number and date
formatting options selected on the new Data Format window can be saved and retrieved separately via that window.
-
Theming has been expanded to include all parts of the user interface, including the equity curve, trade list,
reports, build results tables, etc. In addition, new themes, including a new black theme, have been added.
-
The Reset Layout button on the View menu has been redesigned and now includes the Build Progress window,
which previously could only be reset by deleting the registry entry.
-
The number of inputs for custom indicators has been added to the Data File Format window so that the calculation
of strategy complexity can include custom indicators.
-
Writing to the Messages window has been improved so that messages no longer appear out-of-sequence,
and fewer messages are skipped.
-
On the Build Symbols and Evaluation Symbols windows, the "Set Properties" window for setting the
properties for multiple symbols now allows the user to select the properties they want to "set all" for.
-
The Data File Format window now uses a new grid control that no longer limits the number of columns of data and
therefore the number of custom indicators that can be included in a price file.
-
[bug fix] Previously, when the session times were reset so that they didn't match the exact bar times in the file,
the program tried to convert (for intraday data) the bars to match the specified session times. This could slow
down the reading/processing of data for large files. In cases where the user's session times are within the
bar size of the session times recognized by the program or if the starting and ending session times are the same,
the conversion is now skipped, which can significantly increase reading/processing speed for large files.
-
[bug fix] Small price data files where the length of the file was less than the max allowable line
length were not read correctly.
-
[bug fix] In the trade list, trades in the validation segment were colored green or red (profitable or unprofitable)
based on the profit/loss value prior to deducting trading costs, which was inconsistent with program conventions.
Note: For MetaTrader 4, the include file (AdaptradeBuilderInclude.mqh) and the library
file (AdaptradeBuilderLib.ex4) were modified for this release and must be re-installed (if installed previously)
in order for MT4 strategies generated by Builder 2.5.0 and later to work properly. No changes were made to
any of the other trading platform files for version 2.5.0, so if you've already installed them for version 2.4.1,
there's no need to re-install them for this version.
Version 2.4.1 (Feb 2, 2018)
Version 2.4.1 includes a number of bug fixes and usability improvements. The
following changes and bug fixes were made for this release:
-
The main list displays (View Data, Trade List, Data File Format) and the
price charts were modified to improve responsiveness with large lists. The
improvement to the Trade List, for example, eliminates the delay that
occurred previously when switching from one strategy to another when the
number of trades was very large.
-
A context (right-click) menu option has been added to the price charts
to change/edit the path to the symbol file. This can be used to reselect the
data file for the price chart's data when it has been moved or renamed.
Previously, this required deleting the chart and adding it back again.
-
A context (right-click) menu option has been added to the Build Symbols
and Evaluation Symbols windows to "Reload All" symbols, which updates the
available date range for each symbol in the Market Data table.
-
When a project is opened, the available date range is now updated
automatically for all symbols in the Build Symbols and Evaluation Symbols
tables to pick up any new data added to the underlying data files. Also, the
date range on charts is now updated automatically when the project is
opened.
-
The self-adaptive mutation of mutation probabilities has been improved
so that it better preserves the relative values of changed probabilities
after crossover and mutation.
-
[bug fix] The use of custom indicators returning a true/false value
could cause a program crash in some cases. A paragraph has been added to the
user's guide in the "Custom Indicators" section (Symbol Library) to clarify
how true/false custom indicators are used by the program.
-
[bug fix] When the build was paused, the strategies could time-out when
the build was resumed.
-
[bug fix] Saving a trade list to a .msa file stored the user's
locale for the Trades File Format in MSA, rather than US English, which is
the format of the trade data saved from Builder. Also, the risk values were
incorrectly treated as "total risk", rather than "per share" risk. And the
point value and trading costs are now inferred from the trade list, rather
than the symbol data, to take into account the fact that the selected symbol
may be different than the one reflected in the trade list.
-
[bug fix] Deleting Top Strategies members while the build process was
paused could cause a program crash.
-
[bug fix] The program could crash when saving the equity curve while
running the build process.
-
[bug fix] Unchecking the Reset on Build option (GP Settings) could cause
a program crash due to unitialized mutation probabilities for empty/new
strategies.
-
[bug fix] Some symbol data files were not read correctly due to
ambiguity over the whether the time field contained seconds or not.
-
[bug fix] After reloading a symbol through Symbol Properties on the
Build/Evaluation Symbols window, the user-selected date range could not be
extended to match the new date. Also, clicking Reload on the chart didn't
update the date range.
-
[bug fix] On the Build Symbols and Evaluation Symbols windows, some
fields used the computer's locale for the date display, while some used US
English. Now they all use the computer's locale setting.
-
[bug fix] If the Symbol Properties window was opened from Build Symbol
or Evaluation Symbols and the session times were changed, the change was not
picked up unless the bar size was also changed. As a result, if View Prices
was clicked, the new session times were not seen.
Version 2.4.0 (Dec 17, 2017)
Version 2.4.0 adds the feature described in the article
Optimal Strategy Diversification,
which illustrates how to build a strategy that is
optimal in combination with an existing portfolio. To accommodate this feature,
a new type of symbol for representing external equity curves has been added.
When an external equity curve symbol is added as one of the build symbols, the
program can generate strategies that optimize the portfolio results, which means
the generated strategies will be optimal in combination with the external equity
curve (and the portfolio or other market system it represents). As part of this
feature, the option to plot a detailed equity curve has been added. The detailed
equity curve plots the bar-by-bar equity values versus date and includes the
contributions from any external equity curves that are part of the evaluation.
In addition, the following changes and bug fixes were made for this release:
-
A better way to detect new bars in MT4 using bar time, rather than
volume[0]≤1, has been implemented.
-
An option related to the time-out interval has been added to Program
Options. You can set the maximum number of retry attempts the program will
make to build a strategy that doesn't time-out before canceling the process.
This applies to the build process and the significance test.
-
[bug fix] There was a delay in detecting the time-out interval
and "cancel" command if it occurred in the middle of the performance
calculations. For long data files or for strategies with thousands of
trades, this could lead to long delays before the cancel or time-out was
processed.
-
[bug fix] The folder paths under Program Options (View menu) were not
being checked when reading the price data files, which could mean that a
data file that was displayed correctly in the Price File Format window (now
"Data File Format" window), which independently checks folder paths, did not
display under View Prices (now "View Data") and was not read when building.
-
[bug fix] The "Set Properties" function on the Build Symbols and
Evaluation Symbols windows did not change the correct symbols depending on
which ones were selected.
-
[bug fix] The following items were not listed in the Build Report: the
number of subpopulations and remix interval; the build termination and build
failure rules.
-
[bug fix] The trade list written out as part of saving it for a .msa
file of trades was written in the user's locale. It now writes the trade
list in English (US) locale, regardless of the user's locale, as required by
MSA.
-
[bug fix] When the combination of exit-end-of-day and the option to not
exit current trades before entering new ones was selected, it was possible
to get an entry on the last bar of the session in cases when the prior trade
exited at the close. In this case, the entry on the last bar of the session
wasn't getting canceled, as it should have been given that the exit-on-close
order was the last order on the last tick of the session.
-
[bug fix] When the parameter ranges were changed and the build was
repeated on the same data, the changes to the parameter ranges were not
used.
-
[bug fix] When the tree depth was set to zero and the neural network
option was selected, it was still possible to get non-trivial entry
conditions.
Version 2.3.1 (Sep 21, 2017)
Version 2.3.1 is mostly a bug-fix release. The following changes and bug fixes were made for this release:
-
The new subtree pruning mutation operator introduced in 2.3.0 is now
used to reduce the tree depth whenever it exceeds the user's specified max
tree depth. This helps keep the strategy complexity from increasing over
generations due to recombination through crossover and mutation.
-
The build step of replacing duplicate strategies has been parallelized
to reduce build times.
-
If the symbol library is not found when the program starts up, the
program now prompts the user to select the library file. The program then
saves the library contents to the correct (default) path and file name for
subsequent use.
-
To simplify data management, the price data files for the examples and
bonus files (i.e., for bonus project files for which price data has been
provided) are now located in a new folder named "Data", which is located at
the default path C:\Program Files\Adaptrade Software\Data.
-
[bug fix] A problem with one of the new mutation operators could cause
the size of the entry or exit condition tree to grow too large, causing a
program crash.
-
[bug fix] The date range was not read when adding a new symbol to the
symbol library. Instead, the program was using the default date range of the
symbol selected at the time the "Add New Symbol" command was selected.
-
[bug fix] The end-of-day exit type was not being included in all
strategies when "included" in the Order Types menu.
Version 2.3.0 (Aug 25, 2017)
Version 2.3.0 implements significant changes to the genetic programming
algorithm. The changes are designed to increase diversity in the population and
maintain diversity during building so that improvement in the results can be
seen for many more generations than was possible in prior versions. The changes
include the use of subpopulations, which means the main population can be
divided into two or more groups of strategies that are evolved separately. The
subpopulations can optionally be mixed every few generations to share traits. In
addition, five new mutation operators have been added: subtree substitution,
subtree simplification, subtree complication, subtree pruning, and subtree
addition. The probability of selecting one type of mutation operator over
another is self-adapted by the build process (i.e., the probabilities are
evolved during the build process). To further increase diversity, duplicate
strategies are replaced (anti-clone rule) at the end of each generation by new strategies
created by mutating the duplicates according to the usual mutation process.
In addition, the following changes and bug fixes were made for this release:
-
The last price data used in building or evaluating is cached, rather
than deleting it after building or evaluating, to save time re-loading it if
another build or evaluation on the same data is run.
-
The Build Progress window now remembers its location, size, and
minimize/restored status when closed. Also, if it's closed during building,
it remembers that and doesn't automatically open next time at the start of a
build.
-
[bug fix] If the date range was much less than the range of available
data, the build was much slower.
-
[bug fix] In NinjaScript, when the option to restrict the number of
entries per day was used on daily bars (although this is redundant), the
code Bars.FirstBarOfSession did not work. It has been replaced with Bars.BarsSinceSession
== 0,which works for both intraday and higher bar intervals.
-
[bug fix] In NinjaScript, when a strategy uses ExitOnClose = true, it
cancels any open orders present on the last bar of the session, which means
that in historical testing an open entry order placed on the last bar of the
session to be placed on the first bar of the next session was cancelled,
causing a mismatch between the historical results in Builder and those in
NinjaTrader. A work-around has been implemented that places the order on the
second bar of the next session. This only affects historical testing, not
real-time trading.
-
[bug fix] In NinjaScript, the orders are GTC and are only canceled at
the beginning of the next bar. This is a problem if the user is only trading
RTH since the order may be filled in the evening session. Code has been
added to cancel any open orders 30 seconds prior to the end of the session;
exit-on-close orders are set to be filled 60 seconds prior to the end of the
session, so this should not interfere with ExitOnClose.
-
[bug fix] Delete and Add context (right-click) menu items on the
Evaluation Symbols window did not work.
-
[bug fix] The user's guide/help files incorrectly stated that the
day-of-week indicator returns values between 1 and 7. The appendix
(Technical Indicators) was corrected to read that it returns values between
0 and 6 for Sunday through Saturday, respectively.
Version 2.2.1 (Apr 29, 2017)
Version 2.2.1 is mostly a bug-fix release, which corrects coding problems
that could occur in version 2.2.0 when building with neural networks.
The following changes and bug fixes were made for this release:
-
Simple inputs for a neural network can now be combined using abs(Ind1 -
Ind2), whereas previously, the abs (absolute value) was not used.
-
Some performance results in the Build Results tables, such as "longest
drawdown", use a non-numeric format that makes it difficult to manipulate
the values if they're copied to a spreadsheet. Longest drawdown, for
example, is given in "xx hours yy minutes zz sec". These time span metrics
are now given in numeric format as the number of days.
-
[bug fix] A code error in which an unnecessary variable was added
could occur when including a neural network along with a custom indicator
returning a non-bool type.
-
[bug fix] Neural network inputs could include invalid and/or
undeclared variables.
-
[bug fix] The Build Progress window plots the data for generation
zero incorrectly unless or until the plot is closed and re-opened.
-
[bug fix] The copy command on the Messages window doesn't accept
the Ctrl-C keyboard combination.
-
[bug fix] If a different file is selected in the symbol library
for an existing symbol and it has a different file delimiter, the program
could lose track of the custom indicators in the original file. This could
result in a memory exception error.
Version 2.2.0 (Mar 29, 2017)
Version 2.2.0 includes several significant improvements to existing features,
as well as six new bonus strategies
for licensed (non-trial) users. Custom indicators have been enhanced so that
they can process other price series, such as “close of data2”, “low of data3”,
etc. The program can use these to generate conditions such as
Average(Highest(close of data2, N1), N2) ≤ ZLTrend(high of data2, N3). This
effectively makes it possible to build over multiple data series by adding
additional columns of symbol prices to the primary symbol file.
For custom indicators returning a true/false (bool) value, code
changes were made for all platforms so that they now work correctly when
returning an integer, which has the value 1 for true and any other number for
false (e.g., 0 for false). Also, the custom indicator code for MT4 was modified
to include the iCustom usage, so that this is no longer required when entering
the code string in Builder. The usage of the equality operator was expanded to
include all boolean function types, including custom indicators with a return
type of true/false.
21 new performance metrics were added: DoF Ratio, profit/DD
ratio, Van Tharp’s SQN, Van Tharp's total R, min and max bars in trades, percent
time in market, total net profit per share, adjusted net profit per share,
buy-and-hold net profit, net profit/buy-and-hold ratio, adjusted net
profit/buy-and-hold ratio, average entry/exit/total efficiency, maximum
favorable excursion (MFE: min, max, and ave in $ and %).
In addition, the
Build Metrics window now supports cut, copy, paste and the ability to select
multiple entries together to delete, cut, or copy. It's also now possible to
save and load files of metric settings (new .gpmetrics file type).
In addition, the following changes and bug fixes were made for this release:
-
The TRIX indicator has been modified to be the same as in the supported
platforms. To avoid log(0) errors during the build process, the program
rejects a strategy that contains an invalid usage of TRIX and creates a new
strategy to replace it.
-
Multiple metrics can be selected together on the Change Performance
Metrics dialog, including for adding, removing, and moving metrics up and
down in the list.
- When the build process is paused, file saving is now enabled.
-
The file name is now used as the default symbol name and description
when adding new symbols to the symbol library. The file selection dialog now
remembers the file extension (.txt, .csv) last selected as a filter for
displaying file types within the same session.
-
The sort order of rows in the Build Results window is now retained
within the same session until reset by the user.
-
The time-out cancellation has been removed when evaluating after
building. For example, if an MC analysis of an existing strategy previously
took longer than the time-out interval, the evaluation would fail. The
time-out interval now applies only to building and the statistical
significance test.
-
To clarify terminology and avoid confusion with the statistical
significance test, the "Statistical Significance" metric has been renamed
"Trade Significance".
-
[bug fix] A check box for "Top Results" was left off the View menu
(show/hide).
-
[bug fix] When all values for a plot in the Build Progress window were
the same, such as when a zero-length test segment was specified (i.e., 100%
training data), the chart redrawing could hang, causing the program to
freeze.
-
[bug fix] Changes to custom indicators made through the Price File
Format window were not saved when the Price File Format window was opened
via the Build Symbols and Evaluation Symbols windows.
-
[bug fix] If a market was added to Build Symbols from the symbol
library and the Build Symbols window was not opened, the date range was
undefined, which caused a program crash when building.
-
[bug fix] When evaluating a single member of the Top Strategies
population, the member numbers of the other strategies were reset to
sequential order.
-
[bug fix] The starting and ending dates on the Build Symbols
dialog were not being set to the default range of the symbol when the symbol
was added via the "Add to Build" button of the Symbol Library.
The platform-related files (i.e., the separate files that need to be
installed for each trading platform) were not changed in this release. If you
already have the latest versions of the platform files installed, there is no
need to re-install them for this release.
Version 2.1.2 (Dec 18, 2016)
Version 2.1.2 is a minor release. After the release of version 2.1.1, a bug
was discovered that can cause a program crash. While the conditions causing the
crash occur infrequently, they can occur at any time. This problem has been
corrected for version 2.1.2. As a result, it's recommended that version 2.1.2 be
used in place of version 2.1.1. In addition, the
following changes and bug fixes were made for this release:
-
On the Program Options window (View menu), the so-called time-out
interval is now specified in seconds, rather than minutes, and the default
value is now 10 seconds. This is the maximum time the program can take to
evaluate a strategy before the strategy evaluation is cancelled and a
time-out error message is displayed.
-
Pausing is now implemented for the evaluation of strategies when they
are taken from the prior build to initialize the population for a new build;
i.e., when the Reset-on-Build option is off/unchecked.
-
Various improvements have been made to the error messages displayed in
the Messages window.
-
[bug fix] When the Reset-on-Build option was off/unchecked, versions
2.1.0 and 2.1.1 did not initialize all remaining members of the population
after copying the members of the prior population.
The platform-related files (i.e., the separate files that need to be
installed for each trading platform) were not changed in this release. If you
already have the latest versions of the platform files installed, there is no
need to re-install them for this release.
Version 2.1.1 (Dec 10, 2016)
Version 2.1.1 is a minor release. The most significant change involves the
Build Symbols window. In prior versions, including 2.1.0, the data segments
(training, test, and validation) were set using slider controls that allowed the
user to change the percentage of data allocated to each segment. To give the
user more control over the starting and ending date and time for each segment,
these slider controls are now supplemented by date/time controls. In addition,
the starting and ending date/times can now be specified down to the minute,
which provides more precision when working with intraday data; see the Build
Symbols figure on the screen shots page.
In addition, the following changes and bug fixes were made for this version:
-
The Messages window has been changed so that the current date and time
are shown for each message; e.g., "[12/10/2016 11:11:46 AM] Generation 8:
creating new population member 49 (49 of 500)".
-
The View Prices command on the Build Symbols and Evaluation Symbols
windows now restricts prices to the selected date range for that symbol. The
prices for the entire available date range are still available through View
Prices on the Symbol Properties window.
-
[bug fix] In version 2.1.0, when building over a portfolio of symbols,
the selected segment percentages were applied to the date range for each
symbol separately. In cases where the different symbols had different
starting and ending dates, this meant that the segment boundaries could be
different for different symbols. In versions prior to 2.1, the segment
boundaries were based on the same date for all symbol in a portfolio.
Version 2.1 reverts back to the method used in prior versions so that each
symbol in a portfolio will have the same segment boundary dates.
-
[bug fix] The combination of "Short-only" and "Neural network" could
cause a memory exception error and program crash if the neural network was
too large.
-
[bug fix] On the equity plot for a portfolio or when stress testing was
applied, the different colors for the equity lines were not applied so that
multiple lines had the same color.
-
[bug fix] On the equity plot, the position of the symbol labels was
incorrect (too high) when plotting stress testing results.
-
[bug fix] If you opened the Symbol Properties window from the Build
Symbols or Evaluation Symbols window and used the Reload button to update
the available dates, those dates were not then updated on the Build Symbols
or Evaluation Symbols window after Symbols Properties was closed.
The platform-related files (i.e., the separate files that need to be
installed for each trading platform) were not changed in this release. If you
already have the latest versions of the platform files installed, there is no
need to re-install them for this release.
Version 2.1.0 (Nov 25, 2016)
Version 2.1.0 is a significant release. The principal changes in Builder version
2.1 include three-segment building (training, test, validation), full support
for high-resolution ("high DPI") displays, such as high-resolution laptops,
improved parallel processing algorithms for faster strategy building, new limit
and stop entry order types, additional parameter ranges to allow more control
over parameter values, price bands for limit orders on CME futures, and code
improvements for NinjaTrader 7. This version also includes a new calculation
engine for strategy evaluation with improved calculation of performance metrics.
The following are the other changes and improvements for this version:
-
The Build/Eval Process window of version 2.0 has been replaced by three
windows: Build Symbols window, Evaluation Symbols window, and the Build
Progress window. The Build Symbols and Evaluation Symbols windows allow you
to select symbols for building and evaluating strategies, respectively. The
Build Progress window displays the Build Failure Tracking and Build
Termination Tracking plots.
-
A "Reset Layout" button has been added to the View menu to reset the
pane layout to the default configuration for situations in which the layout
cannot be reset manually.
-
When a new symbol is added to the symbol library, the file selection
dialog window is opened automatically before opening the Symbol Properties
dialog.
-
The Build Results table now has separate tabs for the main population
and the Top Strategies population. The pull-down menu on each tab allows you
to select between "training", "test", "validation", and "All segments".
-
If a "time-out" error occurs during initialization of the population,
the step is repeated up to several times in order to generate a valid
population member, rather than stopping the initialization on the first
failed attempt. The same approach is used when running the significance
test.
-
The limit for reading columns in the price file has been increased to
accommodate up to approximately 1000 custom indicators.
The following bugs were fixed in version 2.1:
-
[bug fix] Code error for TS 2000i: SetStopShare was used in place of
SetStopContract.
-
[bug fix] NinjaScript bugs: 1. BTAdjust was not switched from historical
to real-time data correctly. 2. BarsSinceEntry was initialized incorrectly
when BTAdjust was nonzero. 3. ExitOnClose is now set explicitly to false if
no end-of-day exit. 4. BarRequired now set explicitly in Initialize.
-
[bug fix] The significance test crashed the program when run on an older
file.
-
[bug fix] When running a significance test, the status bar incorrectly
displayed the message "Build process paused. ..." in some cases.
- [bug fix] The program locked up if set to 100% training.
-
[bug fix] The equity plot scaled incorrectly in some cases when the net
profit was negative.
-
[bug fix] In performance reports for portfolios, the list of markets at
the top formatted incorrectly.
-
[bug fix] On the GP Settings window, the greater than (">") option was
not being recorded for Build Failure Rules.
-
[bug fix] If stress testing was selected but no method was chosen, it
showed stress testing was performed in the build report.
-
[bug fix] The Build Metrics window and the Top Strategies conditions
window used the labels "in-sample" and "OOS" labels, as opposed to
"training" and "test".
-
[bug fix] The position size in the Trading Orders window was always 1
for exit orders, regardless of the size of the open position.
-
[bug fix] The number of generations for the Build Failure Rules was off
by 1.
-
[bug fix] If the Build Failure and Termination rules both applied at the
same time, the termination rules took precedence, which prevented the
process from rebuilding.
-
[bug fix] A code error bug gave repeated variable names with the
following combination of settings: short-only, long/short symmetry, and
neural network.
-
[bug fix] The "Evolve Param Only" option for position sizing didn't
work.
-
[bug fix] The Builder Bonus files installed in the folder for version
1.4.
-
[bug fix] When clicking View Prices on Build Symbols or Evaluation
Symbols (formerly, Build/Eval Symbols), nothing was displayed if a row in
the table of markets was not clicked/selected. Now it opens the first market
in the table if one is not selected.
-
[bug fix] Sorting of the Trade List was incorrect for the Direction and
Equity columns.
-
[bug fix] Trading costs were deducted from open trade profit/losses. By
convention in Builder, trading costs are always deducted on the close of the
trade.
-
[bug fix] Negative values for daily, weekly, monthly, and annual rates
of return were shown as zero.
-
[bug fix] The number of trades in drawdowns was over-stated for
portfolios because some trades were counted more than once.
-
[bug fix] The default range for fixed size stops was not recorded after
it was auto-calculated at start of build.
In addition, the user's guide and help files have been updated to reflect all
changes in this version.
The platform-related files (i.e., the separate files that need to be
installed for each trading platform) were not changed in this release. If you
already have the latest versions of the platform files installed, there is no
need to re-install them for this release.
Version 2.0.1 (Aug 10, 2015)
Version 2.0.1 is a bug-fix release. The following bugs were corrected for this version:
-
[bug fix] Memory exception errors for the Symbol Properties and Build/Eval
Process windows could cause a program crash, such as when adding a symbol to
the symbol library.
-
[bug fix] File permission issues for the symbol library could prevent
adding new symbols to the library. The symbol library has now been moved
from the installation folder to AppData.
-
[bug fix] The drop-down menus on the Symbol Properties window for Symbol
Type and Bar Type were not setting the correct values.
-
[bug fix] The symbol library was misreading custom indicator data,
causing errors in the display of the symbol library folders.
-
[bug fix] When plotting price charts from the Build/Eval Process window,
the default bar type and bar size were displayed on the chart title rather
than the user-chosen values.
-
[bug fix] The selection of the Strategy Builder button was not processed
correctly on program start-up.
-
[bug fix] Some of the program windows, including most of the drop-down
settings windows on the Build menu, did not display the associated help file
when the F1 key was pressed.
In addition, the user's guide and help files have been updated to describe
the new name and location of the symbol library.
The platform-related files (i.e., the separate files that need to be
installed for each trading platform) were not changed in this release. If you
already have the latest versions of the platform files installed, there is no
need to re-install them for this release.
Version 2.0.0 (Jul 31, 2015)
Version 2.0 is a major release. The program was completely redesigned, with a
new user interface, price charting capabilities, a symbol library, a trading
orders window, new features to detect and prevent over-fitting, and other
changes. Please see the new user's guide and/or program help files on the
download page for complete documentation. In addition, the following bug fixes were made for this version:
-
[bug fix] Duplicate variables were generated in the code for some exit
types, such as two variables with the name MMStopPctL.
-
[bug fix] The fixed stop size could be selected by the program as zero
if the minimum stop size on Parameter Ranges was set to a value less than
the tick size.
-
[bug fix] The Build Report only showed trading costs to 2 decimal
digits, which is inadequate for forex.
-
[bug fix] If the last bar in a portfolio of markets was less than the
specified starting date, the program could crash.
-
[bug fix] It was previously impossible to uncheck the "Exit after"
option without also unchecking the exit-after order type.
The platform-related files (i.e., the separate files that need to be
installed for each trading platform) were not changed in this release. If you
already have the latest versions of the platform files installed, there is no
need to re-install them for this release.
Version 1.7.2.1 (Oct 8, 2014)
This is a minor release primarily intended to correct a bug in the code
generation; namely, a missing parameter when the N-bars exit type was used in
combination with long/short symmetry. In addition, the Price File Format window
now sets the initial file formatting for a new price file to the formatting of
the market currently selected in the Market Data table. This makes it easy to
format a new price file if it has the same formatting as one already formatted
in the same project file. For example, when adding multiple price files that all
have the same custom indicator formatting, the formatting now only needs to be
set once. Subsequent price files added to the same project will default to the
formatting of the currently selected file when initially opened in the Price
File Format window. In addition, the following bug fixes were made for this version:
-
[bug fix] The caption for Fig. 25 in the Performance Report Window
section of the user's guide (p. 56 in the PDF version) displayed the wrong
population member number.
-
[bug fix] The table of order type names in the Trade List Table section
of the user's guide (p. 60 in the PDF version) listed incorrect names
for the exit order types.
-
[bug fix] Custom indicators were incorrectly displayed in the Indicators
table when a market was selected in the Market Data table that did not
contain those indicators.
-
[bug fix] When the Market Data table contained some markets with custom
indicators and some without, selecting a market without custom indicators
failed to remove those indicators from the build set prior to building,
which resulted in error messages during building.
Version 1.7.2.0 (Sep 22, 2014)
This release includes five new exit order types:
fixed target (e.g., exit at a profit of $500), percentage target (e.g., exit
when the price increases 3%), trailing stop with a fixed-size floor, exit after
N bars if the trade is a loss, and exit after N bars if the trade is a profit.
The new order types are available on the Order Types tab and are described in
the user's guide in the Introduction, Order Types. In addition, the following changes and
bug fixes were incorporated into this version:
-
"Consider All" and "Consider None" buttons have been added to the
Indicators and Order Types tables to allow you to quickly remove all or add
all items to or from the Consider column.
-
An option to "Evaluate intraday strategies at optimal bar size if
applicable" has been added to the Evaluation Options tab. This works in
conjunction with the recently added option to vary the bar size for intraday
data to evaluate such strategies at the optimal bar size found during the
build process, rather than at the settings in place on the Markets tab.
-
The Performance Report now displays a list of the markets -- including
bar type and size -- used in evaluating the strategy to make it easier to
recall which settings were in place the last time the strategy was
evaluated.
-
A Properties command has been added to the File menu. This opens a file
properties window, which displays information about the currently open
project file, including the version of Builder used to last save the file,
the full path to the file, and a list of the price files in the Market Data
table with full path names.
-
For TradeStation/MultiCharts (EasyLanguage) code, market exit orders are
now consolidated into a single condition and order statement, as has been
the case for other code types.
-
The up/down arrow keys can now be used to scroll through the list of
markets in the Market Data table (Markets tab) so that the current selection
will appear in the Settings table.
-
The "Select New File" button on the Markets tab now opens to the folder
containing the selected file rather than to the last selected folder, which
makes it easier to identify the location of the selected price file.
-
[bug fix] For MetaTrader 4 strategies, the "ATRS" variable name should
have been "ATRL" when an ATR-based stop was applied on the bar of entry for
long/short strategies.
-
[bug fix] For AmiBroker, syntax errors were corrected for the ZLTrend
and AdaptLen indicators that caused compile-time errors. The corrected
functions are located in the include file, ASBuilderCommon.afl, which can be
found in the AFL folder in the installation folder for Builder. Please refer
to the installation instructions in the user's guide (Getting Started,
Installation) for instructions on how to copy this to AmiBroker.
Version 1.7.1.2 (Aug 30, 2014)
This is a minor bug-fix release following the release of 1.7.1.1. The following changes and
bug fixes were incorporated into this version:
-
Changing a data setting that affected the default fixed stop size range
prompted the program to recalculate the default stop size range. For large
price data files, this could impact the responsiveness of the program. To
avoid this, the program now recalculates the default fixed stop range only
when the user clicks the "Use Defaults" button in the Parameter Ranges
section of the Strategy Options window.
-
[bug fix] Formatting issues for non-US locales persisted in 1.7.1.1. The
problem was isolated to third-party code associated with the Settings table
introduced in 1.7.1 that affected locale settings globally. Locale settings
and associated number and currency formatting have now been restored to the
same functionality as in 1.7.0 and 1.6.4.
-
[bug fix] The Select New File button on Markets would cause a program
crash if it was clicked when no entries were yet present in the Market Data
table. The function of the button has been updated so that if no files exist
in the table, clicking the button is the same as clicking the Add button, so
that either button may be used to add the first file of price data to the
table.
-
[bug fix] The number of trading days for the number of trades per day
metric was off by 1 in some circumstances. This has been corrected.
Version 1.7.1.1 (Aug 28, 2014)
This is a minor bug-fix release following the release of 1.7.1.0. The following changes and
bug fixes were incorporated into this version:
-
The optimal bar size for intraday data found during the build process if
that option was selected is now reported in the Build Results tables as well
as in the comment block at the top of the strategy code.
-
[bug fix] For non-US locales, numbers and currencies were displayed as
random characters. This also affected the display of the Indicators and
Order Types tables. This has been corrected.
-
[bug fix] The bar size was not being set correctly when reading intraday
data, resulting in a reported bar size of 0 minutes under the File Settings
section of the Settings table on Markets. The bar size should now be read
correctly provided the price data file has consistent bar spacing. If not,
it can be set manually in the table.
-
[bug fix] The number of trades metrics (trades per day, week, month,
years) were using the entire trading segment, rather than the segment under
analysis, for the period part of the calculation. This has been corrected.
Version 1.7.1.0 (Aug 26, 2014)
This release adds the ability to optimize the bar size for intraday data.
Provided the price data support intraday bars, a new option on Strategy Options
allows you to select a range of bar sizes to consider for intraday data. The bar
size will be included in the build process, and the optimal bar size will be
reported in the build report. To support this feature, new functionality has
been added to the Markets tab, which now allows the user to select the bar type,
bar size, and session times to use for building and evaluating strategies. These
settings can be different than the settings that describe the data in the price
file. For example, if the price file contains 10 minute bars, the bar size can
be changed to any intraday bar size larger than 10 minutes, and the bar type can
be changed to daily, weekly, monthly, or range. For range bars, a Range Bar Size
setting is available to specify the size of the range bars desired. The Markets
tab has been redesigned to support the new functionality.
Please refer to the user's guide for details on the new features. The
relevant sections of the guide that have been updated include: Input Data and
Settings, Markets; and Input Data and Settings, Strategy Options (immediately
following the description of the neural network option).
In addition, the following changes and bug fixes were incorporated into this release:
-
Additional file delimiter options have been added to the Price File
Format window, including semi-colons. This permits data from NinjaTrader to
be exported and read into Builder.
-
An option to limit the number of displayed lines in the Price File
Format window to 200 has been added. This speeds up display times for large
data files. Uncheck the option to see all the lines in the data file.
-
The window opened to display the price data file when the View button is
clicked now includes options to save the data to a csv file and copy the
data to the clipboard.
-
New metrics have been added for the number of trades per day, week,
month, and year.
-
The "available dates" for price data files is now checked and updated
every time a project file is opened, so if the data in the price file has
changed, the new date range will be picked up and reflected in the Market
Data table.
-
The "average profit per day" metric has been changed slightly so that
it's now based on the actual number of trading days, rather than on the
number of calendar days as before.
-
[bug fix] The Top Strategies table was not updated after performing
"Evaluate All" except for the first time after changing to Top Strategies
unless the table selection was changed to the population display then back
to Top Strategies. This has been corrected.
-
[bug fix] Input descriptions were missing for inputs for price look-back
indicators, such as C[NBarEnL1], where the description was missing for
NBarEnL1. This has been corrected.
Version 1.7.0.0 (Jun 24, 2014)
This release adds NinjaScript code for NinjaTrader 7 as a code output option to
Builder. Builder now fully supports NinjaTrader 7. All features and
options, including the new neural network functionality and the recently added
adaptive indicators, are available for inclusion in NinjaTrader strategies. A
special code feature modifies the code based on whether the execution is on
historical or real-time data to insure accuracy in both back-testing and
real-time trading. Custom order-handling routines handle bracketed entry orders,
one-cancels-other and contingent orders and ensure orders remain in balance.
Additionally, the NinjaScript code is fully formatted and commented.
Please be sure to install the separate NinjaScript file into the NinjaTrader
7 platform prior to compiling any NinjaScript strategies generated by Builder.
The NinjaScript file (NinjaTrader.Adaptrade.zip), which can be found in the
NinjaScript folder within the Adaptrade Builder folder after Builder 1.7 is
installed, contains several indicators, support functions, and order handling
routines. It can be installed from within NinjaTrader by selecting Utilities
from the File menu and selecting Import NinjaScript…
In addition, the following changes and bug fixes were incorporated into this release:
-
A new option to "Fill limit order no better than limit price" has been
added to the Evaluation Options tab. This option, which is consistent with
similar assumptions made in NinjaTrader's back-testing order fill rules,
prevents limit orders from being "filled" in back-testing at a price better
than the order price when the bar opens above/below a sell/buy limit price.
Selecting this option results in more conservative fill assumptions for
limit orders.
-
For Bollinger bands and Keltner channels, the standard deviation input
is now used for both sides of the market when the symmetry option is
selected, whereas previously, the input was repeated for the long and short
sides of the market.
-
Comments for each strategy input have been added to
the input section of the strategy code for each supported language.
-
[bug fix] The min and max time ranges
in the Param statements for AmiBroker code incorrectly lacked seconds in
some cases. This has been
corrected.
-
[bug fix] The exit-at-time exit order type was not
properly synchronized with the corresponding option on Strategy Options to
"exit after" time. This has been corrected.
-
[bug fix] A strategy evaluation error was introduced
into version 1.6.4 that caused rules to be incorrectly evaluated when a
variable was compared to a constant, such as "VarL1 crosses above N1." This
error did not affect any prior versions and has been corrected.
Version 1.6.4.0 (Apr 27, 2014)
Seven new zero-lag and adaptive indicators were added to Builder in this
release. The adaptive indicators are exclusive to Adaptrade and adapt the
indicator look-back length to the market. These new indicators include a
zero-lag trend indicator, inverse Fisher RSI and inverse Fisher cycle, which is
based on John Ehlers' cyber cycle indicator, as well as adaptive versions of
each one. The new indicators are available for all supported platforms (TradeStation,
MultiCharts, MetaTrader 4, and AmiBroker). The new indicators are described in
the appendix to the user's guide "Technical Indicators", as well as in the same
section in the help files, and can be found on the Indicators tab in Builder.
Code for the indicators is contained in
supplementary files for each
of the supported platforms. For TradeStation and MultiCharts, the code is
contained in the files included in the EasyLanguage folder in the Builder
installation folder. For MetaTrader 4, there are new include files in the
Include folder, and the indicators themselves are contained in the Indicators
folder in the MT4 folder in the installation folder.
For AmiBroker, the indicator code is in the include file in the AFL folder in the
installation folder. Any older versions of the files for both MT4 and AmiBroker
should be replaced with the new versions. The indicators must be installed
separately for your target platform or errors will result when strategies
containing the new indicators are compiled in the platform.
Please refer to the
installation section of the user's guide for more information.
In addition, the following changes and bug fixes were incorporated into this release:
-
[bug fix] When both long and short
entries were market orders and a neural network was present, the short entry
condition contained the code fragment "EntCondL = False", which was
incorrect in this case. This has been
corrected.
-
[bug fix] For functions that return a
true/false value, such as boolean custom indicators, the variable
declaration was listed as numeric, rather than bool. This has been
corrected.
Version 1.6.3.1 (Mar 30, 2014)
This is primarily a minor bug-fix release.
The following changes and bug fixes were incorporated into this release:
-
To improve the responsiveness of the
Price File Format window for large price files, the window now displays only
the first 200 lines of price data. This enables the window to open much
faster than before when it displayed the entire price file.
-
The "day price" functions (OpenD,
HighD, LowD, CloseD), which are considered part of the "price patterns"
indicator, were not previously prevented from inclusion in entry order
prices even when the price patterns indicators was removed from the build
set. The functions were not included in the entry or exit conditions or the
neural network inputs if they were removed from the build set. However, to
be consistent, the functions are now also prevented from being included in
the entry order prices when the price patterns indicator is not part of the
build set.
-
[bug fix] When custom indicators
returning a true/false value were part of the build set, Builder could crash
under some circumstances. This has been corrected.
-
[bug fix] When the build process was
cancelled while running and a neural network was part of the strategies, the
program could crash. This has been
corrected.
None of the include files were changed,
and no other changes were made to the program for this release.
Version 1.6.3.0 (Mar 21, 2014)
This release adds neural network
capabilities to Builder. It's now possible to add a neural network to strategies
generated by Builder. The neural network output is compared to a threshold level
to determine trade entry. This condition is in
addition to any other entry conditions that may be present. Builder will
automatically select the inputs to the neural network and evolve the network
along with the entry and exit conditions as part of the genetic programming
process. Adding a neural network to the build process is as simple as selecting
the option on the Strategy Options tab and entering three optional settings. A
new section titled "Neural Networks" has been added to the Introduction chapter
in the user's guide and help files to describe this new feature.
In order to execute Builder-generated
strategies containing a neural network, supplementary code is required for each
of the supported platforms. For TradeStation and MultiCharts, the code is
contained in the files included in the EasyLanguage folder in the Builder
installation folder. For MetaTrader 4, new code has been added to both the
include and library files in the MT4 folder in the installation folder.
For AmiBroker, the code is in the include file in the AFL folder in the
installation folder. Any older versions of the files for both MT4 and AmiBroker
should be replaced with the new versions.
Please refer to the
installation section of the user's guide for more information.
In addition, the following changes and bug fixes were incorporated into this release:
-
A change was made to the generation
of entry and exit conditions that reduces the number of trivial results
(i.e., conditions that are "true" for all bars).
-
Various minor code changes for
MetaTrader 4 (MQL4 code) were made to make the code output more consistent
with newer MQL4 conventions.
-
Minor changes were made to some of
the indicators in the include file for AmiBroker. While the changes should
have no effect on the indicator values, any older version of the AFL include
file should be replaced with the newer one.
-
[bug fix] An error was introduced in
version 1.6.0.0 in which the bid/ask spread value entered on the Markets tab
was ignored in favor of the default value, which is the tick value inferred
from the price data file. The result was that if the option to use the
bid/ask spread was selected, the bid/ask spread was always equal to the
inferred tick value, rather than to the value entered by the user. This has been
corrected.
Version 1.6.2.0 (Feb 25, 2014)
The following new features, changes and bug fixes were incorporated into this release:
-
Two new performance metrics have been
added. The Sortino ratio and the MAR ratio are both risk-adjusted return
metrics. The Sortino ratio is similar to the Sharpe ratio except that
positive returns do not negatively affect the result. The MAR ratio is the
average annual compounded rate of return divided by the maximum historical
percentage drawdown. These metrics are described further in the Appendix to
the user's guide and can be added to the Build Results table and Metrics
lists by selecting "Change Metrics" from the Build Results context menu or
from the Options window.
-
The performance results tables have
been consolidated into one table -- renamed Build Results -- with a
pull-down menu to select between different views. The pull-down menu allows
you to select between the population and Top Strategies lists and between
in-sample, out-of-sample (OOS), and "All Segments", which combines the
in-sample and OOS segments.
-
An auto-save option has been added to
the Options window to enable automatic saving of the project file during the
build process after each generation.
-
Price data files are now located
based on a set of stored folders, which can be edited via the Options menu.
When the program reads in the price data, it looks for the file in one of
the stored folder locations. When a new file is selected on the Markets tab,
the location of the file is recorded in the stored list for later use. This
makes it easier to copy project and price data files since the full path of
the price data file is no longer stored in the project file.
-
On the Build Options tab, if the
option to build using Monte Carlo analysis is not selected, the optional
stress testing methods are dimmed to indicate that they don't apply to the
build process.
-
If the Build Results table is
displaying the Top Strategies results, the table is not updated during the
build process unless new strategies have been added, whereas previously the
table was redrawn after each generation regardless of whether it changed or
not.
-
The "sort-to-match" option has been
removed from the Options window and is now automatic.
-
[bug fix] If custom indicators were
used and all entries in the Market Data table were deleted before saving the
file, the program would crash when opening the saved file. This has been
corrected.
-
[bug fix] Custom indicator function
names were not shown in the Build Report if the associated market file was
deleted from the Market Data table. This has been corrected.
-
[bug fix] An error causing the
display of custom return values on the Price File Format window for custom
indicators to change to scientific notation has been corrected.
-
[bug fix] A memory allocation error
that could cause a program crash in some circumstances has been corrected.
-
[bug fix] An error preventing the
program from opening older project files, such as version 1.0.0, has been
corrected.
Version 1.6.1.0 (Dec 6, 2013)
This is a minor bug-fix release primarily to correct two problems discovered
with version 1.6.0, which introduced AmiBroker code output.
The following changes and fixes were incorporated into this release:
-
The Suggest Range button on the
Strategy Options tab for generating the range for fixed sized stops has been
modified. Now labeled "Use Defaults", this button sets the values for the
min and max fixed size stops to the default range calculated from the price
data. This default range is now calculated automatically when the price data
is read in and when the point value is changed, which affects the
calculations. The fixed stop range is set to this default range
automatically, so it is no longer necessary to click the button to use the
calculated range. As before, the user can enter new values or click the Use
Default button to revert to the default values calculated from the average
true range of the price data. The calculation of the default values has also
been improved to make it more reliable.
-
[bug fix] Code elements (function
names entered on the Price File Format window) for custom indicators were
not being displayed in AmiBroker code. When a custom indicator was part of
the logic, a blank was put in place of the function name. This has been
corrected.
-
[bug fix] Clicking the Suggest Range
button on the Strategy Options tab to generate the range for fixed sized
stops could cause a program crash. This has been corrected. The
functionality of this button has been changed as well; please see item 1
above.
Version 1.6.0.0 (Nov 25, 2013)
The principal feature of this release is the addition of AmiBroker (AFL) code
output, which runs in the
AmiBroker trading platform.
AmiBroker is popular for its low cost and wide
array of features, including portfolio and walk-forward testing. The other
changes and bug fixes of this release are detailed below.
Notes on AmiBroker code in Builder: The unique features of the
AmiBroker (AFL) language make it easy to develop strategies with simple entry
and exit logic, particularly if the logic is consistent with the design of the
language. While most of the features in Builder are fully compatible with
AmiBroker, a few of the options in Builder are impractical to include in AFL
strategies due to the design and features of AFL. In particular, it was not
practical to allow both long and short trades in the same AFL strategy. Of
course, it's always possible in Builder to develop separate populations of
long-only and short-only strategies. Because Builder-generated AFL strategies
can only be long-only or short-only, the option to allow reversal trades ("Wait
for exit before entering new trade") cannot be unchecked in Builder since
unchecking it would only be helpful if reversal trades were possible. It should
be kept in mind that converting strategies from a different code type, such as
TradeStation, to AmiBroker will not work correctly if the strategy contains both
long and short trades.
In addition to AmiBroker support, the following changes and fixes were
incorporated into this release:
-
To make is easier to re-use custom
indicator column settings in the Price File Format window, it's now possible
to select a new price file without changing anything else. Just click on the
price file name in the Markets table and select a new file. The file
formatting will remain the same as in the old file. To modify it, click the
Format button. If you plan to reuse the custom indicator or other file
formatting, you can "save as" the project file to a new name and use that
the next time you want to reuse the prior settings.
-
Indicators and order types that are
not available for a specific trading platform or code type are grayed out in
the Indicators and Order Types tables when you select that code type on the
Evaluation Options tab.
-
[bug fix] In MultiCharts, statements
involving intraday data and the day-price indicators (LowD, HighD, OpenD,
CloseD), such as RSI(LowD(0), N1), resulted in errors because MultiCharts
cannot process nested indicators for some functions, such as RSI. The code
has been modified to add a separate variable where necessary in this case;
e.g., Var1 = LowD(0); RSI(Var1, N1).
-
[bug fix] In MetaTrader 4, when an
ATR stop was applied on the bar of entry for strategies with both long and
short trades, the short side code had a sign error, resulting in the same
code as for the long side. This has been corrected.
-
[bug fix] Exit conditions for market
exit orders were being reported in the build report when there was no market
exit order. The problem has been corrected.
-
[bug fix] The TRIX indicator was
shifted incorrectly in cases where a shift value was present. This has been
corrected.
-
[bug fix] In cases where the position
size exceeded the maximum internal integer value, the size was truncated to
zero during the "round to nearest" calculation, resulting in the size
defaulting to the minimum specified position size. This has been corrected.
-
[bug fix] Risk values, which are
always reported as the risk per share/contract in the Trade List table, were
reported as zero if the risk value was less than 1 cent. Similarly, the risk
values stored in the MSA file were written out in cents format, which
resulted in zero values when the risk was less than 1 cent. Both problems
have been corrected.
Version 1.5.4.0 (May 24, 2013)
This release allows the trades and settings for the selected strategy in
Builder to be saved as a
Market System Analyzer (MSA) file (extension .msa).
MSA is a position sizing and money management
program that complements Builder by enabling the user to explore different
position sizing and money management settings and options, including equity
curve crossover trading and Monte Carlo analysis.
To save the current strategy's trades and settings to a MSA file, either
right-click on the Trade List and select Save to MSA File or select the
same command from the File menu. The user's guide has been updated with a
description of this command in the section Trade List Table (Build Results
chapter) and in File Menu Commands (Menu Commands chapter).
No other changes were made to this version.
Version 1.5.3.0 (Apr 23, 2013)
This release adds stress testing with Monte Carlo analysis, as previewed in a
recent newsletter article.
The stress testing can be performed on existing
strategies and incorporated into the build process for new strategies. When
stress testing is applied, the results are reported based on the Monte Carlo
analysis of the stress test results at a user-specified confidence level. The
stress testing options and settings are available on the Build Options tab. The
user's guide section for the Build Options tab describes the available settings
and options. Also, please see the new section in the user's guide "Stress
Testing and Monte Carlo Analysis" in the chapter Usage Topics for a discussion
of this feature. The other features of this release are detailed below.
The following changes and fixes were incorporated into this release:
-
Memory management has been improved,
which should allow larger populations to be built before reaching the
computer's memory limits.
-
Two new metrics have been added to
better account for open profit/losses: open profit/loss and the total net
profit. The latter is the sum of the closed trade net profit and the open
trade profit/loss. Optimizing for total net profit, rather than net (i.e.,
closed trade) profit should help avoid strategies that end the build period
with large open losses.
-
"Signal Price" has been added to the
Trade List for both trade entry and trade exit. The signal price is the
price calculated by the strategy, whereas the entry and exit prices are the
(simulated) fill prices. The signal price is often different than the fill
price because of where the bar opens following the bar on which the order
price was calculated. Knowing the calculated price can help explain the
position size for "percent of equity" position sizing, among other things.
-
The order fill rule for filling limit
orders only when the limit price has been exceeded has been added back in to
Builder. This is in addition to the bid/ask fill rule on the Evaluation
Options tab.
-
The option on Evaluation Options to
"Use position sizing stored with the strategy when evaluating existing
strategies" has been replaced with a button "Reset to Build Settings". Now,
whatever position sizing settings are visible on this tab will be applied
when a strategy is evaluated. To restore the settings in place when the
strategy was originally built, click the button.
-
The text in the Output window can now
be selected and copied to the clipboard.
Version 1.5.2.0 (Feb 15, 2013)
The most visible feature in this release is the new Welcome screen, which is
optionally displayed when the program starts up. The Welcome screen allows you
to directly access three new example projects for stocks, forex, and futures.
The screen also displays tips and contains a link for the Quick Start Steps
topic of the help files. The other features of this release are primarily
convenience (user-interface) features and bug fixes, which are detailed below.
The following changes and fixes were incorporated into this release:
-
The in-sample and out-of-sample
Results and Top Strategies tables can be sorted together using a new option,
which is selected by right-clicking on the tables ("Sort to Match").
-
The up/down arrow keys can now be
used to change the selection of the strategy in the Results and Top
Strategies tables.
-
"Move Up" and "Move Dn" buttons have
been added to the Change Performance Metrics dialog window to allow you to
move metrics up and down in the list of selected metrics. Also, these
buttons can be accessed by right-clicking.
-
Builder can now accept price files in
reverse date order, where the most recent date is first and the earliest
date is last in the file.
-
Builder now verifies that all rows of
price data are in consecutive order. If the dates appear out of order, it
can indicate that the wrong date format is being used, which can be
corrected by selecting a different locale.
-
The maximum position size on the
Evaluation Options tab now automatically changes to be at least as large as
the fixed size when fixed size position sizing is selected. This helps
prevent the position size from being inadvertently limited by an incorrect
setting for the maximum position size.
-
The Top Strategies tables are now
checked for duplicates before adding a new strategy to the tables.
-
To make it easier to delete items
from the Top Strategies tables, multiple rows can be selected together using
shift-click and control-click combinations. The selected strategies can be
deleted using the delete key or by right-clicking and selecting "Delete
Selected Strategies".
-
[bug fix] In MetaTrader 4 code for
fixed fractional position sizing, a semi-colon was missing at the end of the
statement for the NSharesL or NSharesS variable. This has been corrected.
-
[bug fix] The seconds part of the
time field in a price file was not read correctly when the hour part was
zero. This has been corrected.
-
[bug fix] When no conditions were
selected for the Top Strategies tables, every strategy was copied to Top
Strategies by default. This has been changed so that if no conditions are
selected, no strategies are copied to Top Strategies.
-
[bug fix] The code for members in Top
Strategies was not generated for strategies that were not saved in the
Results table, which meant that, in some cases, the code window was blank
and, in other cases, the code was from a prior generation. This problem,
which also affected the strategy member number, has been corrected.
-
[bug fix] Using a small population
size or a small price file could cause a program crash in cases where the
build process progressed so fast than the results panes couldn't keep up.
This has been corrected.
Version 1.5.1.0 (Jan 25, 2013)
This release significantly enhances the build process in Builder. You can now
build strategies based on performance requirements and constraints, such as
profit factor ≥ 1.5, drawdown ≤ 20%, number of trades between 100 and 300,
etc. The Build Metrics table has been replaced with separate lists of build
objectives (metrics to minimize or maximize) and build conditions (metrics
specified in the new constraint conditions). In addition, similar conditions can
be specified to filter the results during building to set aside any strategies
that meet your requirements. For example, you could have the program set aside
any strategy from any step of any build that has a correlation coefficient
greater than 0.95 as measured across all segments of the data and which has a
net profit of more than $5000 on the out-of-sample segment. These strategies are
listed in the new Top Strategies tables, which work the same as the existing
performance tables.
In addition, the following changes and fixes were made in this release:
-
[bug fix] Indicator shifting was not
handled properly for the accumulation/distribution indicator, which could
cause a program crash. This has been corrected.
-
[bug fix] The code variable "InitialStop"
was not being initialized properly when the option to apply protective stops
on the bar of entry was used but no stop was used, resulting in a code
compilation error. This has been corrected.
-
[bug fix] The code variable for
average true range (ATR) was incorrectly labeled when exits were applied on
the bar of entry for ATR stops, resulting in a code compilation error. This
has been corrected.
-
[bug fix] In some cases, the Build
Report incorrectly displayed the indicator list for a strategy as empty.
This has been corrected.
Version 1.5.0.0 (Dec 23, 2012)
This release adds MetaTrader 4 script
(MQL4 code) as an optional Code Output option. MetaTrader 4 (MT4) is a popular
forex trading platform. Builder now includes special functionality, including
versions of several indicators, specifically to ensure maximum compatibility
with MT4. MT4 strategies ("Expert Advisors" or EAs) can be saved directly to a
.mq4 file or copied and pasted into the MetaQuotes Language Editor (MetaEditor).
In addition, the following changes and fixes were made in this release:
-
Indicator shifting has been added.
For example, Average(C, N1)[NShift] indicates that the moving average has
been shifted by NShift bars, which means the statement returns the average
NShift bars ago. The probability that an indicator will be shifted can be
specified under Strategy Options.
-
An option has been added to Strategy
Options for allowing nested indicators, such as Momentum(XAverage(H, N2),
N3). Previously, nesting was always "on". If unchecked, indicators will not
be nested, regardless of tree depth.
-
Price files can now be read with the
date and time in the same field; e.g., 11/5/2012 13:15 or 20090531 13:15.
The field should be labeled "date" and no "time" field should be present.
-
The percentage of computer memory
currently in use is now displayed in the status bar. This makes it easier to
see the relationship between program settings, such as population size, and
the amount of memory used by the program.
-
The Exit command (File menu) and the
close button on the main window are now active at all times, including
during the build process, and can be used to terminate the program at any
time. A confirmation message is displayed before the program is closed if a
build is ongoing.
-
A value can be entered on the Markets
tab for the bid/ask spread of each symbol. The value defaults to the tick
size but can be changed to any value. The Order Fill Rule on the Evaluation
Options tab has been changed so that, if checked, it uses the bid/ask spread
to determine fills. For example, buys occur at the ask and sells at the bid,
so a market buy order will be filled at the chart price (bid) plus the
bid/ask spread. Similarly, a buy stop order will not be filled unless ask
price (chart price plus bid/ask spread) rises to or through the stop price.
-
The max bars back value ("Max
Look-back Length") can now be entered for custom indicators on the Price
File Format window.
-
When strategies include both long and
short trades that enter using market orders, logic has been added to prevent
both long and short entries from occurring at the same time.
-
On the Options window (Strategy
menu), a time-out interval can be set to control how long the program waits
for lengthy calculations. Previously, a "Calculations timed out..." error
message was produced if any given strategy took longer than two minutes to
evaluate. This cut-off time can now be set by the user.
-
The cents part of the equity labels
has been removed from the y-axis of the Equity Curve plot.
-
[bug fix] Custom indicators were not
listed in the Build Report in the indicators build set section. This has been
corrected.
-
[bug fix] The Suggest Range button on
the Strategy Options tab did not work correctly when the average true range
was less than 1.0. This has been corrected.
Version 1.4.1.0 (Sep 24, 2012)
This release changes the EasyLanguage code
formatting of entry and exit conditions to solve a problem previously
encountered in TradeStation. With nested indicators, such as
Average(Average(Average(Average(C, N1), N2), N3), N4), TradeStation has
difficulty evaluating the expression, which can cause the chart to freeze.
Eventually, TradeStation will finish evaluating the strategy, but it can take
many minutes in some cases. Aside from avoiding that kind of logic, the only
solution previously was to rewrite the condition as follows:
Var1 = Average(C, N1);
Var2 = Average(Var1, N2);
Var3 = Average(Var2, N3);
EntCondL =Average(Var3, N4);
in which Var1, Var2, Var3, and Var4 are
variables, and EntConL is the final, overall condition.
Builder now incorporates this style of
code formatting, in which the entry and exit conditions are decomposed into
multiple variables. This eliminates the difficulty TradeStation has with nested
indicators. As a result, it's no longer necessary to reduce the tree depth in
order to prevent complex, nested conditions or to rewrite the code by hand.
In addition, the following new features were added to the Price File Format window:
-
A "Clear All Formatting" button has
been added. This button removes all column headings from the table of price
data and clears the table of custom indicator settings. This can be used
prior to setting the column headings to remove the default headings in cases
where each column must be relabeled.
-
A "Data Format" pull-down menu has
been added. This menu allows you to select the locale for use in
interpreting the data in the price file. The menu defaults to "English
(United States)", which means it will expect dates to be in MM/DD/YYYY
format and numbers to use a "." as the decimal symbol and "," as the digit
group symbol. Changing the format, for example, to "English (United
Kingdom)" will cause the program to expect dates in the format DD/MM/YYYY.
If the prices use a comma as the decimal symbol (e.g., 100,01), the correct
selection may be a European format, such as French or German.
Version 1.4.0.0 (Aug 25, 2012)
This release adds portfolio capabilities.
It's now possible to build over multiples markets simultaneously so that the
resulting strategy is designed to perform on all selected markets. Building over
multiple markets can produce strategies that are more robust that single-market
strategies and enables a diversified, portfolio approach to trading. In addition
to the new portfolio feature, the following changes and fixes were made in this release:
-
The open trade equity has been added
to the Performance Report, making it easier to determine if there is any
significant performance impact from open trades.
-
[bug fix] When the number of stored
strategies was set to be larger than the population size, the program would
attempt to evaluate the non-existent population members. This has been
corrected.
-
[bug fix] When the trade list was
saved to a file, the quantity was displayed as "1" in the output file
regardless of the true size. This has been corrected.
-
[bug fix] The Equity Low performance
metric displayed random characters when there were no trades in the segment
(in-sample or out-of-sample). This has been corrected.
-
[bug fix] In EasyLanguage code, range
bars should not use the HighD, LowD, CloseD and OpenD functions, which
return -1 when applied to range bars. Builder now excludes these functions
from the build set when range bars are being used.
-
[bug fix] The minimum number of
shares setting from the Strategy Options tab has now been added to the
Performance Report.
Version 1.3.0.1 (May 21, 2012)
This release corrects several errors in
the prior release, mostly related to the position sizing features added in that
version.
The following changes and fixes were made in this release:
-
[bug fix] The list of Build Metrics
sometimes displayed multiple instances of the Net Profit metric. Each
additional occurrence pushed a metric off the bottom of the list. This has
been corrected. However, the fix is not retroactive, so project files that
display this problem will continue to do so. The extra occurrences of the
Net Profit metric can be removed by right-clicking on the Build Metrics
table and using the Remove button.
-
[bug fix] With fixed fractional
position sizing and no protective (money management) stop, the risk value
was supposed to be provided by the largest loss. However, because the
position size defaulted to zero, no trades were made in this case, so no
losses were recorded. This has been corrected by adding a setting for the
minimum number of shares strategies will trade, with a default value of 1.
The minimum number of shares is set on the Evaluation Options tab.
-
[bug fix] Return, return/drawdown
ratio, percentage drawdown, and several other metrics dependent on account
equity gave zero or incorrect results in the out-of-sample (OOS) period
because the starting equity in the OOS period was incorrectly set to zero.
This has been corrected. As a result, any strategies with an OOS period
built in version 1.3.0.0 will need to be re-evaluated from the Build menu to
properly calculate the OOS results. The equity curve will show a
discontinuous jump until the strategy is re-evaluated.
-
[bug fix] Parts of the build report
did not update during the build process each generation, such as the number
of generations and total build time. This has been corrected.
-
[bug fix] Fixed dollar (protective)
stops didn't work well for forex because the stop sizes, which are
per-share, were too small in most cases to display properly in the
EasyLanguage code. The input value for the stop size displayed only two
decimal digits, which was insufficient to display the stop values. This has
been corrected.
-
[bug fix] Fixed ratio position sizing
didn't work well for forex because it started at a position size of 1 and
incremented the size by 1. Forex typically trades in sizes of 10,000 or
100,000 per lot. This has been corrected by using the "round to.." and
minimum share options. If the option to round the position size to, say,
10,000 shares is selected, the delta value for the fixed ratio method will
be relative to 10,000 shares. Also, the fixed ratio method now starts with
the minimum number of shares specified on the Evaluation Options tab.
-
[bug fix] The trading costs field in
the table on the Markets tab didn't display enough decimal digits to display
the trading costs for forex properly. For example, the costs for forex might
be 0.003 per share for a lot size of 10,000, which would give costs of $30
per lot. The table now displays the decimal digits properly.
-
[bug fix] When clicking on the
results tables during building (e.g., to sort the results), the program
sometimes crashed. This happened when the tables were redrawing while being
updated with the results from the recently completed generation. This has
been corrected.
Upgrading Note:
As noted above in
#3, any strategies built in version 1.3.0.0 with a non-empty out-of-sample (OOS)
period will need to be re-evaluated from the Build menu to properly calculate
the OOS results. The equity curve will show a discontinuous jump between the
in-sample and OOS periods until the strategy is re-evaluated.
Version 1.3.0.0 (Apr 9, 2012)
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 (Jan 5, 2012)
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/2012; 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 (Nov 22, 2011)
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 (Sep 6, 2011; Sep 7, 2011; Sep 20, 2011)
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 (Aug 8, 2011)
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 (Jul 27, 2011)
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 (May 24, 2011)
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 (Apr 29, 2011 and May 4, 2011)
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 (Jan 15, 2011)
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 (Nov 12, 2010)
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 (Oct 1, 2010)
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 (May 27, 2010)
This version added an equity curve plot and a table of performance results to
version 1.0.0.
Version 1.0.0 (Mar 28, 2010)
Initial release.