Learn to trade a portfolio of low-touch, rules-based, quant trading strategies, in 6 weeks. 25% discount with any new
purchase of a Zorro S permanent license or annual subscrption. Enroll until
April 30 at the
Robot Wealth Algo Bootcamp.
February 2021 | Zorro 2.35
Zorro 2.35 was released and is now available on
the download page.
New: external optimization libraries, faster backtest, multi-account status script, new broker and data feed plugins. and a lot other new features.
The full list can be found below.
August 2020 | Zorro 2.30
The new Zorro version 2.30 is now available on
the download page.
New features: realtime chart generation, interactive payoff diagrams for options, emails on errors, new indicators, and many more new features.
The full list can be found below.
March 2020 | Zorro 2.25 released
Zorro version 2.25 is now available on
the download page.
New features: a generator for artificially shaped price curves, improvements
to the visual debugger, new indicators, a new capital distribution algorithm, a workaround for the upcoming German trader tax, and many more. The full list can be found below.
January 2020 | Free Zorro video course
Our partner, Robot Wealth,
offers a free 4-part tutorial series showing you how to
effectively set up, backtest and maximize your trading with
Zorro as a solo retail trader. You'll also see how they utilize
Zorro daily in their professional trading book. Get the course
November 2019 | Zorro 2.20
Zorro version 2.20 is now available on
the download page.
New features: an indicator development workshop, carrying over
trade statistics to a new session, more scripts and tools, a
Zorro integration toolkit, and many more. The full list can be found below.
September 2019 | New affilate ATFX
New ATFX real accounts are now
rewarded with a Zorro S subscription.
ATFX is a 'No Dealing Desk' Forex / CFD broker with no
commission, many CFD classes, and MT4/Zorro connection.
July 2019 | Zorro 2.15 released
Zorro version 2.15 is now available on
the download page.
This version features communication between Zorro instances, new
IB order types, more flexible bar generation, and many more new
features. The full list can be found below.
May 2019 | Zorro 2.12 released
Zorro version 2.12 was now released (download).
This version includes two new optimizer algorithms, many added
scripts, and the new Z13 options trading system with 50%
historical CAGR. The full list of new features can be found below.
May 2019 | Historical data service
Upon general demand, we're now selling
M1 price history and EOD options history for all US stocks and
ETFs on the Download page. Contact info(at)opgroup.de
for bulk licenses.
April 2019 | Black Book third edition
The third edition of the
Book contains new Zorro strategies for trend and counter-trend
forex trading, and two new chapters about stock and options trading.
The new scripts can be downloaded
here (also with the password from earlier editions). Zorro 2.08
or above is required for the new systems.
April 2019 | Zorro 2.08 released
The new Zorro version 2.08 is now available
on the Download page. Zorro 2.08 contains
the new Python bridge, an email function, more functions for options,
and has a smaller memory footprint for low resolution backtests.
The full list of new features can be found below.
Dec 2018 | Price Probability Distribution
A new article on
Financial Hacker illustrates the algorithm behind the
contractCPD market sentiment function and its use in a simple
Updating Zorro 2.30 to Zorro 2.35 / 2.38
You can update a live trading Zorro without
open trades. Please see under Trading
how to update a live system.
If you get a syntax error with
a script that worked in previous versions, check if one
of its variables,
functions, or definitions had accidentally the same name as a
newly added keyword.
Deprecated keywords are collected in legacy.h,
which can be fully or partially included when needed.
If you get a
backtest result to the previous version, compare the logs. Differences
can be caused by newer price histories, updated asset parameters,
different strategy settings, or different
WFO cycles or backtest periods. Testing a Z system requires recent
price data, so make sure to get it from the Zorro download page.
If you've modified Zorro.ini,Z.ini, or an included
your modifications will be overwritten by the installation. For
keeping your settings, use individual asset lists, store the Z.ini
settings in individual .ini files (Z1.ini,
Z2.ini, etc.), and copy your Zorro.ini settings
New script Reality.c as a template for reality
BarPeriod can now be set up by script to
The contractUpdate function now sorts
contract chains automatically by expiration and strike.
We found that scripts often use the loop function
unnecessarily, and thus added of as an alternative.
The latest published beta version is
available on the Download Page. Zorro S features
can be unlocked in beta versions with a valid Zorro license. Z strategies
are not included in beta versions. A list of fixed bugs can
be found under bugs.
Future Zorro features
If you want a new Zorro function or feature, there are two ways to get it.
You can either pay us for implementing it, and donate it to the community. Or you can suggest it on the
User Forum in the Zorro Future section. There
you can also comment or support features suggested by other users. We
normally implement suggested features when they are useful
(give a usage example), popular (supported by
other users), backwards compatible (won't break existing
scripts), and efficient (save code in a script). How long it takes depends on the usefulness of the
feature and how hard it is to implement. Donated features have priority.
Features planned for the next releases:
Overcoming the 32-bit limit for training and backtests (Zorro
S; in development).
A new Z system based on range market ineffectivity for currency
portfolios (Zorro S; in development).
Interactive chart improvements - vertical scrolling, crosshair, live
Licensing system for compiled scripts (Zorro S).
Support for .cpp scripts by directly calling the VC++ compiler and
Zorro Release History
Zorro 2.35 (February 2021)
The account limit of the free Zorro version was raised from $7000 to
External optimization algorithms can be used with the
parameters function (Zorro S required).
Prices of open option trades are not anymore updated outside market hours when
BR_SLEEP is set..
Zorro's exit code can be set with the ExitCode
The backtest speed was increased due to changes to the print function
and the memory management.
The seriesO/H/L/C functions can be used as
prices series parameters to indicators or functions.
Multicore training now supports the StrategyFolder (was only partially
implemented in the previous version).
The assign function converts portfolio weights
to asset amounts.
The report function can now return a list of
all open trades.
Open trades can be loaded from the broker account with the
A negative series length can be used for generating
static, non-shifting series.
The ZigZag indicator was added to the indicators list.
Machine learning models and script parameters can now be trained at the
same time (see Training). In the previous version
this was only possible for the integrated machine learning methods, but not
for the general NEURAL method.
The bar function allows user-defined special bars
such a Range Bars or Renko Bars.
Training parameters now really produces a HTML file with parameter histograms
(in the previous version this was not yet fully included).
The R lectures by Harry Georgakopoulos have
been included in the Zorro documentation.
Zorro will now detect margin calls when Capital is
The seed function can initiate a deterministic
random number sequence.
The HH and LL functions now also
accept a bar offset.
The Ichimoku indicator was added to the collection.
The strx function replaces sub-strings in a string.
The TO_FILE and TO_ANY
print target prints messages to the log file and window in all modes.
The TICKS mode was changed. Ticks are now executed
in the order of their time stamp, not sorted by asset or trade as before. This
makes testing slower, but removes the special restrictions for tick functions,
TMFs, and virtual hedging. The old testing method can still be used by setting
the FAST flag.
The rev function reverses a series so that it now
starts with the oldest data.
The SHUFFLE flag randomizes a price curve and
thus helps determining if profit is caused by a real edge or by artifacts or
The BINARY flag enables the simulation of binary
Training now plots all parameter charts in a
HTML page, also for portfolios and WFO.
Zorro 1.30 (released April 2015)
The OptimalFRatio variable modifies OptimalF
factors for preventing large component margin differences in portfolio systems.
For scalping strategies, bar periods down to
100 ms are now possible with Zorro S. The BarPeriod variable
is now of type var instead of int (check possible
compatibility issues, f.i. in print/printf statements).
Asset specific parameters can be stored in the AssetVar
All Z systems can now be retrained with Zorro
S by clicking the [Train] button (even while trading).
Price history of all assets from 2008 and above must be available in the
History folder. The recent prices are updated and the parameters
of the last WFO cycle are trained. Retraining the Z systems is normally not
necessary, but was requested by many users.
Several small improvements have been implemented in the
Z systems, among them different OptimalF
factors for the backtest and for live trading, and a different profit lock method.
A chart with the current equity curve and other information is now included
in the trade status page.
If the trade volume is controlled by setting both Margin
and Lots, the Lots variable now determines
the minimum number of lots per trade. Trades can be automatically skipped when
Margin is below the minimum.
The backtest can now use T1 (tick based) historical
The assetHistory function can now be used
to produce T1 price history files.
The seconds function is now of type var
instead of int (check possible compatibility issues, f.i. in
print/printf statements). Its fractional part contains fractions of a second
in milliseconds precision.
The user-supplied tick
function can be used to evaluate incoming price quotes.
The AutoCompile flag determines whether scripts are
always compiled, or only when they were modified.
Plot names beginning with '#' won't appear in the
The test performance can now be further evaluated with the user-supplied
The UO (Universal Oscillator) by John
Ehlers was added to the indicator library.
The Risk column of the status page
now displays the current risk of a trade instead of the initial risk.
Zorro 1.28 (released February 2015)
The WebFolder variable can now be
set up globally for displaying live trade status on a web site.
The strtext function can be used to read strings
from an .ini file.
The AGC and EMA functions
now also accept an alpha parameter instead of a time period.
Some Zorro properties - for instance, the automatic deleting of old log
files - can now be set up in the Zorro.ini file.
The commission per asset can now be set up in the AssetsFix.csv file and by script in the
Commission variable. The simulation now simulates a
spread/commission account, instead of a pure spread account.
In the SNB floor removal aftermath, many brokers reduced their maximum leverage
from 400:1 or 200:1 to 100:1. The simulated default account (AssetsFix.csv)
was also changed to 100:1 leverage, which affects the profit of most systems.
The Z4 and Z5 systems are expired and
have been removed from the strategy pool.
The Z3 system now also got an equity curve trading
The currently profitable and suspended components of the Z12
system are now displayed in a asset/algo matrix with
green and red rectangles.
Zorro 1.26 (released October 2014)
The number of open lots per asset can be evaluated with the
LotsPool and LotsPhantom
The Market Meanness Index (MMI) was added to the indicator
Haiken Ashi prices (HA) were added to the indicator
The Z systems have been improved and retrained. New algorithms have been
added to the Z4 and Z5 systems for working with very low price volatility.
Zorro 1.24 (released June 2014)
The AssetFrame variable can be used to skip
quoteless bars of assets in a portfolio system.
The TradeCosts script lists the relative trade
costs of all main assets.
The Script scrollbox now 'remembers' the last selected
Hedge mode 5 now minimizes the number of open trades
by closing trades partially if required.
The PlotDate variable can be used to zoom the
chart to a certain date.
The print function can print to various targets,
f.i. to a message box or to the performance report.
Zorro now only logs in to the broker when in trade mode. In test or train
mode, missing assets or price data will produce an error message. The
Download script now needs trade mode for updating
prices or asset data.
The exec function can be used to open an external
program, document, URL, or batch file.
A Monte Carlo plugin is now available for a
Monte Carlo analysis of strategy scripts and external trade lists.
The annual return is now calculated from the maximum margin instead of the
average margin. This produces slightly more pessimistic returns.
The R2 coefficient that measures equity curve linearity
is now included in the performance report.
A small example script for converting .csv price history
files to Zorro's .bar format was added (needs the file_write
The History string can be used for selecting between
different sets of historical data files.
The file_write function can be used to store the
content of a string, series, or array in a file.
The NumInRange function can be used to generate
price distribution statistics while trading.
The ShannonGain indicator calculates the expected
gain of the next bar period, based on Shannon probability.
A description of using NeuroShell™ and other DLL-based indicators
for Zorro was added to the conversion chapter.
Trade management functions (TMF) can now be triggered
by entry or exit limits, thus allowing for additional entry/exit conditions
or trade chains.
TickSmooth can remove outliers from incoming
The TickTime variable can be used to save CPU
resources by defining a minimum time between script executions.
The plotProfit functions plot the daily, weekly,
monthly, or quarterly profit or loss in the price chart.
The Z5 system got a new algorithm for the "Stop"
slider that re-enters trades closed due to the risk limit. This greatly improves
the profit in situations when the risk limit is exceeded.
Zorro 1.20 (released November 2013)
The PRELOAD flag allows loading lookback price data
from the price history on trade start.
The DominantPhase function can detect turning points
of the dominant cycle in a price curve even before they happen.
A new FXCM plugin is available where the wrong trade profit issue is fixed,
so the SET_PATCH command is not required anymore.
Bar charts by plotBar are now automatically aligned
so that the chart always starts with the first bar.
The MTR4 bridge now supports multiple MTR4 instances
on the same PC (Zorro S only). To connect to a particular MTR4 account, either
the account number can be manually entered in Zorro's [User]
field, or the account selection system can be used.
The -d command line option allows to pass a
#define statement to the script (Zorro S only). This way many
different tasks can be automatized with the same script.
The ALLCYCLES flag produces a portfolio analysis
of all sample cycles.
The plot command now supports plotting different
symbols in the chart.
A price data gap check can be activated with the GapDays
New indicators by John Ehlers (HighPass2,
StochEhlers) have been converted to C by DdlV, together
with an example script of a trade system.
The Z12, Z12fx, and Z12nfa
combined strategies have been removed because they were found less profitable
than trading Z1 and Z2 separately. Reason is an internal mechanism that evaluated
open trade profits for trade decisions, which does not work well across opposite
strategies such as the Z1 trend trading and the Z2 counter trend trading systems.
Zorro 1.05 (released January 2013)
The Total down time - the time spent below a preceding
equity peak - is now displayed in the performance
The timer function can be used for precisely determining
Asymmetric slippage can be simulated by setting the
Slippage variable to a negative value.
dayPivot calculates the pivot point of the previous
The stock exchange working hours for the day functions
can be changed through the variables StartMarket and
The week start and end time can be changed through the variables
StartWeek and EndWeek.
The DIAG flag prints the execution time for opening
and closing positions into the log file.
The TICKS flag now also handles entry limits with
Price history files are not anymore automatically downloaded at the begin
of a new year - this confused beginners and was a bad idea anyway. Instead the
assetHistory function was implemented.
A new broker plugin with the ForexConnect™ API interface has been
implemented. It provides a more stable connection than the previously used Order2Go™
Logging in to the broker with several Zorro instances on the same PC will
now generate an error message.
The Z1 / Z2 system components are now
optionally filtered with the results of an out-of-sample test with the real
trading parameters. This reduces the backtest performance, but should improve
the real trading performance.