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

 
prom18:

Il y a peut-être des exemples. Visuellement, ce serait plus facile à comprendre. Merci.

Si je comprends bien que vous avez besoin de barres dans un certain intervalle de temps, vous pouvez les sélectionner à l'aide d'iTime.
 
prom18:

Bonjour. Je suis en train de lire un manuel. Voici quelques exemples de la manière de rédiger des indicateurs. J'ai une question concernant l'indicateur separatewindow.mq4. Vous pouvez y définir le nombre de barres calculées. Et si vous avez besoin de spécifier le calcul à partir du prix d'ouverture du jour (ou de zéro) jusqu'au prix de clôture du jour ? Comment dois-je m'y prendre ? J'ai essayé de chercher une solution, mais je ne l'ai pas trouvée.

Voici le prix d'ouverture du jour dans l'intervalle de temps actuel

//+------------------------------------------------------------------+
//|                                                      DayOpen.mq4 |
//|                                            Copyright 2018, IgorM |
//|                              https://www.mql5.com/ru/users/igorm |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, IgorM"
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         Label1Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer);
   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[])
  {
   int i,limit;
   static double dayopen=0.0;
   static int lastday=0;
   if(prev_calculated==0)
     {
      limit=rates_total-1;
      dayopen=0.0;
      lastday=0;
     }
   else limit=rates_total-prev_calculated;
   for(i=limit; i>=0; i--)
     {
      if(TimeDay(time[i])!=lastday)
        {
         dayopen=open[i];
         lastday= TimeDay(time[i]);
        }
      Label1Buffer[i]=dayopen;
     }
   return(rates_total);
  }
 

Bonjour, Est-il possible de trouver la bonne barre sur l'historique à DROITE d'une barre donnée par condition ? Merci.

 
Sfinks35:

Bonjour, Est-il possible de trouver la bonne barre sur l'historique à DROITE d'une barre donnée par condition ? Merci.

Oui, nous le pouvons.

 
Artyom Trishkin:

Vous pouvez.

Comment faites-vous ? S'il vous plaît, dites-moi.
 
Sfinks35:
Comment faites-vous ? Pouvez-vous m'en parler, s'il vous plaît ?

Comment trouver une barre donnée ?

 
Artyom Trishkin:

Comment trouver une barre donnée ?


Cela m'a pris beaucoup de temps, mais j'ai écrit une fonction comme celle-ci :

double GetPatt5barsDN()
{
double low3 = 0 ;
int index = 0 ;
for(int i=1 ; i<20 ; i++)
{
si
((Close[i] > Open[i]) &&
(Close[i+1] > Open[i+1]) &&
(Close[i+2] > Open[i+2]) && //Low[i+2] est nécessaire sur cette bougie
(Close[i+3] < Open[i+3]) &&
(Close[i+4] < Open[i+4])

low3 = Low[i+2] ;
indice = i+2 ;
}

retour(low3) ;
}

 
Igor Makanu:

voici le prix d'ouverture du jour dans la TF actuelle

Merci, Igor. Mais je ne l'ai pas formulé correctement. L'indicateur est calculé et dessiné pour un nombre de barres spécifié (50 dans ce cas) et dans la fenêtre séparée. Il n'a pas besoin du prix d'ouverture mais de la première barre du jour pour indiquer la MA. Mais en tout cas, merci.

 
Igor Makanu:

voici le prix d'ouverture du jour sur le TF actuel

Pouvez-vous me dire ce qui est écrit dans

int i,limit=prev_calculated==0 ? rates_total-1 : rates_total-prev_calculated ;

"==" , " ?" , " : "

?

 
Sfinks35:


Cela m'a pris beaucoup de temps, mais j'ai écrit une fonction comme celle-ci :

Retourne aussi l'index dans le paramètre de la fonction passé par le lien