Erreurs, bugs, questions - page 3078

 
Igor Petrov #:

Ok. Compris, merci. En fait, l'EA fonctionne plus logiquement, et l'ordre n'est réellement exécuté que visuellement, ce qui peut être vu plus tard.

Pour voir la situation synchronisée au bon moment, vous devez attendre le prochain tick après avoir arrêté le testeur.

Par exemple, vous pouvez faire une avance rapide de cinq secondes AVANT le moment intéressant, puis appuyer sur pause et par F12 faire défiler chaque tic-tac suivant. Tous ces tics seront rendus correctement.


Il est possible d'identifier le décalage dans le commentaire du tick time actuel (avec une précision de l'ordre de la milliseconde) et en le comparant avec ce qui est montré dans la fenêtre Market Watch du visualiseur. S'il y a un écart, il s'agit d'une désynchronisation.


S'il y a une divergence, c'est une dyssynchronisation du visualiseur lorsque le débogueur s'arrête (ou lorsque vous appuyez sur pause), bien sûr, cela aurait dû être fait depuis longtemps.

 
Igor Makanu #:

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

qu'est-ce que ça rapporte ? - Est-ce simplement un nombre que l'indicateur a renvoyé à return(rates_total) après le calcul dans OnCalculate() ?

vérifiez-le - oui BarsCalculated() est 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);
}

a couru sur l'indicateur 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

 

Bonjour, je n'arrive pas à résoudre le problème.

J'ai besoin de traiter toutes les barres au premier passage, après avoir traité uniquement la dernière barre.

D'abord il imprime 0, puis sur chaque nouvelle barre seulement la dernière, il n'imprime pas les barres intermédiaires.

Quel est le problème ?

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 #:

Bonjour, je n'arrive pas à résoudre le problème.

J'ai besoin de traiter toutes les barres au premier passage, après avoir traité uniquement la dernière barre.

Au début, il imprime 0, puis sur chaque nouvelle barre seulement la dernière, il n'imprime pas les barres intermédiaires.

Quelle est l'erreur ?

Soit i-- soit i est égal à zéro dans l'expression du cycle 1) tout s'imprime correctement)
C'est pour le premier passage. Et puis le classique nouveau bar qui attrape.
 
SEM #:

Bonjour, je n'arrive pas à résoudre le problème.

J'ai besoin de traiter toutes les barres au premier passage, après avoir traité uniquement la dernière barre.

D'abord il imprime 0, puis sur chaque nouvelle barre seulement la dernière, il n'imprime pas les barres intermédiaires.

Quelle est l'erreur ?


Pour commencer, j'essaierais de le corriger comme ceci :

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

Bonne journée à vous tous. Quelqu'un a-t-il déjà rencontré ce problème ? Tout allait bien dans mt5 jusqu'à 10msk aujourd'hui. J'ai ouvert des ordres et fixé un stop et un profit.

Lorsque j'ouvre un ordre, que je place un stop ou un profit après 10msk, mon ordre attend dans la file d'attente et après 10 minutes ou plus, il est placé. Et c'est toujours le cas.

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

Bonne journée à vous tous. Quelqu'un a-t-il déjà rencontré ce problème ? Tout allait bien dans mt5 jusqu'à 10msk aujourd'hui. J'ai ouvert des ordres et fixé un stop et un profit.

Après 22 heures, lorsque j'ai ouvert un ordre et placé un stop ou un profit, mon ordre attendait dans la file d'attente et après 10 minutes ou plus, il était ouvert. Et c'est toujours le cas.

Le trading manuel ? Quel courtier ?
 
mktr8591 #:
Commerce manuel ? Quel courtier ?
Oui, j'entre depuis le marché, manuellement. Finam.
 
mktr8591 #:

Pour commencer, j'essaierais de le corriger comme ceci :

Merci ! Ça a aidé.
 
La capture d'écran ne se charge pas sur la place de marché. Je l'ai essayé à partir de deux navigateurs.