Any Idea on Improved Strategy Tester.

 

I was trying out Optimization on many different EAs. And I have found that the Strategy Tester has some limitation.

What happens here is because how MT4 is used ( because it is designed that way to function ) ,

Step 1: we open up the ST,select the EA,select the Symbol,select the Model decide about the Chart ( M1 to MN,so 9 choices) decide the period from which starting-date to ending-date,check the optimization box.

Step 2:

We go to Expert Properties. In the Testing Tab,we then decide the Initial Deposit and Currency,Positions,Optimized Factor and check the Genetic Algorithm.

In the Inputs Tab,we have our freedom select the parameters whose variations is desired.


Now as the Test is progressed,we do get a series of outcome.


Suggestions I have seen, I noticed that even though the input parameters are set for certain 'Deposit' and 'Fixed' Chart, technically or logically , an EA in general can run for any deposit as well as any chart. Though in MT4, the User is not allowed the Deposit/Chart to be treated as Input Parameter where he can choose to change as he wants or Deposit as well as Chart can change as like the Input parameter.

Secondly, after the optimization process is over, we see a list of results. Now each result is taken and is tested for same Deposit,Date-period and Chart. And we a complete report showing the graph,number of trades,winnings and losses,etc,etc.

So it is actually very Tedious to check and see each and every result just to find out which one is the best settings that can be used depending upon the Deposit/Chart.

Today ,in fact, I stumbled upon a result whose parameters provided an graph which gives almost less than 5 losing trade for same deposit,period,chart. Believe me,when i would have ignored because the after-optimizing that result did not look very significant.

So the improved version of Strategy Tester is to have an added functionality is to allow even the Deposit,Chart to change as well while optimizing,thus after Optimizing the User will know how the EA behaves for every Deposit and Chart. Ok Displaying such an information is a really a challenging, I would suggest like 2-d Graph with X-axis showing Deposit and Y-axis the Chart and the X,Y is the result for that Deposit/Chart just like it would normally.

And the individual results will infact indicate further the % of winning/losing trades.

 
smartyjrego:


So the improved version of Strategy Tester is to have an added functionality is to allow even the Deposit,Chart to change as well while optimizing,thus after Optimizing the User will know how the EA behaves for every Deposit and Chart. Ok Displaying such an information is a really a challenging, I would suggest like 2-d Graph with X-axis showing Deposit and Y-axis the Chart and the X,Y is the result for that Deposit/Chart just like it would normally.

And the individual results will infact indicate further the % of winning/losing trades.

You should try MT5 . . .  the Strategy Tester in MT5 allows you to trade pairs other than the pair you initially selected.
 
RaptorUK:
You should try MT5 . . .  the Strategy Tester in MT5 allows you to trade pairs other than the pair you initially selected.


Thanks for reading and for your reply I agree that MT5 shows considerable information,but at this moment RaptorUK,I have not learnt MQ5 and secondly I trade only EURUSD. The issue i spoke was how to have the Deposit and Chart Period as Input parameters,the Metaquotes Support Team asked me to come here. I m not sure whether u agree with me on having a better functionality in MT4. Please get people's opinion on this,what do they say about improving the ST. Thanks for ur help.

 

You mention deposit allot. Why not use a very high deposit say 100k?

  • Using 100k & Fixed_Lots: If your max draw-down constantly goes below a certain $ amount then you know that certain $ amount may not work.
  • Using 100k & Compounding: If your relative draw-down constantly goes below a certain % amount then you can decrease the compounding according to your risk appetite.
 
smartyjrego:

Thanks for reading and for your reply I agree that MT5 shows considerable information,but at this moment RaptorUK,I have not learnt MQ5 and secondly I trade only EURUSD. The issue i spoke was how to have the Deposit and Chart Period as Input parameters,the Metaquotes Support Team asked me to come here. I m not sure whether u agree with me on having a better functionality in MT4. Please get people's opinion on this,what do they say about improving the ST. Thanks for ur help.

You talked about the chart changing . . .  if you run the Strategy Tester on M1 and want to take trade decisions based on H1 data you can do that now,  no problem.   Don't expect many if any changes to the Strategy Tester in MT4,  perhaps not even bug fixes.
 
RaptorUK:
You talked about the chart changing . . .  if you run the Strategy Tester on M1 and want to take trade decisions based on H1 data you can do that now,  no problem.   Don't expect many if any changes to the Strategy Tester in MT4,  perhaps not even bug fixes.


Hmmmm..reading from different charts is quite possible,but not what i am talking about


let me put it in algorithm.......

imagine User wishes to do ST on a EA. Now my approach would be like this ,the Date of testing,Optimizing factor ie he may choose either one from Balance,PF,EP,Max. Drawdown,DD%,Genetic algorithm remains the same. so what other things that change while testing.....

in my suggestion we have the chart as well as deposit as input parameters.

SO :

for every deposit from 500$ to 50000$ step 1$ increment

{

from chart M1 to MN step 1 increment

{

Start Optimizing.

} // end  of inner loop

} //end of outer loop

=>

What is the out come?

1) Deposit 500$,Chart M1,optimizing parameter,input parameters {Assuming there are chosen just like earlier versions of ST,for Date From to Date End} , we get a page of results

2) Deposit 500$,Chart M5,optimizing parameter,input parameters {Assuming there are chosen just like earlier versions of ST,for Date From to Date End} , we get a page of results

3) Deposit 500$,Chart M15,optimizing parameter,input parameters {Assuming there are chosen just like earlier versions of ST,for Date From to Date End} , we get a page of results

...........

8) Deposit 500$,Chart WK,optimizing parameter,input parameters {Assuming there are chosen just like earlier versions of ST,for Date From to Date End} , we get a page of results

