[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Debugging Techniques



PureBytes Links

Trading Reference Links

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.