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

 
Artyom Trishkin:
Où exactement exécutez-vous l'indicateur dans le terminal ?
Si tu parles du mien,C:\Users\AppData\Roaming\MetaQuotes\Terminal\CE01488447B8E5332C971089AB90, si tu parles de BB, honnêtement je ne sais pas d'où il sort, mais j'avais l'habitude d'imprimer le problème (j'ai trouvé si le BB lui-même donne plus de 4 chiffres) et j'ai aussi pris BB dans ce dossier.
 
Павел Козлов:
Je suis allé dans le code pour regarder ce genre de choses.

Je ne sais pas pour tout le monde, mais j'ai deux endroits où se trouvent les indices et les experts, c'est C:\Program Files (x86)\ MT4\MQL4\indicators et C:\Users\AppData\Roaming\MetaQuotes\Terminal\CE01488447B8E5332C971089AB90 (ce dossier s'ouvre depuis le terminal File-Open data directory) dans les deux endroits j'ai cherché le code et il est identique.J'ai peut-être encore manqué le point, pouvez-vous le clarifier pour quelqu'un qui ne le sait pas. Quelle est la différence entre le sur mesure et le standard et où trouver les deux ?

Le standard est appelé BollingerBands et le personnalisé est Bands et situé à différents endroits.


 
Artyom Trishkin:
A partir de quel endroit précis du terminal exécutez-vous l'indicateur ?

Je doute qu'il soit familier avec le mode "portable".

 
Alexey Viktorov:

Le modèle standard s'appelle BollingerBands et le modèle personnalisé s'appelle Bands et se trouve à différents endroits.


Merci. Je ne peux pas expliquer à Sa Majesté depuis mon téléphone portable où et ce qui se trouve.
C'est pourquoi j'essayais de dire qu'il lance une chose, mais que le code en regarde une autre.
 
Alexey Viktorov:

Je doute qu'il soit familier avec le mode portatif.

Je ne suis vraiment pas familier avec ce mode et dans mon fil de discussion que j'ai créé séparément sur ce problème j'ai révélé mon niveau de connaissance, veuillez pardonner la stupidité encore, mais ce n'était pas aussi facile que vous auriez pu le penser pour moi. Vous m'avez quand même montré le problème, maintenant je vais essayer de trouver comment le résoudre. Merci pour vos conseils et ceux d'Artem.
 
Павел Козлов:
Je ne suis vraiment pas familier avec ce mode et dans mon fil de discussion que j'ai créé séparément sur ce problème j'ai révélé mon niveau de connaissance, veuillez pardonner la stupidité encore, mais ce n'était pas aussi facile que vous auriez pu le penser pour moi. Vous m'avez quand même montré le problème, maintenant je vais essayer de trouver comment le résoudre. Merci pour vos conseils et ceux d'Artem.

Je ne voulais en aucun cas vous prendre au dépourvu avec mon ignorance. Il s'agissait d'un dialogue avec Artem, d'une simple clarification qu'il pose sur ce que vous ne savez pas, de mon point de vue. Ne pas savoir n'est pas honteux et tout à fait normal.

 
Qu'est-ce que je fais mal maintenant, j'ai maîtrisé la fonction iCustom. Faites le code (prenez la ligne du haut comme exemple). Mais il donne toujours 4 caractères. DoubleToString produit 5, mais des conneries, pas de vraies données.
double BUp = iCustom(NULL,0, "Bands",20,0,2,1,1) ;
Aidez-nous, aidez-nous dans le code. Pas dans l'imprimante, juste écrire les données de l'indicateur Bands.ex4 dans la variable de mon indicateur, par exemple la ligne supérieure. De préférence en utilisant des valeurs numériques, sans les remplacer par des variables.
 
Павел Козлов:
Eh bien, qu'est-ce que je fais mal maintenant, j'ai maîtrisé la fonction iCustom. Faites le code (prenez la ligne du haut comme exemple). Mais il donne toujours 4 caractères. DoubleToString donne 5, mais ce sont des conneries, pas des données réelles. Pas dans l'imprimante, il suffit d'écrire les données de l'indicateur Bands.ex4 dans la variable de mon indicateur, par exemple la ligne supérieure. Il est souhaitable d'utiliser des valeurs numériques et de ne pas les remplacer par des variables.

Le code est placé dans OnInit(), car OnTick() ne fonctionnera pas aujourd'hui.


Hmmm : Je ne l'ai pas lu attentivement. Je n'avais pas remarqué cette phrase.

Il est souhaitable d'utiliser des valeurs numériques et de ne pas les remplacer par des variables.


Mais cela ne dépend pas du fait que vous mettiez un nombre ou une variable dans l'iCustom.

Dossiers :
 
Павел Козлов:
Qu'est-ce que je fais mal maintenant, j'ai maîtrisé la fonction iCustom. J'ai créé le code (en prenant la ligne du haut comme exemple). Mais il donne toujours 4 caractères. DoubleToString donne 5, mais ce sont des conneries, pas des données réelles. Pas dans l'imprimante, il suffit d'écrire les données de l'indicateur Bands.ex4 dans la variable de mon indicateur, par exemple la ligne supérieure. Utilisez de préférence des valeurs numériques et ne les remplacez pas par des variables.
Vous faites une vérification incorrecte. iCustom, iBands n'arrondissent pas la valeur de retour.
   double   BUp = iCustom(NULL,0,"Bands",20,0,2.0,1,1);
   Print(DoubleToString(BUp,16));
 

Aidez-moi à comprendre pourquoi l'indicateur ne s'affiche pas. Je veux éventuellement créer quelque chose comme ZigZag.

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property link      ""
#property version   "1.00"
#property strict
#property indicator_chart_window
//--------------------------------
#property indicator_buffers 1       // Количество буферов
#property indicator_color1 Blue     // Цвет линии 0 буфера
double Buf_0[];
double Max_B=0,
Min_B=10000;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0,Buf_0);                  //Назначение массива буфера
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); //стильлинии
   return(0);
  }
//------------------------------
int start()
  {
   int i;
   int n,
   step=10;
   int Counted_bars;
   double Max_A,
   Min_A;
   Counted_bars=IndicatorCounted();
   i=Bars-Counted_bars-1;
//--------------------------------------------------------------------------------------------------------------+
   while(i>=0) //цикл, который считает просчитывает значение на i-ом баре               
     {
      Max_A=High[i];                         //присвоили максимальное значение i-ого бара переменной Max_A            
      Min_A=Low[i];                          //присвоили минимальное значение i-ого бара переменной Min_A
      if(Max_A>Max_B)
         Max_B=Max_A;
      if(Min_A<Min_B)
         Min_B=Min_A;
      //------------------------------------------------------------------------------------------------------------- 
      if(i>=step)
        {
         for(n=0;n<step;n++) //цикл, который будет сравнивать значения баров на определённом интервале        
           {
            if(High[i+n]>Max_A)
              {
               Max_A=High[i+n];
              }
            else
              {
               if(High[i+n]<Min_A)
                  Min_A=High[i+n];
              }
           }
        }
      if(i<step)
        {
         for(n=step;n>0;n--) //цикл, который будет сравнивать значения баров на определённом интервале        
           {
            if(High[i-n]>Max_A)
              {
               Max_A=High[i-n];
              }
            else
              {
               if(High[i-n]<Min_A)
                  Min_A=High[i-n];
              }
           }
        }
      if(Max_A>Max_B)
        {
         Buf_0[i]=Max_A;
        }
      else
        {
         if(Min_A<Min_B)
            Buf_0[i]=Min_A;
        }
      i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+