Trading with Zorro

A while go I developed some interest in trading and did some research to find out which software I might use for automated forex or stock trading.

There is commercial software like TradeStation, MultiCharts, NinjaTrader, AmiBroker, Neuroshell etc. There is also the free MetaTrader but it only works with Forex brokers.

And then there is Zorro. Zorro is free but if you want to trade with a sizeable amount of money you are required to buy the sponsored Zorro S edition.

The Good

Zorro is like the swiss army knife for trading. The Lite-C scripting language is easy to use and allows you to express your trading idea with very little code. I prefer it over the other commercial alternatives.

If you want to risk your money you can do random trading very easily like this:

function run()
  BarPeriod = 1440;

  if (random() < 0)

Now you could hit trade, connect to your broker and wait.

The Bad

In this last year where I used Zorro i stumbled over a multitude of bugs which was pretty annoying and always gave me a bad feeling. I’m myself a software developer and know it is not easy to make software bug free but especially for a trading software that manages my money I would have expected a higher quality standard. I need to be able to trust the software!

Some bugs could be resolved in cooperation with the Zorro Support Team but there are still enough left. With my newest trading strategy I noticed trade execution is not correct so I missed out on profit and also made a loss because Zorro decided to go short in my long only strategy.

Zorro is the most broken software that I ever used, I regret that I bought the sponsored edition. I replaced it with my own software called ArgonTrader.

The Strategy

A simple strategy taken from one of the books in the references trades the S&P 500 index based on the VIX COBE volatility index.

function run()
  BarPeriod = 1440;
  StartDate = 2000;
  Confidence = 100;

  PlotWidth = 700;
  PlotHeight1 = 400;

  Capital = 10000;
  var InitialMargin = Margin = Capital * 0.05;


  assetHistory("^VIX", FROM_YAHOO);
  assetHistory("^GSPC", FROM_YAHOO);

  vars vixPrice = series(priceClose());
  var vixSMA = SMA(vixPrice, 10);


  LifeTime = 8;
  if (NumOpenLong == 0 && vixPrice[0] > vixSMA * (1 + 0.046))

  if (NumOpenLong > 0 && vixPrice[0] < vixSMA * (1 - 0.035))
Monte Carlo Analysis... Median AR 91%
Profit 77920$  MI 385$  DD 9773$  Capital 10962$
Trades 285  Win 68.1%  Avg +67.4p  Bars 4
CAGR 13.75%  PF 1.67  SR 0.69  UI 3%  R2 0.98


Note: Unfortunately Yahoo does not provide free history data any more, so this script does not work any longer as is. You would have to remove the assetHistory calls and get the data from some other source than Yahoo.


For the interested reader here are some books with working trading strategies: