Home

Debugging Techniques


Date: Thu, 16 Aug 2001 07:58:23 -0400
From: Herman van den Bergen <psytek@home.com>
Subject: Debugging Techniques

Perhaps the methods outlined below are obvious and are not new to you but I found they helped me so I'll post them for the less experienced MS users who want to develop more complicated formulae.

1) Before writing a Trading formula I group my variables:

Analog values (Yes: my background is electronics :-)) i.e. those that can take on any numerical value, like EntryPrice, $Profit, %Profit, DailyEquity, TradeEquity, DD, etc.

Digital (Binary) variables that can only take on the values of 1 and 0, like: GoLong, GoShort, GoCash, ExitLong, etc.

Mixed variables that, for example, takes on certain specific values 1 (Long), 0 (Cash) and -1 (Short).

2) I develop my trading formula in small steps starting with the lowest/simplest variable, make an indicator for each variable and
plot/verify them on the price chart. It is very useful to plot your binary signals too, I often have 3-8 binary signals below the price chart during the development. Just like a Logic Analyzer ... To make the signals plot nicely you can multiply them by 5 or 10 and give them an offset, modify the trace as you like. Like:

   GoLong*10;
   GoShort*10-20;
   GoCash*10-40;
   Position*10-60;
   etc.

This will make it very easy to see what is happening and whether your timing is correct - It is often a struggle to get your signals in sync and this way you can easily modify or add a ref(x,-1) function and see what happens to the binary signals.

3) When the formula is finished (?) make a backup by adding BAK to the end of it's name. Now create separate indicators for all significant variables you defined (with := )in your trading formula. This is very easy and allows you to use them for debugging and further development work. Suppose you have a trading fomula named "MySystem" and it contains a variable named "Position", you can make an indicator to display this varibale with a single line like FmlVar("MySystem","Position"); You can then use this in other formulae and/or combine a number of them to allow you to easily plot sets of indicators to facilitate subsequent work.

4) It may help you to put a custom grid on your chart to more clearly show the relationship between the various events by adding vertical lines like this:

   If(GoLong, Close,0);
   If(GoShort, Close,0);

Plot the value, assign a color of your choice, assign the bar graph pattern, and set the line-width to this thinnest available. This
combination will plot straight vertical lines up from zero to the Close or Equity (use P) WITHOUT the zero interconnect that messes up the display.

5)  Now, you got it all working... :-) but are you sure that the numbers are correct? Next you can (should?) display ALL significant traces at the same time and copy all the data arrays to Excel to verify vales and perform parallel/supplementary calculations outside of MS.

To copy a data array you select it (Click on it), place your cursor on one of the little square handles, right click and copy. Go to Excel, select your left-upper destination cell and go Edit, Paste Special, Csv, OK. You'll get a column with dates and one with the values of the selected chart. You will have to do this trace by trace, putting them side by side, and Delete the duplicate data columns. Be sure to also export binary values to show you where the triggers are! Not only can you verify the calculations performed in MS with parallel calculations in Excel, you can also perform addition analysis.

To make the Excel sheet easier to read you can select the entire page and click Format, Conditional Formatting, Cell Value Is, Equal To, 0, Format, Color=White, OK. This will display all zeroes on the page in white - they will only become visible when you select the area.

6) Now for the ambitious developer :-) You can save your crowded MS display in a template and when exporting data arrays use Paste Link instead of Paste in Excel. This will result in a spread sheet that uses OLEs and the sheet will update automatically with new values whenever you change formulae - as long as you don't change the names I presume.

7) If you are more ambitious than that you can make a reverse OLE link to display a calculated column of values in Excel, in a MetaStock chart that updates in real time. I have only briefly tested this and it is NEAT! Lots of possibilities...

Well, in conclusion I must say that while MS has some bugs I enjoy using the program immensely.

Hope this is useful info,
If you have some debugging techniques of your own to share please do so.

Happy Trading,
Herman.


Home

kr-logo.gif