Sí, el indicador tiene bastantes parámetros, ¿hay alguna manera de asegurarse de que iCustom llene la memoria? Se tarda unas 2 horas en llenar la memoria, por lo que probar un iCustom vacío y añadir un parámetro cada vez llevará mucho tiempo. ¿Algún consejo? P.D. Yo también revisaré todos los parámetros visualmente.
TheXpert: Habrá muchos indicadores en los registros
Sí, sé a lo que te refieres, yo también he visto esto en el probador de estrategias, cuando aparecen muchos indicadores después de una prueba. Pero todo funciona bien en el probador de estrategias aquí. Y todo se muestra correctamente en los registros.
Sí, el indicador tiene bastantes parámetros, ¿hay alguna manera de asegurarse de que iCustom llene la memoria? Se tarda unas 2 horas en llenar la memoria, por lo que probar un iCustom vacío y añadir un parámetro cada vez llevará mucho tiempo. ¿Algún consejo? P.D. Yo también revisaré todos los parámetros visualmente.
Deja la llamada sin parámetros (entonces tomarán los predeterminados), y observa. Si la fuga desaparece, entonces eso es lo que está mal.
Inicio MT4 con varios EAs, habilito la grabación en memoria. Donde la flecha muestra que hay un fallo, "no hay suficiente memoria para el archivo EX4".
A partir de un determinado momento las posiciones desaparecen. La equidad y el equilibrio son iguales a N. En el historial de operaciones no hay información sobre la posición.
El reinicio del terminal no ayuda.
Varias horas después, las posiciones aparecen en el historial de operaciones (se cerraron bajo una determinada condición). El saldo y los fondos propios se ajustan en consecuencia.
Se trata de una situación muy rara que se debe a la confluencia de muchas circunstancias. Pero puede ocurrir, aunque la probabilidad es casi nula.
Sugiero que todos los robots de combate deben tener un mecanismo para identificar estas situaciones.
Para ello, es necesario memorizar los tickets de las órdenes abiertas y comprobar su presencia en el historial comercial en caso de que desaparezcan. Si no están en el historial de operaciones, ¡Alertim!
La función de dicha protección.
#define TICKET_TYPE int// Получаем все текущие тикеты.int GetTickets( TICKET_TYPE &Tickets[] )
{
int Amount = ArraySize(Tickets);
for (int i = ArrayResize(Tickets, Amount + OrdersTotal()) - Amount - 1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS))
Tickets[Amount++] = OrderTicket();
return(ArrayResize(Tickets, Amount));
}
// Проверяет наличие потерянных тикетов.int CheckTickets( void )
{
staticconstbool IsTester = MQLInfoInteger(MQL_TESTER);
int Amount = 0;
if (!IsTester)
{
static TICKET_TYPE Tickets[];
TICKET_TYPE BadTickets[];
for (int i = ArrayResize(BadTickets, ArraySize(Tickets)) - 1; i >= 0; i--)
if (!OrderSelect(Tickets[i], SELECT_BY_TICKET))
{
BadTickets[Amount++] = Tickets[i];
Alert("Ticket " + (string)Tickets[i] + " is not found!");
}
ArrayResize(BadTickets, Amount);
#ifdef __MQL5__ArraySwap(Tickets, BadTickets);
#else // __MQL5__ArrayFree(Tickets);
ArrayCopy(Tickets, BadTickets);
#endif // __MQL5__
GetTickets(Tickets);
}
return(Amount);
}
El indicador se llama con un parámetro incorrecto
Sí, el indicador tiene bastantes parámetros, ¿hay alguna manera de asegurarse de que iCustom llene la memoria? Se tarda unas 2 horas en llenar la memoria, por lo que probar un iCustom vacío y añadir un parámetro cada vez llevará mucho tiempo. ¿Algún consejo?
P.D. Yo también revisaré todos los parámetros visualmente.
Sí, el indicador tiene bastantes parámetros, pero ¿hay alguna manera de asegurarse de que iCustom llene la memoria exactamente?
Habrá muchos indicadores en los registros
Sí, sé a lo que te refieres, yo también he visto esto en el probador de estrategias, cuando aparecen muchos indicadores después de una prueba. Pero todo funciona bien en el probador de estrategias aquí. Y todo se muestra correctamente en los registros.
Sí, el indicador tiene bastantes parámetros, ¿hay alguna manera de asegurarse de que iCustom llene la memoria? Se tarda unas 2 horas en llenar la memoria, por lo que probar un iCustom vacío y añadir un parámetro cada vez llevará mucho tiempo. ¿Algún consejo?
P.D. Yo también revisaré todos los parámetros visualmente.
Deja la llamada sin parámetros (entonces tomarán los predeterminados), y observa. Si la fuga desaparece, entonces eso es lo que está mal.
El EA se come la memoria que se va acumulando poco a poco.
¿Cuánto es "un poco"?
¿Quizás realmente es un poco y este es el historial de citas que ha aparecido desde el lanzamiento?
"Poco a poco", ¿cuánto?
¿Quizás sea realmente sólo un poco, y es la historia de las citas que han aparecido desde el principio?
Inicio MT4 con varios EAs, habilito el registro de memoria. Donde la flecha muestra que hay un fallo, "no hay suficiente memoria para el archivo EX4".
Deja la llamada sin parámetros (entonces tomarán los predeterminados), y observa. Si la fuga desaparece, entonces eso es lo que está mal.
Ok, lo haré de esta manera.
Inicio MT4 con varios EAs, habilito la grabación en memoria. Donde la flecha muestra que hay un fallo, "no hay suficiente memoria para el archivo EX4".
¿Cuánto es el 40% de lo que se utiliza?
Está creciendo linealmente, parece una llamada de indicador torcida, sí.
El 40% de lo que se utiliza?
Crece linealmente, parece una llamada de indicador de curva, sí.
Parece que hay un problema con los parámetros. Gracias.
En MT4 esta situación es posible (no hablaremos de las razones):
Se trata de una situación muy rara que se debe a la confluencia de muchas circunstancias. Pero puede ocurrir, aunque la probabilidad es casi nula.
Sugiero que todos los robots de combate deben tener un mecanismo para identificar estas situaciones.
Para ello, es necesario memorizar los tickets de las órdenes abiertas y comprobar su presencia en el historial comercial en caso de que desaparezcan. Si no están en el historial de operaciones, ¡Alertim!
La función de dicha protección.