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

 

Pouvez-vous me dire comment déclarer un tableau dans une classe afin de l'extraire dans une EA ?

m_pr_hl2[b]=MathAbs((iHigh(this.m_symbol,this.m_timeframe,b) + iLow(this.m_symbol,this.m_timeframe,b))/2);
class CNewBar : public CObject
  {
private:
   string            m_symbol;
   ENUM_TIMEFRAMES   m_timeframe;
   datetime          m_time;
   double            m_pr_hl2[];
   datetime          Time(void);
   string            Symbol(void)         { return this.m_symbol;    }
public:
   ENUM_TIMEFRAMES   Timeframe(void)      { return this.m_timeframe; }
   datetime          GetTime(void)        { return this.m_time;      } //  Возвращает время последнего обращения
   int               PriceHL2(void);      
   bool              IsNewBar(void);                                   //  Основная функция класса
                     CNewBar(const string symbol,const ENUM_TIMEFRAMES timeframe);
                    ~CNewBar(void) {;}
  };
//+------------------------------------------------------------------+
//| Конструктор                                                      |
//+------------------------------------------------------------------+
CNewBar::CNewBar(const string symbol,const ENUM_TIMEFRAMES timeframe) : m_time(0)
  {
   this.m_symbol = symbol;
   this.m_timeframe = (timeframe == PERIOD_CURRENT ? Period() : timeframe);
   m_rt=this.RatesTotal();
   m_pc=0;
   PriceHL2();
  }
//+------------------------------------------------------------------+
//| CNewBar Time Возвращает время нулевого бара                      |SERIES_LASTBAR_DATE
//+------------------------------------------------------------------+
datetime CNewBar::Time(void)
  {
   datetime array[1], ret;
   ret = CopyTime(this.m_symbol, this.m_timeframe, 0, 1, array) == 1 ? array[0] : 0;
   return(array[0]);
  }

//+------------------------------------------------------------------+
//| Расчет цены                                                      |
//+------------------------------------------------------------------+
int CNewBar::PriceHL2(void)
  {
   int res=ArrayResize(this.m_pr_hl2,this.m_rt);
   for(int b=this.m_pc; b<this.m_rt; b++)
      m_pr_hl2[b]=MathAbs((iHigh(this.m_symbol,this.m_timeframe,b) + iLow(this.m_symbol,this.m_timeframe,b))/2);
   return(res);
  }
//+------------------------------------------------------------------+
//| CNewBar IsNewBar Основная функция класса                         |
//+------------------------------------------------------------------+
bool CNewBar::IsNewBar(void)
  {
   datetime tm=this.Time();
   if(tm==0)
      return false;
   if(tm!=this.m_time)
     {
      //--- определяем время
      this.m_time=tm;
      this.PriceHL2();
      return true;
     }
   return false;
  }
 
Lorsque vous créez un tableau pour les"calculs intermédiaires" d'un indicateur, vous pouvez simplement le créer et tout fonctionne, ou vous pouvez spécifier la propriété INDICATOR_CALCULATION.
Pour quoi faire ? Quelles sont les possibilités ?
 
Evgeny Dyuka #:
Lorsque vous créez un tableau pour les"calculs intermédiaires" d'un indicateur, vous pouvez le créer et faire en sorte que tout fonctionne, ou vous pouvez spécifier la propriété INDICATOR_CALCULATION.
Pour quoi faire ? Quelles sont les possibilités ?

Si vous avez connecté un tableau dynamique avec un tampon d'indicateur, le terminal allouera de la mémoire pour ce tableau et la taille de ce tableau sera égale au nombre de barres dans un graphique.

Ceci s'applique aux deux tampons indicateurs INDICATOR_DATA utilisés pour le dessin et INDICATOR_CALCULATIONS - tampons auxiliaires pour les calculs.

 
Igor Makanu #:

Si vous avez connecté un tableau dynamique avec un tampon d'indicateur, le terminal allouera de la mémoire pour ce tableau et la taille de ce tableau sera égale au nombre de barres dans un graphique.

Ceci s'applique aux deux tampons indicateurs INDICATOR_DATA utilisés pour le dessin et INDICATOR_CALCULATIONS - tampons auxiliaires pour les calculs.

Je l'ai eu, merci.
 
Pouvez-vous me dire s'il est possible d'aimanter des objets graphiques (lignes de tendance, grilles de fibo) à des indicateurs dans la plateforme MT5 ? Par exemple, si la valeur de la grille fibo "0" est magnétisée à la moyenne mobile, elle va directement dans la moyenne mobile en pips.
 
Un objet graphique doit être fixé à un endroit précis de la fenêtre graphique. Par exemple, un carré dans le coin inférieur gauche. Il y a CHART_PRICE_MIN pour définir les coordonnées en Y, mais comment définir le temps minimal en X ?
Je n'ai rien trouvé de convenable dans ENUM_CHART_PROPERTY_INTEGER

Ou je vais poser une question plus large. Comment fixer correctement la position d'un objet dans la fenêtre du graphique (par exemple "centré") sans le lier au graphique lui-même ?


 
Il existe une propriété graphique CHART_SCALEFIX_11 "1:1 scale mode" et il n'est pas indiqué à quoi elle sert et comment l'utiliser.
Est-ce pour lier les tailles des objets graphiques à l'échelle ?
Si oui, dans quelles unités et comment spécifier les tailles des objets.

En général, comment lier les objets du dessin à l'échelle du graphique ?
 
Evgeny Dyuka #:
Un objet graphique doit être fixé à un endroit précis de la fenêtre graphique. Par exemple, un carré dans le coin inférieur gauche. Il y a CHART_PRICE_MIN pour définir les coordonnées par Y, mais comment définir le temps minimal par X ?
Je n'ai rien trouvé de convenable dans ENUM_CHART_PROPERTY_INTEGER

ou je poserai une question plus large. Comment fixer correctement la position d'un objet dans la fenêtre du graphique (par exemple "centré") sans le lier au graphique lui-même ?


J'ai vraiment besoin de cette connaissance secrète
 
Evgeny Dyuka #:
Il existe une propriété graphique CHART_SCALEFIX_11 "1:1 scale mode" et il n'est pas indiqué à quoi elle sert et comment l'utiliser.
Est-ce pour lier les tailles des objets graphiques à l'échelle ?
Si oui, dans quelles unités et comment spécifier les tailles des objets.

En général, comment associer correctement les objets de dessin à l'échelle de la carte ?
... et ça aussi.
 
Evgeny Dyuka #:
Il est nécessaire de fixer l'objet graphique à un endroit précis de la fenêtre graphique. Par exemple, un carré dans le coin inférieur gauche. Il y a CHART_PRICE_MIN pour la coordonnée Y mais comment puis-je connaître le temps minimum par X ?
Je n'ai rien trouvé de convenable dans ENUM_CHART_PROPERTY_INTEGER

ou je poserai une question plus large. Comment fixer correctement la position d'un objet dans la fenêtre du graphique (par exemple "centré") sans le lier au graphique lui-même ?


GRAPHIQUE_PREMIÈRE_BARRE_VISIBLE

Numéro de la première barre visible sur le graphique. L'indexation des barres correspond à la série chronologique.

int r/o


Mais tous les objets ne peuvent pas être liés de cette manière.

Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
  • www.mql5.com
Примеры работы с графиком - Константы графиков - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5