9) Deposit 500$,Chart MN,optimizing parameter,input parameters {Assuming there are chosen just like earlier versions of ST,for Date From to Date End} , we get a page of results

10) Deposit 501$,Chart M1,optimizing parameter,input parameters {Assuming there are chosen just like earlier versions of ST,for Date From to Date End} , we get a page of results

11) Deposit 501$,Chart M5,optimizing parameter,input parameters {Assuming there are chosen just like earlier versions of ST,for Date From to Date End} , we get a page of results

...........

17) Deposit 501$,Chart WK,optimizing parameter,input parameters {Assuming there are chosen just like earlier versions of ST,for Date From to Date End} , we get a page of results

18) Deposit 501$,Chart MN,optimizing parameter,input parameters {Assuming there are chosen just like earlier versions of ST,for Date From to Date End} , we get a page of results

19) Deposit 502$,Chart M1,optimizing parameter,input parameters {Assuming there are chosen just like earlier versions of ST,for Date From to Date End} , we get a page of results

20) Deposit 502$,Chart M5,optimizing parameter,input parameters {Assuming there are chosen just like earlier versions of ST,for Date From to Date End} , we get a page of results

...........

...........

49508) Deposit 50000$,Chart WK,optimizing parameter,input parameters {Assuming there are chosen just like earlier versions of ST,for Date From to Date End} , we get a page of results

49509) Deposit 50000$,Chart MN,optimizing parameter,input parameters {Assuming there are chosen just like earlier versions of ST,for Date From to Date End} , we get a page of results


This way , an EA is tested for every Deposit and Every Chart or Time frame.

When WE do ST normally we get a page of outcomes,but that outcome is only for a certain deposit and Time Frame,which the User Chooses in beginning,this does not change during optimizing testing. I desire to see these two parameters as a part of Input Parameters,so that we can see the entire outcome. For time being ,let's keep how to display such huge information aside (i.e. I have mentioned 'page of results',let's assume that a link to a page of result generated only after clicking,again that's another improvement point discussion altogether.so let avoid for now)

I do not want to choose the deposit and the Time after every test and wait for the result which does not get over in short period.I hope now u get what desire in ST in future versions. I do not know if there any testing application to do this way.

RaptorUK just like u mention like in ST of MT5,in my discussion case,we choose the TF from which TF to which TF and choosing starting Deposit amount to final Deposit amount..... :)

 
ubzen:

You mention deposit allot. Why not use a very high deposit say 100k?

  • Using 100k & Fixed_Lots: If your max draw-down constantly goes below a certain $ amount then you know that certain $ amount may not work.
  • Using 100k & Compounding: If your relative draw-down constantly goes below a certain % amount then you can decrease the compounding according to your risk appetite.
I am getting lost Ubzen
 

"for every deposit from 500$ to 50000$ step 1$ increment."

Fixed Lots:

  • If you're testing with Fixed_Lots, Example) Brokers_Minimum_Lot=0.01.
  • If your system takes a Maximum Draw-Down of $400.
  • Changing the Deposit to $501, the MaxDD will remain $400.
  • Only the RelDD would change as you Increase the Deposit.
  • RelDD would be a Pointless Matrix because you're using Fixed lots.


Variable Lots:

  • If you're sizing your lots according to how much $ in the account.
  • Example) one Broker_Minimum_Lot for every $100 Balance.
  • Then your LotSize would be something like 0.05 with $500 deposit.
  • If you have a Take_Profit=20 Pips and Stop_Loss=10 Pips.
  • If your RelativeDD=40%
  • Your RelativeDD will remain around 40% after changing the deposit.
  • MaxDD would be a Pointless Matrix because you're using Variable lots.

 

As for changing the Period during backtest. You can use an Extern Variable.

  • Where ever you have Period() within your code, replace that with Ext_Period[Array].
  • int Ext_Period[]={Period_M1, Period_M5, Period_M15, Period_H1};
  • You can Step the Ext_Variable by 1. Say from 0--3;
  • Call could look as follows. iOpen(Symbol(), Ext_Period[ Ext_Variable ], 0);
  • ***Anyways I haven't tried the above before. Just taught it up.

As RaptorUk already mentioned, the selected_test Period() need not match the algorithm's Periods.

 

Given fixed_lots, I see no point in testing for "Oh my system crashed at $500 but boy am I happy it worked on $501". Just give it a huge starting amount and find out what the max drawdown is. Then ask your self if you'll be depositing more money than that in reality. Obviously the more money you can deposit beyond the maxDD the lower the relDD would be [in tester] theoretically.

Given variable_sizes, your relativeDD is your relativeDD no matter how much money you deposit $500 or $5Billion. **One thing I want to point out is the Brokers Max_Lot and Min_Lots. If your system call for a lotsize which is higher than the Broker's Max Lot, then you'll have no choice but to use the Broker's Max Lot. At this size of Account it turns you into a Fix_Lot. Vice-versa for Minimum_Lots, however your risk increases because broker's minimum is greater than what your system calls for.

In other words, just because relDD==9% doesn't mean you can get away with depositing $1.

 
smartyjrego:

Hmmmm..reading from different charts is quite possible,but not what i am talking about

You can already Optimize by TimeFrame,  but you need to code your EA to work on the timeframe set by an extern int.  In my opinion the deposit thing is irrelevant . . .
 
RaptorUK:
You can already Optimize by TimeFrame,  but you need to code your EA to work on the timeframe set by an extern int.  In my opinion the deposit thing is irrelevant . . .


Interesting RaptorUK very Interesting........... :) thanks....