Probador de Estrategias de MetaTrader 5: errores, fallos, sugerencias de mejora - página 21

 

En el probador, no se comprueba la aceptación de las órdenes limitadas en el tick de establecimiento/modificación.

Por ello, cuando se coloca una orden limitada al precio actual, no se ejecuta, lo que no se ajusta a las reglas del mercado.


¿Habrá algún cambio en el probador para esta situación?

 

El probador ha estado funcionando en 12 flujos durante 27 horas. Esta es una extraña foto de recuerdo. Puedes ver que la aplicación no consume mucha memoria.


Especialmente el estado de los agentes es más que libre.



También hay una instancia que ya ha terminado de trabajar en 1 hilo. Se asigna la memoria de intercambio.


Cerró la instancia en ejecución:

Inmediatamente se liberaron 26 GB. ¿Creo que los hilos mantienen la memoria en el estado asignado? El Explorador de Procesos muestra precisamente eso. Cada instancia tiene 4GB (excepto una). Dicho esto, uno ha abandonado (deberían ser 12).


El problema es que aunque no se esté utilizando la memoria privada, cuando el archivo de intercambio está lleno, el mismo Chrome empieza a jurar que la memoria es insuficiente. Al mismo tiempo, la RAM está medio libre...


La segunda pregunta es la siguiente. ¿Por qué durante la optimización genética los hilos permanecen inactivos y esperan a que uno de ellos termine? ¿Tiene sentido matarlos calculando con la predicción y detectando los diferentes resultados de esperar a que el hilo esperado termine? ¿O intentar "sacudir" de nuevo algunos parámetros y buscar otras soluciones?

PS. Poner los agentes en desactivación y luego activarlos de nuevo - dejaron de comer memoria. Pero me parece que la caché del disco también se recreará al arrancar?
 

Error en el tiempo de cancelación de una orden pendiente en un evento de escasez de dinero.

Hay tiempo cero (resaltado en la captura de pantalla) en lugar de tiempo de cancelación.

Y el estado colocado en lugar de cancelado.

 

Ahora analicemos la situación en el trozo destacado


tiene que mover el cursor, recordar la fecha emergente, abrir el gráfico de ejecución, ir al lugar requerido en el historial de operaciones y hacer doble clic en la línea correspondiente de la tabla.


¿Se puede sustituir todo esto haciendo doble clic en el punto del gráfico anterior?

 
fxsaber:

¿Se puede sustituir todo esto haciendo doble clic en el punto del gráfico anterior?

Me parece fantástico, una "característica" muy necesaria - ¡¡¡La apoyo!!!

 

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Probador de Estrategias de MetaTrader 5: errores, fallos, sugerencias de mejora

fxsaber, 2019.10.14 23:32

En MT5 puedes cerrar una posición y obtener una pérdida (el saldo antes de la apertura es menor que el saldo después del cierre). Pero al mismo tiempo MT5 Tester (Terminal no comprobado) considerará esta operación como rentable.

Elaboré un Asesor Experto para jugar

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnTick()
{
  if (!OrderSelect(0, SELECT_BY_POS))
    OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0);
  else if ((OrderProfit() > -OrderCommission()) &&
           (OrderProfit() < -OrderCommission() * 2) &&
           OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0))
    ExpertRemove();
}


Ejecútelo en el Probador de Estrategias desde un servidor de operaciones, donde haya una comisión (lo ejecuté en este: ForexTimeFXTM-Demo01).

El resultado está en imágenes.


En la captura de pantalla se puede ver que había una posición BUY, que se cerró con pérdida total - el saldo inicial ha disminuido.


Y esto es lo que se destaca aquí en la columna de la izquierda - el Asesor Experto ha sufrido una pérdida.

Y ahora vemos lo que se destaca en la segunda columna. ¡Todo es genial allí con una expectativa matemática positiva y operaciones 100% rentables!


Así que resulta que el Asesor Experto está perdiendo mientras que el indicador parece rentable. De ahí que el cálculo de la FP esté sesgado.


ZZY escribió un ejemplo en un minuto. He estado pensando con terror, cuánto tiempo debería tomar para escribirlo en MQL5 o SB. Quien no sea perezoso, que lo pruebe.

 

En el Comprobador, la pestaña Resumen tiene una lista muy práctica de acciones anteriores con un filtro interactivo.

En esta lista, los nombres de los EAs se muestran sin ruta. Debido a esto, cuando hay dos EAs con el mismo nombre, pero en diferentes carpetas, la lista no muestra (y no puede filtrar) qué EA corresponde a qué entrada.


¿Es posible que en esta lista de acciones anteriores aparezcan los nombres de los EAs con sus rutas desde la carpeta Expertos?

No utilizo indicadores, pero probablemente sería razonable hacer lo mismo con ellos.

 
El probador tiene en cuenta ambos lados de las operaciones CloseBy al calcular el número de operaciones. De ahí el número incorrecto de operaciones, la expectativa matemática, etc.
 
EA
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define  Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)
#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

int OnInit()
{
  return(OrderCloseBy(OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0), OrderSend(_Symbol, OP_SELL, 
2, Bid, 0, 0, 0)));
}


el informe no llama más que a ceros. Aunque el comercio estaba en marcha.


Tampoco está claro por qué = 1. No está presente en el código fuente.

 
fxsaber:
EA


el informe no llama más que a ceros. Aunque el comercio estaba en marcha.


Tampoco está claro por qué OnTester == 1. No está presente en el código fuente.

¿Estás seguro de que se está negociando en OnInit? ¿Y cómo vas a utilizar GetLastError con tu código? Y otra pregunta. ¿Está seguro del orden en que se calculan los argumentos de la función?
Razón de la queja: