PureBytes Links
Trading Reference Links
|
Here is another simple, yet very effective tip:
A.
The Explorer has 6 columns - I think it's 5 for version 6.52 or earlier -
(Filter excluded).
So, you can test 1 system on 6 different dates, BUT you can ALSO
- test 2 systems simultaneously on 3 dates each, or
- test 3 systems simultaneously on 2 date each, or even
- test 6 systems simultaneously on 1 date each, or
- use other combinations (first system on 3 dates, second on 2 dates, third
on 1 date, etc)!
Instead of testing completely different systems, you can of course use
different sets of variables of the same system (for example the most
successful optimization variables returned by the system tester).
If you like this tip, you must make your entry conditions part of each
separate column (A-F) rather, than part of the Filter.
For example:
Column A
Col Name: H1 %
Entry:= <myCondition1> and <myCondition2> and ..<myCondition10> ;
Gain:=(Ref(HIGH,-9)-Ref(OPEN,-10))*100/Ref(OPEN,-10);
if(Ref(entry,-11)=1 , Gain, -1000)
In every subsequent column you have to copy-paste the same code and then
change the Entry and Gain definitions as needed.
Notice that I have used -1000 as the "else" statement above. This trick has
the following explanation:
Since we don't use a filter anymore, the exploration will probably include
most of the explored securities.
Now, when we get the results we'd better sort them (by clicking on the
headers of the columns). By using -1000 (or any other very small number) we
can move the "rejected" securities to the bottom of the list to get them out
of sight, thus having in front of our eyes only those securities that were
actually traded. For this purpose -1000 is better than zero (0), since
securities, which for example returned 0% profit, should be distinguished
from those that have been rejected.
Some more tips:
B.
Though each exploration date is fixed, you can test each system on different
date(s)using the ref() function
accordingly. For example you can test your "leading" or "bottom fishing"
system, referencing 7,6 and 5 bars ago
and at the same time test your "lagging" or "trend following" system, a week
later (2,1 and 0 bars ago) and compare their effectiveness by just looking
at one exploration only!
C.
The nice thing about this usage of the Explorer is that one can easily
concentrate on specific dates or date ranges only,
those, that better describe each type of market (bullish, bearish, falling,
rallying, sideways).
My approach is this:
I open a suitable composite security or an index and check the dates of
significant swing points (peaks or troughs).
Subsequently I run my explorations so that those very dates would have been
my entry dates, thus checking how strong my system is.
D.
After you get each exploration's results, you can copy-paste them into an
Excel worksheet, one set below the other.
Then, you can save them separately or as a larger set and/or further study
them statistically.
Being lazy enough, I prefer to use just a single VBA macro of mine to get
average, median, min and max values (if you are not familiar with VBA I can
provide the code).
Furthermore, you can have separate sets of data for each type of market (set
1: bullish markets, 2: bearish, 3: sideways etc). At this point you probably
have a clearer picture of your system'(s)' behavior.
E.
If you are happy with your back tests and you feel ready to explore tomorrow
's candidates, you must use a slightly different exploration version, which,
looks back, only as far as your entry conditions need to. Instead of making
a new exploration, copy the existing one using the copy button and then get
rid of the unnecessary refs(). To distinguish between the two types of
explorations I use the indication "test" for back testing explorations. For
example "My Exploration" for tomorrow's candidates and "My Exploration test"
for back testing.
F.
Please be careful with the dates and the corresponding refs(). Always
remember that the results returned by "Your System(s) test" show the results
of an EARLIER entry. For example if we had used
Entry:= <myCondition1> and <myCondition2> and ..<myCondition10> ;
Ref(entry,-11)=1
then, we are currently looking at the results 11 periods AFTER our signal
was generated. Also notice that the signal generation date could be
different than the date when our position was opened (depending on the delay
specified by our code).
In other words, if we want to test our system(s) on "that significant peak's
date" we have to move 11 days into the future in order to evaluate that
"early" signal.
If any of the above is useful please let me know.
Happy explorations
Stephanos
|