Discusión sobre el artículo "Trabajando con los resultados de la optimización mediante la interfaz gráfica"

 

Artículo publicado Trabajando con los resultados de la optimización mediante la interfaz gráfica:

Continuamos desarrollar el tema del procesamiento y el análisis de los resultados de la optimización. Ahora nuestra tarea consiste en seleccionar 100 mejores resultados de la optimización y mostrarlos en la tabla de la interfaz gráfica. Hagamos que el usuario obtenga el gráfico del balance de multisímbolos y de la reducción (drawdown) en gráficos separados seleccionando una fila de la tabla de los resultados de la optimización.

Cada vez cuando el usuario seleccione una fila en la tabla, el gráfico de los balances de multisímbolos se actualiza en la pestaña Balance:

 Fig. 4. Demostración del resultado obtenido.

Fig. 4. Demostración del resultado obtenido.

Hemos obtenido una herramienta bastante cómoda para revisar rápidamente los resultados de multisímbolos de las pruebas.

Autor: Anatoli Kazharski

 

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

las matrices de cadenas y las estructuras que contienen objetos no están permitidas

Otra opción es escribir el informe en un fichero y transferirlo al marco. Pero esta opción tampoco nos conviene: tendríamos que escribir los resultados en el disco duro con demasiada frecuencia.

También existe la opción de transferir cadenas y otras cosas.

Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading.

Bibliotecas: TypeToBytes

fxsaber, 2017.07.19 12:16 AM.

Ejemplo de aplicación práctica en Report-bible

Enviar una trama con datos diferentes

        string Str;
        REPORT::ToString(Str);

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

      #ifdef __TYPETOBYTES__
        CONTAINER<uchar> Container;

        Container[0] = Str;     // poner la cadena del informe en el contenedor
        Container[1] = Balance; // añadimos también al contenedor un array doble con el histórico de cambios de saldo

        ::FrameAdd(NULL, 0, ::AccountInfoDouble(ACCOUNT_BALANCE), Container.Data); // Envió de un marco con informe de cadena y matriz de saldo
      #else  // __TYPETOBYTES__

Recibir un frame con datos diferentes

 CONTAINER<uchar> Container;

    while (::FrameNext(Pass, Name, ID, Value, Container.Data))
    {
        string Str;
        Container[0].Get(Str);     // Obtener la cadena de informe del marco

        double Balance[];
        Container[1].Get(Balance); // Obtener la matriz doble correspondiente del marco

// .....
 
fxsaber:

También hay una opción para pasar cadenas y cosas por el estilo

Es una opción interesante. Gracias.

 

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

¿Deshacerse de los 2 clics extra de ir y venir de la pestaña de gráficos poniendo los gráficos en la misma ventana?

¿Y desplazarse por las filas de la tabla con los botones arriba/abajo, obteniendo al instante las curvas correspondientes?

 
Andrey Khatimlianskii:

¿Deshacerse de los 2 clics adicionales de ir y venir de la pestaña de gráficos poniendo los gráficos en la misma ventana?

¿Y navegar por las filas de la tabla utilizando los botones arriba/abajo, obteniendo instantáneamente las curvas correspondientes?

El Optimizador estándar carece de estas excelentes soluciones.

 
Andrey Khatimlianskii:

1. deshacerse de 2 clics adicionales de cambiar hacia y desde la pestaña de gráficos poniendo los gráficos en la misma ventana?

2. ¿y moverme por las filas de la tabla con los botones arriba/abajo, obteniendo instantáneamente las curvas correspondientes?

Ahora estoy preparando material para otro artículo sobre este tema. Tendré en cuenta el primer punto, pero el segundo todavía no, ya que no tengo previsto volver a GUI-library en un futuro próximo.

 
Anatoli Kazharski:

Todavía no tengo una segunda, ya que no planeo volver a la biblioteca GUI en un futuro próximo.

No tiene por qué estar integrado en la biblioteca, sólo es una práctica función adicional.

 
Andrey Khatimlianskii:

No tiene por qué estar integrado en la biblioteca, sino ser una función adicional muy útil.

Veré qué puedo hacer.