Suggestion To Developer: Better Way To Multiple Currency Backtest ...!

 

Hi,

At Current Multiple Currency Backtest's Implement Stage BY MT5

- in Order to do Mutliple Backtest, Users have to put what currency want to test inside mql5 code, then select One Symbol listed in Symbol ComboxBox Shown as Tester. After Backtest complete, only One Chart will be open for selected symbol and we can't see the  trades on other currency shown in chart. This sucks. What's the point of multiple currency bt when we can't actually see result all trades in charts ?

Suggestion: Better way to Implement Multiple Currency Backtest on MT5

- Instead of put inside mql5  code what currency we want to test? Why not Mt5 developer make Symbol ComboxBox selectable ? Example , like checkbox. Then user can just check whatever Currency they want to test, After the test, All selected Currency Chart will be Open, and user can see the trades of all tested pairs on chart .

- Come with the Visual Mode which available later..now users can check whever symnol we want to run visual mode, example, we check symbol, EURUSD, GBPUSD, then 2 charts is open , and we can run visual mode parallel.

- For coding, we don't need to put bunch of code in mql5.

- For optimization, At "Input Tabs", there will be Column Symbol , Whatever Symbol is selected by users will be appear there, so user can change value to optimize as they want to.

- Is this method more generic ? Why don't you guys implement this way .

 
yster:

Have you tried the "All symbols selected in Market Watch" mode of optimization?


Documentation on MQL5: Standard Constants, Enumerations and Structures / Environment State / Symbol Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Environment State / Symbol Properties - Documentation on MQL5
 

Hi Alexey,

The are problem with "All symbols selected in Market Watch" :

- Does it open all tested  symbols charts after backtest is finished ?

- How about Visual Mode later, will it able to open mutliple tested currencys charts and run visual mode parallel? (btw, with Current way's implement, i guess "Visual Mode" have to read code to see whatever currency's test then open the charts .This susks)

- For input parameters, does it allow to change value on different symbols ?

What do you think about the "Better way to Implement Multiple Currency Backtest on MT5" above ? are there any problem with it ? isn't it more generic ? simpler ? smarter ? I love metatrader, so i am trying to help to make mt5 a better product.

cheers.

 
yster:

Hi Alexey,

- Does it open all tested  symbols charts after backtest is finished ?


You can run a single test of an optimization pass you like and then open its chart.

- For input parameters, does it allow to change value on different symbols ?

If I understand your question correctly, you can either implement the dependece of parameters on the symbol in the source code, or use different set-files when testing on different symbols, for example.

 

What if the EA selects the assets it runs on ? It may actually synchronize more instruments than it trades, but trade only a few. However, at the end of the backtest there should be a popup to allow opening windows to see the trades for each of the instruments that were actually traded. As for the visual tester, same popup should appear, while the backtest is running, to allow you open windows for instruments of your choice, from the ones that are actually traded.

But as for different parameter ranges per each instrument, Alexey was right: you can implement the dependence of parameters on the symbols in the source code: you have to make one parameter per each currency , as an interface, and inside the OnInit copy the parameters to an array. 

For instance, you may declare

input int  ShortMA_EURUSD=9;
input int  ShortMA_USDJPY=8;
input int  ShortMA_EURJPY=7;
input int  LongMA_EURUSD=14;
input int  LongMA_USDJPY=13;
input int  LongMA_EURJPY=12;
int ShortMA[3];
int LongMA[3];
string MyAssets[3];

void OnInit[];
  {
   MyAssets[0]="EURUSD";
   MyAssets[1]="USDJPY";
   MyAssets[2]="EURJPY";
   ShortMA[0]=ShortMA_EURUSD;
   ShortMA[1]=ShortMA_USDJPY;
   ShortMA[2]=ShortMA_EURJPY;
   LongMA[0]=LongMA_EURUSD;
   LongMA[1]=LongMA_USDJPY;
   LongMA[2]=LongMA_EURJPY;
  }
Refer to my implementation chart here : https://www.mql5.com/en/forum/1972/page3