Questions des débutants MQL5 MT5 MetaTrader 5 - page 1011

 
Vitaly Muzichenko:

Cela a-t-il déjà fonctionné, ou non ?

Comment puis-je faire en sorte que lorsqu'une couleur est modifiée dans les paramètres d'entrée, cette couleur se retrouve dans"indicator_color1" ? Pour l'instant, peu importe comment tu le changes, c'est l'original.

Comment(Buffer1_Color[0]);

Que pensez-vous de ça ?

 
Сергей Таболин:

Que pensez-vous de ça ?

 
Vitaly Muzichenko:

Cela a-t-il déjà fonctionné, ou non ?

Comment puis-je faire en sorte que lorsqu'une couleur est modifiée dans les paramètres d'entrée, cette couleur se retrouve dans"indicator_color1" ? Pour l'instant, peu importe comment tu le changes, c'est l'original.

On peut retracer quelque chose comme ça :

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#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  clrDarkGoldenrod
#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,INDICATOR_DATA);

//---
   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[])
  {
//---
   Print(PlotIndexGetInteger(0,PLOT_LINE_COLOR,0));
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Dossiers :
Test.mq5  5 kb
 
Vladimir Karputov:

On peut retracer quelque chose comme ça :

Super, nous y voilà :PlotIndexGetInteger(0,PLOT_LINE_COLOR,0)

Merci !

 

Comment, dans un indicateur personnalisé, obtenir des données à partir de OnCalculate() uniquement des séries temporelles en minutes, sur n'importe quel cadre temporel ? J'utilise CopyRates(sym,PERIOD_M1,...), quelle est la meilleure méthode, que conseillez-vous ?

 
Vladimir M.:

Comment obtenir des données dans un indicateur personnalisé à partir de OnCalculate() de séries temporelles en minutes seulement, pour n'importe quelle période ? J'utilise CopyRates(sym,PERIOD_M1,...), quelle est la meilleure méthode, quel est votre conseil ?

Si vous avez besoin de plusieurs barres à la fois, vous ne trouverez rien de mieux. Et je pense qu'il est préférable de recevoir les valeurs d'une barre au moyen de CopyRates

 
Alexey Viktorov:

Si vous avez besoin de plusieurs barres à la fois, vous ne trouverez rien de mieux. Et à mon avis, il est préférable d'obtenir les valeurs d'une seule barre via CopyRates

D'autre part, je ne peux pas supprimer OnCalculate() de l'indicateur en raison de son inutilité. Il s'avère que vous recevez deux fois les mêmes données ?
 
Vladimir M.:
OnCalculate() ne peut pas être supprimé de l'indicateur car il n'est pas nécessaire. Il s'avère que vous recevez deux fois les mêmes données ?

Est-il possible de s'en passer si OnTick() est présent ?

 
Vladimir M.:
D'autre part, vous ne pouvez pas supprimer OnCalculate() de l'indicateur car il n'est pas nécessaire. Il s'avère que vous recevez deux fois les mêmes données ?

Si vous n'en avez pas besoin, vous pouvez utiliser la seconde variante

int OnCalculate (const int rates_total,      // размер массива price[] 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const int begin,            // откуда начинаются значимые данные 
                 const double& price[]       // массив для расчета 
   );
 
Igor Zakharov:

Est-il possible de s'en passer si OnTick() est présent ?

Je doute que ce soit possible, mais je n'essaierai plus. Et la documentation dit :

"...L'événement NewTick est généré uniquement pour les Expert Advisors lorsqu'un nouveau tick est reçu pour un symbole, sur le graphique auquel l'Expert Advisor est attaché. Il est inutile de définir la fonction OnTick() dans un indicateur ou un script personnalisé, car l'événement NewTick n'est pas généré pour eux ...".

Raison: