Librerías: Report - página 10

 
fxsaber:

En tu variante va sólo al precio de apertura. Está claro que esto es una consecuencia del enfoque BestInterval. Pero en el caso general, probablemente no es del todo correcto.

Aunque, teniendo en cuenta que la biblioteca es utilizada por 2,5 personas, no tiene sentido hacerlo "correcto". Voy a introducir este tipo de filtro

De hecho lo uso para BestInterval. Es decir, no mantengo varios medios virtuales: uno completo y otro con intervalo. Mantengo uno y lo filtro en la salida a la vez, eso es lo que necesitaba hacer.


Probablemente, sería más correcto ponerlo así

OrderTimeOnly <= this.EndInterval

No hay medianoche allí de todos modos, 23.59.59 máximo.

 
traveller00:

De hecho, lo utilizo para BestInterval. Es decir, no guardo varios medios virtuales: uno completo y otro con intervalo. Mantengo uno y lo filtro en la salida a la vez, eso es lo que necesitaba hacer.

Renuncié a esta opción, porque entonces el sincronizador está menos generalizado.


Mejor que cualquier Report-filtros es crear tu propio Virtual con las transacciones necesarias del entorno general (Real/Virtual). Y se puede introducir en Report sin ningún filtro.

      const int HistoryTotal = OrdersHistoryTotal();
      
      for (int i = 0; i < HistoryTotal; i++)      
        if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && this.BestInterval.IsTime(OrderOpenTime()))
        {
          const ORDER_BASE Order = VIRTUAL::GetOrder();
          
          _V(Handle, VIRTUAL::AddOrder(Order));
        }


ZY Ejecuto la lógica de negociación sólo en un entorno durante todo el día VirtualFull. VirtualBestInterval siempre se deriva de VirtualFull, no de la lógica de negociación.

 

Tiempo añadido empleado en cerrar una posición: duración desde el momento de la orden de cerrar hasta el propio cierre. En algunos casos información muy necesaria.

Y deslizamiento total en pips para cada lado - apertura y cierre. La falta de paridad es una razón para pensar en ello.

 

Informe HTML en MT5 se genera en 115 segundos y ocupa 221 MB.

El informe HTML en MT5 tarda 5 segundos en generarse y ocupa 38 MB.


El contenido informativo de los informes es aún más diferente.

 

Sobre la base de esta y otras bibliotecas publicadas anteriormente, hice un informe Tester para cualquier Asesores Expertos.

TesterReport - альтернативный отчет тестера стратегий Metatrader 5
TesterReport - альтернативный отчет тестера стратегий Metatrader 5
  • www.mql5.com
Торговые отчеты MetaTrader 5 довольно тяжелы для восприятия. По этой причине с определенного момента разработчики добавили в Терминал более понятный режим просмотра закрытых позиций. Однако, это не
 

Quiero dar las gracias a fxsaber por esta y muchas otras contribuciones útiles a la comunidad.

A menudo utilizo esta biblioteca para generar informes personalizados para símbolos específicos y rangos de fechas.

Una cosa que no he podido hacer es utilizar los filtros de informe con el método ToChart(). Los filtros funcionan con la función ToFile() para generar informes HTML, pero no con ToChart().

Por ejemplo:

#include <MT4Orders.mqh>
#include <Report.mqh>

void OnStart()
{
   REPORT_FILTER Filter;
   Filter.StartTime = (TimeLocal()-2880);
   Filter.EndTime = TimeLocal();
   Filter.Magic = 0;
   REPORT::Calculate(Filter, true);   
   REPORT::ToChart(); //The equity chart is generated without filters
}

He intentado modificar la función ToChart() para que acepte filtros, pero me temo que no puedo hacerlo.

Agradecería mucho la opinión del autor o de cualquier otra persona que utilice esta biblioteca, gracias.

 
mqtrader #:

Los filtros funcionan con la función ToFile() para generar informes HTML, pero no con ToChart().

REPORT::ToChart(REPORT_BALANCE, 0, 0, CURVE_NONE, NULL, false);
 

fxsaber #:

REPORT::ToChart(REPORT_BALANCE, 0, 0, CURVE_NONE, NULL, false);
Esto me genera un gráfico de saldo vacío. Tal vez estoy haciendo algo mal. Sigo sin conseguir que ToChart() genere un gráfico con filtros aplicados. ¿Hay algo más que deba declararse antes de llamar a ToChart() para que se aplique REPORT_FILTER al cálculo?
 
mqtrader #:
Esto me genera un gráfico de saldo vacío. Tal vez estoy haciendo algo mal.
Print(Filter.ToString());
 
fxsaber #:
Print(Filter.ToString());
Ya funciona, ¡muchas gracias @fxsaber!