Discussion of article "Processing optimization results using the graphical interface"

 

New article Processing optimization results using the graphical interface has been published:

This is a continuation of the idea of processing and analysis of optimization results. This time, our purpose is to select the 100 best optimization results and display them in a GUI table. The user will be able to select a row in the optimization results table and receive a multi-symbol balance and drawdown graph on separate charts.

The user can view multi-symbol balance values of results from the table. When a row in the table is selected, the graph of multi-symbol balances is updated in the Balance tab:

 Fig. 4 – Demonstration of the obtained result.

Fig. 4. Demonstration of the obtained result.

Thus, we have created a useful tool enabling fast view of multi-symbol testing results. 


Author: Anatoli Kazharski

 

В качестве строкового параметра во фрейм будет передаваться перечисление символов через разделитель ','. Изначально предполагалось сохранять данные во фрейм, как полный отчёт в строковом массиве. Но на текущий момент строковые массивы нельзя передавать во фрейм. При попытке передать в функцию FrameAdd() массив строкового типа при компиляции выйдет соообщение об ошибке: строковые массивы и структуры, содержащие объекты, не допускаются. 

string arrays and structures containing objects are not allowed

Another option is to write the report to a file and transfer it to the frame. But this option is not suitable for us either: we would have to write the results to the hard disc too often.

There is also such an option of transferring strings and other things.

Forum on trading, automated trading systems and testing trading strategies.

Libraries: TypeToBytes

fxsaber, 2017.07.19 12:16 AM.

Example of practical application in Report-bible

Send a frame with different data

        string Str;
        REPORT::ToString(Str);

        double Balance[];
        REPORT::GetBalanceHistory(Balance);

      #ifdef __TYPETOBYTES__
        CONTAINER<uchar> Container;

        Container[0] = Str;     // put the report string in the container
        Container[1] = Balance; // added a double array of the balance change history to the container as well

        ::FrameAdd(NULL, 0, ::AccountInfoDouble(ACCOUNT_BALANCE), Container.Data); // Sent a frame with string report and balance array
      #else  // __TYPETOBYTES__

Receiving a frame with different data

 CONTAINER<uchar> Container;

    while (::FrameNext(Pass, Name, ID, Value, Container.Data))
    {
        string Str;
        Container[0].Get(Str);     // Get the report string from the frame

        double Balance[];
        Container[1].Get(Balance); // Get the corresponding double array from the frame

// .....
 
fxsaber:

There is also an option to pass strings and stuff like that

That's an interesting option. Thank you.

 

Каждый раз, когда пользователь выделяет строку в таблице, график мультисимвольных балансов обновляется на вкладке Balance:

Get rid of 2 extra clicks of switching to and from the graphs tab by putting the graphs in the same window?

And navigate through the table rows with the up/down buttons, instantly getting the corresponding curves?

 
Andrey Khatimlianskii:

Get rid of 2 extra clicks of switching to and from the charts tab by putting the charts in the same window?

And navigate through the table rows using the up/down buttons, instantly getting the corresponding curves?

Such excellent solutions are lacking in the standard Optimiser.

 
Andrey Khatimlianskii:

1. get rid of 2 extra clicks of switching to and from the charts tab by putting the charts in the same window?

2. and move through the table rows with the up/down buttons, instantly getting the corresponding curves?

Now I am preparing material for another article on this topic. I will take the first point into account, but the second one is not yet, as I don't plan to return to GUI-library in the near future.

 
Anatoli Kazharski:

I don't have a second one yet, as I don't plan to go back to the GUI library in the near future.

It doesn't have to be built into the library, just a handy extra feature.

 
Andrey Khatimlianskii:

It doesn't have to be built into the library, just a handy extra feature.

I'll see what I can do.