Erreurs, bugs, questions - page 1221

 
Tapochun:

Bonsoir. Avez-vous essayé ?

Bonsoir à vous aussi. J'ai essayé. C'est la même chose.

Le résultat est le même. L'erreur apparaît dans le journal pour chaque tic.

Merci pour cette idée. Si SeriesInfoInteger() n'appelle pas Bars en interne, il est plus probable qu'il s'agisse d'une erreur de données "étroite" sur le serveur du courtier.

Et c'est également une réponse satisfaisante à ma question.

Après tout, ce n'est pas comme si je ne savais pas où l'erreur va apparaître, si je peux l'éviter, etc.

 
Fry:

Bonsoir à vous aussi. Je l'ai essayé - même chose.

Le résultat est le même. L'erreur apparaît dans le journal pour chaque tic.

Merci pour cette idée. Si SeriesInfoInteger() n'accède pas aux barres en interne, alors il est de plus en plus probable qu'il s'agisse d'un joint de données "étroit" sur le serveur du courtier.

Et cela aussi est une réponse satisfaisante à ma question.

Après tout, je ne sais pas où l'erreur va apparaître, si je peux l'éviter, etc.

Peut-être qu'il y a vraiment une erreur chez le courtier, car le message supprime certaines barres "cassées"... ou les données sont "tuées" en cours de route. Mais, ce n'est qu'une supposition de ma part. Au fait, est-ce que GetLastError() me donne quelque chose ? Oui, et que renvoie Bars() ?
 
Tapochun:
Il s'agit probablement d'une erreur du courtier, car le message supprime certaines barres "cassées"... ou les données sont "tuées" en chemin. Mais, ce n'est qu'une supposition de ma part. Au fait, est-ce que GetLastError() me donne quelque chose ? Oui, et que renvoie Bars() ?

Si Bars() renvoie 0, alors l'erreur 4001 (ERR_INTERNAL_ERROR 4001 Unexpected internal error).

Mais parfois, Bars() renvoie toujours le nombre de barres et il n'y a alors pas d'erreur (Bars() ne change pas le statut d'erreur).

 

MT4 build 722, ME4 build 989

J'essaie de copier les données de la barre de zéro actuelle :

      MqlRates rates[1];
      int n=CopyRates(_Symbol,PERIOD_CURRENT,time[0],1,rates); 
      Print("n=",n);

Imprime n=0, c'est-à-dire que les données ne sont pas copiées.

Sion écrit_Period au lieu dePERIOD_CURRENT , cela fonctionne.

Si vous copiez des données de barre non nulles (time[1], etc.), cela fonctionnera, que vous écriviezPERIOD_CURRENT ou_Period.

P.S. Vous le voulez en cd ?

 
Fry:

Si Bars() renvoie 0, alors l'erreur 4001 (ERR_INTERNAL_ERROR 4001 Unexpected internal error).

Mais parfois, Bars() renvoie toujours le nombre de barres et il n'y a alors pas d'erreur (Bars() ne change pas le statut d'erreur).

Le caractère "inattendu" de l'erreur suggère une fois de plus que quelque chose n'a pas le temps d'arriver et est supprimé, ce qui entraîne l'erreur. D'après ce que je comprends, vous devez trouver le nombre de barres sur D1... Devez-vous le faire à chaque tick ? Vous pouvez également écrire une fonction qui demandera des données une fois par minute ou moins. Et voyez si une erreur se produit.

 
kPVT:

MT4 build 722, ME4 build 989

J'essaie de copier les données de la barre de zéro actuelle :

Imprime n=0, c'est-à-dire que les données ne sont pas copiées.

Sil'on écrit_Period au lieu dePERIOD_CURRENT , cela fonctionne.

Si vous copiez des données de barre non nulles (time[1], etc.), cela fonctionnera, que vous écriviezPERIOD_CURRENT ou_Period.

P.S. Vous le voulez en cd ?

Soirée. Essayez-le... bien que s'il existe une alternative, il est peu probable qu'ils se précipitent pour chercher cette faille. J'ai deux demandes qui traînent depuis une semaine maintenant... pas de réponse, pas de mot.
 
Fry:

Que faire ? Comment puis-je connaître le nombre de barres sur l'échelle de temps D1 ?

L'indicateur fonctionne-t-il sur D1 ?
 
MigVRN:
L'indicateur fonctionne-t-il sur D1 ?

Non, bien sûr que non. C'est là toute la question. Pour le cas où l'indicateur lui-même fonctionne sur D1, nous avons trivialement"constint rates_total, // size of input timeseries".

Voici un exemple concret de son utilisation.

Nous avons initialisé un couple d'indicateurs et obtenu leurs poignées (tout est OK ici). Ensuite, dans la fonction ontik, nous devons nous assurer qu'au moment de l'appel, toutes les données ont été calculées sur les handles (indices externes) nécessaires. Et c'est ce que je fais :

   //not all data may be calculated
   if (BarsCalculated(hCCI)<rates_total) {Print("Not all data of trend CCI is calculated. Error#",GetLastError()); return(0);}
   if (Period()!=PERIOD_D1 && BarsCalculated(hDayTrand)<Bars(Symbol(),PERIOD_D1)) return(0);

Et dans ce cas, hDayTrand est un handle récursif (le même indicateur, seul D1 est chargé).

Il me semble que je fais tout selon la documentation et les exemples du terminal et selon les recommandations. Le résultat est que tous ces éléments sont brouillés dans le journal et consomment des mégaoctets par minute.

 
Fry:

Non, bien sûr que non. C'est là toute la question. Lorsque l'indicateur lui-même fonctionne sur D1, nous avons trivialement"constint rates_total, // size of input timeseries".

Voici un exemple concret de son utilisation.

Nous avons initialisé un couple d'indicateurs et obtenu leurs poignées (tout est OK ici). Ensuite, dans la fonction ontik, nous devons nous assurer qu'au moment de l'appel, toutes les données sur les poignées requises (indices externes) ont déjà été calculées. Et c'est ce que je fais :

Et dans ce cas, hDayTrand est un handle récursif (le même indicateur, seul D1 est chargé).

Il me semble que je fais tout selon la documentation et les exemples du terminal et selon les recommandations. Résultat : toutes ces choses sont griffonnées dans le journal et consomment des mégaoctets par minute.

IMHO, vous devez contacter le courtier (Otkrytie, si je comprends bien). Les comptes réels ne l'ont pas, donc c'est dans les paramètres du serveur, très probablement.
 
Dima_S:
IMHO, nous devrions contacter le courtier (Otkrytie, si je comprends bien). Je ne l'ai jamais essayé sur mon compte réel et je n'ai pas eu l'erreur, cela signifie que le problème se situe dans les paramètres du serveur ou autre chose, très probablement.

Peut-être pas maintenant, mais ça l'était. C'était la même chose dans le monde réel.

Je reviendrai à Moscou et je ferai chier le courtier. Pour l'instant, c'est un inconvénient.

Maintenant, l'essentiel est que l'erreur n'est pas typique pour tous et il est peu probable qu'elle soit liée au code de ma part.

Merci pour cela à tous les participants du forum !

Raison: