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

 
Alexey Viktorov:

Notez la conversion du temps et du prix en coordonnées XY en pixels.

Lire le prix de la ligne, le convertir en pixels et attribuer les coordonnéesà l'objet "Marque de texte" sur l'axe Y, tandis que la coordonnée X reste inchangée.

Cela fait longtemps que j'envisage cette fonction, mais je ne savais pas comment m'y prendre car je ne suis pas assez expérimenté. Merci, je vais essayer de l'intégrer dans le code.

 
Aleksei Stepanenko:

Indicateur de ligne et de texte Ver 1

L'indicateur déplace le texte en suivant la ligne. Insérer le nom de la ligne dans le paramètre d'entrée.

Merci. C'est également une disposition intéressante. Je vais certainement l'enlever, dès que j'aurai compris ChartTimePriceToXY().

 

Pouvez-vous me dire ce qui ne va pas ?

   for(int i=rates_total-prev_calculated-2;i>=0;i--)
     {
      ADRBuffer1[i]=High[i];
      if(High[i]<ADRBuffer1[i+1])
      ADRBuffer1[i]=ADRBuffer1[i+1];
      ADRBuffer2[i]=Low[i];
      if(Low[i]>ADRBuffer2[i+1])
      ADRBuffer2[i]=ADRBuffer2[i+1];
     }

Low tire mais High ne veut pas...

 
MakarFX:

Pouvez-vous me dire ce qui ne va pas ?

Low tire mais High ne veut pas...

Quelle est la valeur de ADRBuffer1[i+1] au premier passage ? Il y a probablement plus d'ordures que High[i]

 
Alexey Viktorov:

Que vaut ADRBuffer1[i+1] à la première exécution ? Il y a probablement plus d'ordures que High[i].

S'il vous plaît dites-moi comment le réparer et pourquoi Low draws fine ?

Tous les codes

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrDimGray
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrCrimson
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
#property indicator_type3   DRAW_LINE
#property indicator_color3  clrTeal
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1
//--- indicator buffers
double   ADRBuffer0[];
double   ADRBuffer1[];
double   ADRBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorDigits(Digits);
//--- indicator buffers mapping
   SetIndexBuffer(0,ADRBuffer0,INDICATOR_DATA);
   SetIndexBuffer(1,ADRBuffer1,INDICATOR_DATA);
   SetIndexBuffer(2,ADRBuffer2,INDICATOR_DATA);
   SetIndexLabel(0,"ADR");
   SetIndexLabel(1,"ADR1");
   SetIndexLabel(2,"ADR2");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   if((rates_total-prev_calculated-2)<=0)return(0);
   for(int i=rates_total-prev_calculated-2;i>=0;i--)
     {
      ADRBuffer1[i]=High[i];
      if(High[i]<ADRBuffer1[i+1])
      ADRBuffer1[i]=ADRBuffer1[i+1];
      ADRBuffer2[i]=Low[i];
      if(Low[i]>ADRBuffer2[i+1])
      ADRBuffer2[i]=ADRBuffer2[i+1];
     }
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
MakarFX:

Pouvez-vous me dire comment réparer et pourquoi Low dessine normalement ?

L'ensemble du code

Le nombre de constructions doit nécessairement être déclaré. Et essayez d'écrire l'initialisation du tampon avec zéro, à condition que prev_calculate == 0 ;

 
Alexey Viktorov:

Il est obligatoire de déclarer le nombre de constructions.

Je ne vois pas très bien, malheureusement, ce que cela signifie.

Alexey Viktorov:

Et essayez d'écrire l'initialisation du tampon avec zéro, à condition que prev_calculate == 0 ;

Ça n'a pas aidé.

 
MakarFX:

Je ne comprends malheureusement pas ce que cela signifie.

Ça n'a pas aidé.


if( prev_calculated == 0 ) {
   ADRBuffer1[rates_total-1] = High[rates_total-1];
   ADRBuffer2[rates_total-1] = Low[rates_total-1]
}

for(int i=rates_total-prev_calculated-2;i>=0;i--)
{
...
}
 
MakarFX:

Je ne comprends malheureusement pas ce que cela signifie.

Ça n'a pas aidé.

#property indicator_plots   3

La valeur par défaut est 1. Et si l'annonce du nombre de constructions ne vous aide pas, passez à l'option B.

 
PapaYozh:


Merci, ça m'a aidé... je ne l'ai pas bien fait)))