Errores, fallos, preguntas - página 3078

 
fxsaber #:

El visualizador está lejos de estar siempre sincronizado con el entorno comercial. Es decir, puede mostrar información antigua. El más actualizado está siempre en el EA.

Este es un problema muy común, cuando el EA dice una cosa, pero el visualizador muestra otra.

Tengo una buena idea. Lo tengo, gracias. Básicamente, el EA ha seguido funcionando lógicamente y la orden se ha ejecutado efectivamente, pero visualmente es visible sólo después.

 
Igor Petrov #:

De acuerdo. Entendido gracias . Básicamente el EA funciona más lógicamente, y la orden se ejecuta realmente sólo visualmente se puede ver más tarde.

Para ver la situación de sincronización en el momento adecuado, hay que esperar al siguiente tick después de parar el probador.

Por ejemplo, puedes avanzar cinco segundos ANTES del momento interesante, luego pulsar la pausa y mediante F12 pasar por cada tic siguiente. Todos estos ticks se renderizarán correctamente.


Es posible identificar el desfase en el comentario del tiempo de tick actual (con la precisión de milisegundos) y comparándolo con lo que se muestra en la ventana Market Watch del visualizador. Si hay una discrepancia, se trata de una desincronización.


Si hay una discrepancia, es una disincronización del visualizador cuando el depurador se detiene (o cuando se pulsa la pausa), por supuesto, debería haberse hecho hace mucho tiempo.

 
Igor Makanu #:

BarsCalculated()https://www.mql5.com/ru/docs/series/barscalculated

¿qué devuelve? - ¿es sólo un número que el indicador devuelve a return(rates_total) después del cálculo en OnCalculate()?

compruébalo - sí BarsCalculated() es return(rates_total)

ind A:

int OnCalculate...
{
   static int cnt = 0;
   cnt++;
   Print("cnt = ", cnt);
   return(cnt);
}

ind B:

int OnInit()
{
   handle = iCustom(NULL, PERIOD_M1, "tst_code\\A");
   return(INIT_SUCCEEDED);
}
int OnCalculate...
{
   double tmp[];
   int bc = BarsCalculated(handle);
   if(bc == -1) return(rates_total);
   int copy = CopyBuffer(handle, 0, 0, 1, tmp);
   Print("BarsCalculated = ", bc);
   return(rates_total);
}

se ejecutó en el indicador H1 B, log:

2021.09.02 16:11:44.872 A (EURUSD,M1) cnt = 1

2021.09.02 16:11:44.873 A (EURUSD,M1) cnt = 2

2021.09.02 16:11:44.998 A (EURUSD,M1) cnt = 3

2021.09.02 16:11:44.998 B (EURUSD,H1) BarsCalculated = 3

2021.09.02 16:11:46.617 A (EURUSD,M1) cnt = 4

2021.09.02 16:11:46.617 B (EURUSD,H1) BarsCalculated = 4

2021.09.02 16:11:46.663 A (EURUSD,M1) cnt = 5

2021.09.02 16:11:46.663 B (EURUSD,H1) BarsCalculated = 5

2021.09.02 16:11:46.671 A (EURUSD,M1) cnt = 6

2021.09.02 16:11:46.671 B (EURUSD,H1) BarsCalculated = 6

2021.09.02 16:11:46.684 A (EURUSD,M1) cnt = 7

2021.09.02 16:11:46.685 B (EURUSD,H1) BarsCalculated = 7

2021.09.02 16:11:46.697 A (EURUSD,M1) cnt = 8

2021.09.02 16:11:46.697 B (EURUSD,H1) BarsCalculated = 8

2021.09.02 16:11:47.008 A (EURUSD,M1) cnt = 9

2021.09.02 16:11:47.008 B (EURUSD,H1) BarsCalculated = 9

2021.09.02 16:11:47.029 A (EURUSD,M1) cnt = 10

2021.09.02 16:11:47.029 B (EURUSD,H1) BarsCalculated = 10

2021.09.02 16:11:47.502 A (EURUSD,M1) cnt = 11

2021.09.02 16:11:47.502 B (EURUSD,H1) BarsCalculated = 11

2021.09.02 16:11:47.614 A (EURUSD,M1) cnt = 12

2021.09.02 16:11:47.614 B (EURUSD,H1) BarsCalculated = 12

2021.09.02 16:11:47.620 A (EURUSD,M1) cnt = 13

2021.09.02 16:11:47.620 B (EURUSD,H1) BarsCalculated = 13

2021.09.02 16:11:47.667 A (EURUSD,M1) cnt = 14

2021.09.02 16:11:47.667 B (EURUSD,H1) BarsCalculated = 14

2021.09.02 16:11:47.713 A (EURUSD,M1) cnt = 15

2021.09.02 16:11:47.713 B (EURUSD,H1) BarsCalculated = 15

2021.09.02 16:11:47.726 A (EURUSD,M1) cnt = 16

2021.09.02 16:11:47.726 B (EURUSD,H1) BarsCalculated = 16

 

Buenas tardes, no consigo resolver el problema.

Necesito procesar todas las barras en la primera ejecución, después de procesar sólo la última barra.

Al principio imprime 0, luego en cada nueva barra sólo la última, no imprime barras intermedias.

¿Cuál es el problema?

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

      for(int i = prev_calculated; i <= prev_calculated && i < rates_total && !IsStopped(); i++)
        {
         Print(i);
        };
   return(rates_total);
  }
 
SEM #:

Buenas tardes, no consigo resolver el problema.

Necesito procesar todas las barras en la primera ejecución, después de procesar sólo la última barra.

Primero imprime 0, luego en cada nueva barra sólo la última, no imprime barras intermedias.

¿Cuál es el error?

O i-- o i es igual a cero en la expresión del ciclo 1) todo se imprime correctamente)
Esto es para la primera carrera. Y luego el clásico nuevo bar que atrapa.
 
SEM #:

Buenas tardes, no consigo resolver el problema.

Necesito procesar todas las barras en la primera ejecución, después de procesar sólo la última barra.

Primero imprime 0, luego en cada nueva barra sólo la última, no imprime barras intermedias.

¿Cuál es el error?


Para empezar yo trataría de corregirlo así:

      for(int i = prev_calculated; i >= prev_calculated && i < rates_total && !IsStopped(); i++)
        {
         Print(i);
        };
 

Buenos días a todos. ¿Alguien por ahí que se haya encontrado con este problema? Todo estaba bien en mt5 hasta las 10msk de hoy. Abrí órdenes y fijé el stop y el profit.

Al abrir una orden, colocando un stop o beneficio después de 10msk, mi orden está esperando en línea y después de 10 minutos o más se coloca. Y esto sigue siendo así.

 
Михаил Савченко #:

Buenos días a todos. ¿Alguien por ahí que se haya encontrado con este problema? Todo estaba bien en mt5 hasta las 10msk de hoy. Abrí órdenes y fijé el stop y el profit.

Después de las 10 de la noche, cuando abrí una orden y puse un stop o beneficio, mi orden estaba esperando en la cola y después de 10 minutos o más se abrió. Y esto sigue siendo así.

¿Operación manual? ¿Qué corredor?
 
mktr8591 #:
¿Operación manual? ¿Qué corredor?
Sí, entro desde el mercado, manualmente. Finam.
 
mktr8591 #:

Para empezar, trataría de corregirlo así:

Gracias. Ayudó.