Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 961

 
Yevhenii Levchenko:

Qu'est-ce que j'ai à dire : cela se produit-il et est-ce également dû à une sorte de fissure dans les citations ou est-ce que j'écris quelque chose de mal ?

Voulez-vous que je vous dise que le testeur MT4 ne fonctionne pas correctement ? - Vous n'entendrez pas votre capture d'écran avec des erreurs dans les ticks ou les barres - le testeur générera tout à partir de n'importe quelle basse TF possible.

les développeurs ont toujours répondu à des questions comme la vôtre - écrivez les codes correctement !

Je vous ai montré un exemple de la façon d'écrire votre code.... je ne peux pas le voir, et ce n'est pas intéressant :)))) - occupé à lire des articles, je vais m'atteler à mes codes.

 
Igor Makanu:

Voulez-vous que je vous dise que le testeur MT4 ne fonctionne pas correctement ? - Vous n'entendrez pas votre capture d'écran avec des erreurs dans les ticks ou les barres - le testeur générera tout à partir de n'importe quelle basse TF possible.

les développeurs ont toujours répondu à des questions comme la vôtre - écrivez les codes correctement !

Je vous ai montré un exemple de la façon d'écrire votre code.... je ne peux pas le voir, et ce n'est pas intéressant :)))) - occupé, à lire des articles, je vais me mettre au travail sur mes codes

Ok ! Merci.

 
Yevhenii Levchenko:

Ok ! Merci.

Cela pourrait s'avérer utile : https://www.mql5.com/ru/forum/165405#comment_5602248

Архивные котировки от Metaquotes
Архивные котировки от Metaquotes
  • 2017.01.02
  • www.mql5.com
Ситуация: В терминале MT4 по клавише F2 можно закачать архивные котировки. Они нужны всем, кто разрабатывает свою торговую систему...
 

Bonjour, camarades. J'apprends à écrire des choses simples dans mql4, maintenant j'essaie de travailler avec des tableaux. Je ne comprends pas l'erreur dans ce morceau de code :

   double d1 = NormalizeDouble(Low[iLowest(NULL, 0, MODE_LOW, MaxLimit, 0)],4);
   double d2 = NormalizeDouble(High[iHighest(NULL, 0, MODE_HIGH, MaxLimit, 0)],4);
   double CrossBarsNum[][2];
   for (double d = d1; d <= d2; d += 0.0001)
     {
       double a = 0.0;
       for(int i = 0; i < MaxLimit; i++)
           if(d > Low[i] && d < High[i])
               a+=1;
               CrossBarsNum[(d-d1)/0.0001,0] = d;
               CrossBarsNum[(d-d1)/0.0001,1] = a;

Il se bloque sur les deux dernières lignes avec le libellé de l'expression entière attendue. D'après ce que j'ai compris, un indice dans un tableau peut être défini à l'aide d'une formule. Il est nécessaire de rechercher dans les chaînes du tableau et d'enregistrer séquentiellement les citations et le nombre de barres contenant une telle citation. La formule donne une valeur entière (de 0 et plus par incréments de un), alors quelle est l'erreur ?

 
Azat0t:

Bonjour, camarades. J'apprends à écrire des choses simples dans mql4, maintenant j'essaie de travailler avec des tableaux. Je ne comprends pas l'erreur dans ce morceau de code :

Il se bloque sur les deux dernières lignes avec le libellé de l'expression entière attendue. D'après ce que j'ai compris, un indice dans un tableau peut être défini à l'aide d'une formule. Il est nécessaire de rechercher dans les chaînes du tableau et d'enregistrer séquentiellement les citations et le nombre de barres contenant une telle citation. La formule renvoie une valeur entière (de 0 et plus par pas de un), alors quelle est l'erreur ?

Faire de l'index du tableau un type int, et non double. L'index du tableau doit être un nombre entier.

 
Sergey Basov:

Cela pourrait s'avérer utile : https://www.mql5.com/ru/forum/165405#comment_5602248

Merci ! J'ai presque toujours fait ça. Après le chargement, j'ai appuyé sur "Rafraîchir" - les citations étaient différentes. J'ai oublié que j'avais fixé une limite de temps pour le travail du robot. :)
 
Azat0t:

Bonjour, camarades. J'apprends à écrire des choses simples dans mql4, maintenant j'essaie de travailler avec des tableaux. Je ne comprends pas l'erreur dans ce morceau de code :

Il se bloque sur les deux dernières lignes avec le libellé de l'expression entière attendue. D'après ce que j'ai compris, un indice dans un tableau peut être défini à l'aide d'une formule. Il est nécessaire de rechercher dans les chaînes du tableau et d'enregistrer séquentiellement les citations et le nombre de barres contenant une telle citation. La formule renvoie une valeur entière (de 0 et plus par pas de un), alors où est l'erreur ?

Utiliser une conversion de type explicite

               CrossBarsNum[int((d-d1)/0.0001),0] = d;
               CrossBarsNum[int((d-d1)/0.0001),1] = a;
 
Merci, j'ai corrigé l'erreur, mais toujours pas de résultat : le tableau ne se remplit pas. A quoi cela peut-il être relié ?
   int handle;
   handle = FileOpen("FindLevels.txt", FILE_CSV|FILE_WRITE, '\t');
   double d1 = NormalizeDouble(Low[iLowest(NULL, 0, MODE_LOW, MaxLimit, 0)],4);
   double d2 = NormalizeDouble(High[iHighest(NULL, 0, MODE_HIGH, MaxLimit, 0)],4);
   double CrossBarsNum[][2];
   for (double d = d1; d <= d2; d += 0.0001)
     {
       double a = 0.0;
       for(int i = 0; i < MaxLimit; i++)
           if(d > Low[i] && d < High[i])
               a++;
               CrossBarsNum[int((d-d1)/0.0001),0] = a;
               CrossBarsNum[int((d-d1)/0.0001),1] = d;
     } 
   FileWrite(handle, CrossBarsNum[11,1], d, d1, d2, a, ArraySize(CrossBarsNum));
   //FileWriteArray(handle, CrossBarsNum, 0, WHOLE_ARRAY);
   FileClose(handle);
   return(0);
Les variables d, d1, d2 fonctionnent exactement.
 
Azat0t:
Merci, j'ai corrigé l'erreur, mais toujours pas de résultat : le tableau n'est pas rempli. A quoi cela peut-il être relié ? Les variables d, d1, d2 fonctionnent parfaitement.
La taille de votre tableau est toujours nulle dans la première dimension. Je n'ai vu ArrayResize() nulle part.
 
Azat0t:
Merci, j'ai corrigé l'erreur, mais toujours pas de résultat : le tableau n'est pas rempli. De quoi s'agit-il ? Les variables d, d1, d2 fonctionnent parfaitement.

N'oubliez pas de mettre

#property strict
Corrigez toutes les erreurs et peut-être que tout s'arrangera. Apprenez à utiliser le débogueur. Avec une exécution étape par étape, tous les problèmes sont révélés.