Why are my trades using only x% of my equity?
Why am I getting some trades using 99% of my equity and others only using 1-2%
I shall explain the way the system tester is currently designed. When your system generates a buy or sell signal, the order passes through 4 separate stages:
1) Considered - this means the system has generated the signal and you, the user are now considering whether to accept it or not. The enhanced system tester assumes you will accept all signals and passes the order on. At this point, if you marked a strategic delay (in the system tester editor), the next order will be delayed the specified amount
2) Placed - this is the stage where the order is passed to the broker. At this point, if you have marked a trade delay (in the simulation options), the next order will be delayed by the specified amount.
3) Opened - here is where the broker sends the order to the exchange. At this point, if the order was any type other than market, a delay may occur until the specified condition occurs
4) Executed - the trade is finally transacted.
The problem you are encountering, when only a fraction of your equity being used in a trade, is caused by when the trade size is calculated. At the time the order is considered, MetaStock checks the available equity and determines how many shares can be purchased. This is the amount the tester tries to buy. If you are already in a trade, your available equity is however much is not tied up in the current trade.
This is working as the developers designed it. We have had some request to change this and we have contacted our developers about it. However, it will require an update to MetaStock for this to be changed. Till then, it is possible to run the test you want, but you will need to edit the system test to do so.
The trick is to remove the delay you have built into the system. Or rather, not to remove it, but change how it is implemented. Currently, the logic of your system is:
Signal event occurs
Order generated
Delay is implemented
Order is executed
This needs to be changed to:
Signal event occurs
Delay is implemented
Order generated
Order is executed
This change is fairly easy. Your formulas end with some condition that defines the buy signal. Before this condition, you may have several lines of variable declarations. This would look like this: { Optional: one or more lines of variables... } Condition the formula looks for
Just change the above to: { Optional: one or more lines of variables...}
Ref( Condition the formula looks for, -1 )
With the above change, you can turn off all other delays, and you trades will be entered as if you had a delay set. Because the delay is in the formula, the trade size is calculated on the same bar the formula generates the signal, it will use all the equity.