Erros, bugs, perguntas - página 3078

 
fxsaber #:

O visualizador está longe de estar sempre sincronizado com o ambiente comercial. Ou seja, pode mostrar informações antigas. A actualizada está sempre na EA.

Esta é uma questão muito comum, quando a EA diz uma coisa, mas o Visualizador mostra algo mais.

Tenho uma boa ideia. Já está, obrigado. Basicamente, a EA continuou a trabalhar logicamente e a ordem foi de facto executada, mas visualmente só é visível mais tarde.

 
Igor Petrov #:

Está bem. Obrigado compreendido . Basicamente a EA funciona mais logicamente, e a ordem é realmente executada apenas visualmente, podendo ser vista mais tarde.

Para ver a situação sincronizada no momento certo, é necessário esperar pelo próximo tique depois de parar o testador.

Por exemplo, pode avançar rapidamente cinco segundos ANTES do momento interessante, depois pressionar pausa e por F12 rolar por cada tick seguinte. Todos estes tiquetaques serão correctamente reproduzidos.


É possível identificar o atraso no comentário do tempo actual do tick (com a precisão de milissegundos) e comparando-o com o que é mostrado na janela do visualizador do Market Watch. Se houver uma discrepância, trata-se de uma dessincronização.


Se houver uma discrepância, é uma dessincronização do visualizador quando o depurador pára (ou quando se carrega na pausa), claro, já deveria ter sido feita há muito tempo.

 
Igor Makanu #:

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

o que é que regressa? - é apenas um número que o indicador voltou a retornar(rates_total) após o cálculo em OnCalculate()?

check it out - sim BarsCalculated() é 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);
}

corrido no 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) BarsCalculado = 3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

Boa tarde, parece que não consigo resolver o problema.

Preciso de processar todas as barras na primeira corrida, depois de processar apenas a última barra.

No início imprime 0, depois em cada nova barra apenas a última, não imprime barras intermédias.

Qual é o 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 #:

Boa tarde, parece que não consigo resolver o problema.

Preciso de processar todas as barras na primeira corrida, depois de processar apenas a última barra.

No início imprime 0, depois em cada nova barra apenas a última, não imprime barras intermédias.

O que é o erro?

Ou i-- ou i igual a zero na expressão do Ciclo 1) todas as impressões estão correctas)
Isto é para a primeira corrida. E depois o clássico novo bar catching.
 
SEM #:

Boa tarde, parece que não consigo resolver o problema.

Preciso de processar todas as barras na primeira corrida, depois de processar apenas a última barra.

Primeiro imprime 0, depois em cada nova barra apenas a última, não imprime barras intermédias.

O que é o erro?


Para começar, eu tentaria corrigi-lo desta forma:

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

Bom dia a todos vós. Alguém lá fora que tenha encontrado este problema? Tudo estava bem em mt5 até aos 10msk de hoje. Abri encomendas e estabeleci paragem e lucro.

Ao abrir uma encomenda, colocar uma paragem ou lucro após 10msk, a minha encomenda está à espera na fila e após 10 minutos ou mais é colocada. E este continua a ser o caso.

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

Bom dia a todos vós. Alguém lá fora que tenha encontrado este problema? Tudo estava bem em mt5 até aos 10msk de hoje. Abri encomendas e estabeleci paragem e lucro.

Depois das 22 horas, quando abri uma encomenda e coloquei uma paragem ou lucro, a minha encomenda estava à espera na fila e após 10 minutos ou mais foi aberta. E este continua a ser o caso.

Comércio manual? Que corretor?
 
mktr8591 #:
Comércio manual? Que corretor?
Sim, eu entro do mercado, manualmente. Finam.
 
mktr8591 #:

Para começar, eu tentaria corrigi-lo desta forma:

Obrigado! Ajudou.