Errores, fallos, preguntas - página 215

 

¿No se podría seguir imprimiendo el fragmento seleccionado en Yeditor? En este momento este botón de radio no está activo.

Una cosa pequeña, por supuesto, pero desagradable, especialmente cuando los listados tienen 50 páginas.

 

El servidor parece haberse congelado... desde ayer.

 

El algoritmo genético ha desaparecido en algún lugar... Construir 360

¡Pregunta eliminada! ¡Miré en el lugar equivocado!

 

¿Podemos confiar en el hecho de que HistorySelectByPosition() devuelve una lista ordenada de operaciones?

ulong CExpertAdvisor::GetDealByOrder(ulong order) // получение тикета сделки по тикету ордера
  {
   PositionSelect(m_smb);
   HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER));
   uint total=HistoryDealsTotal();
//   for(uint i=0; i<total; i++)
   for(uint i=total-1; i>=0; i--)
     {
      ulong deal=HistoryDealGetTicket(i);
      if(order==HistoryDealGetInteger(deal,DEAL_ORDER))
         return(deal);                            // запомнили тикет сделки 
     }
   return(0);
  } 

Entonces la enumeración AQUÍ sería innecesaria. Si no, la enumeración puede empezar desde el final ... (se nota que los oficios en el probador fueron ordenados).

 

Estimados señores desarrolladores y programadores ¡Necesito ayuda! Quizá no sea el primero, pero aún así...

1. Cómo es posible organizar un bucle, que se interrumpiría (por ejemplo) al pulsar sobre el objeto "botón". Según tengo entendido, la función OnChartEvent no puede ser llamada a la fuerza desde el mismo bucle? Si es así, quizá haya alguna forma de evitarlo, porque ya me he devanado los sesos.

Cuando el bucle está en marcha, las variables del sistema no se actualizan, es decir, no es posible aprovechar el cambio de periodo del gráfico (al menos). Si el bucle se organiza mediante la comprobación de OnChartEvent, entonces es necesario hacer constantemente algo con el gráfico para activar esta función - también no es una opción.

2. ¿Es posible mover el gráfico en la ventana del gráfico de forma programada, no sólo manualmente? ChartNavigate o no funciona, o está diseñado para otra cosa, o no he averiguado cómo funciona.

Se lo agradezco de antemano.

p.d. ¿Sería posible hacer funciones y variables propias resaltadas en el texto del programa?

 
KffAlex:

1. ¿Cómo se puede configurar un bucle para que se interrumpa (por ejemplo) cuando se pulsa un objeto "botón"? ¿Entiendo que la función OnChartEvent no puede ser llamada a la fuerza desde el mismo bucle? Si es así, quizá haya alguna forma de evitarlo, porque ya me he devanado los sesos.

Comprueba el estado del objeto botón.
 
KffAlex:

ChartNavigate o no funciona, o está diseñado para otra cosa, o no he averiguado cómo funciona éste.

Pruebe ChartRedraw después de la llamada a la función y asegúrese de que el desplazamiento automático del gráfico está desactivado...
Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Основы языка / Функции / Вызов функции - Документация по MQL5
 

He instalado MT5 en un servidor remoto dedicado. De vez en cuando tengo que asegurarme de que el terminal se vuelve a conectar a un servidor si la conexión se interrumpe durante un breve periodo de tiempo. Asegúrese de especificar qué servidor utilizar, de lo contrario todo el comercio se "congela". ¿Cómo puedo hacer que el terminal se reconecte automáticamente si no se conecta en 5 minutos, por ejemplo?

 
EvgeTrofi:

He instalado MT5 en un servidor remoto dedicado. De vez en cuando tengo que asegurarme de que el terminal se vuelva a conectar a un servidor si la conexión se interrumpe durante un breve periodo de tiempo. Asegúrese de especificar qué servidor utilizar, de lo contrario toda la operación se "congela". ¿Cómo puedo hacer que el terminal se reconecte automáticamente si no se conecta en 5 minutos, por ejemplo?

Esto debería ocurrir automáticamente.

El terminal detecta automáticamente la pérdida de la conexión y se reconecta a ella (cuando esta función está disponible).

Si esto no sucede, escriba una solicitud a Service Desk con una descripción completa del problema y no olvide adjuntar los registros.

 

Enfrentado a un problema de desbordamiento de pila de llamadas (creo).

Después de llamar a un método de uno de los objetos , véase el ejemplo siguiente. El código está simplificado, sólo lo esencial. La clase CClass1 es una clase base, y list1 tiene diferentes objetos que son descendientes de esta clase, y sus funciones init tienen diferente implementación. Así, en una clase en la que la función init obtiene una lista de este tipo (por decirlo de forma sencilla, una inicialización de una interfaz anidada, un panel en un panel) después de regresar de init en la línea

    Print(t.name);

hay un error

2010.12.02 00:21:00 test1 (EURUSD,H1) Acceso de puntero no válido en 'Container.mqh' (74,10)

for(CClass1* t = list1.GetLastNode(); t != NULL; t = list1.GetPrevNode() ) {
   t.init(); //после выхода отсюда t-мертвый указатель
    Print(t.name); 
}

Es decir, el puntero t está muerto.

Al depurar, este error no se produce, después de llamar al método, el puntero está "vivo", las interfaces anidadas se crean y el EA sigue funcionando.

La única manera de evitar el error

savePoint = t;
t.init();
t = savePoint;
#property stacksize pointer achieved nothing.