Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1364

 

¿Podríais decirme cómo declarar un array en una clase para sacarlo en un 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;
  }
 
Cuando se crea una matriz para los"cálculos intermedios" de un indicador, se puede simplemente crearla y todo funciona, o se puede especificar la propiedad INDICATOR_CALCULATION.
¿Para qué? ¿Cuáles son las posibilidades?
 
Evgeny Dyuka #:
Cuando se crea una matriz para los"cálculos intermedios" de un indicador, se puede crear y hacer que todo funcione, o se puede especificar la propiedad INDICATOR_CALCULATION.
¿Para qué? ¿Cuáles son las posibilidades?

Si ha conectado una matriz dinámica con un búfer de indicador, el terminal asignará memoria para esta matriz y el tamaño de esta matriz será igual al número de barras de un gráfico

esto se aplica tanto a los búferes de los indicadores INDICATOR_DATA utilizados para el dibujo como a los INDICATOR_CALCULATIONS - búferes auxiliares para los cálculos

 
Igor Makanu #:

Si ha conectado un array dinámico con un buffer de indicadores, el terminal asignará memoria para este array y el tamaño de este array será igual al número de barras de un gráfico

esto se aplica tanto a los búferes de los indicadores INDICATOR_DATA utilizados para el dibujo como a los INDICATOR_CALCULATIONS - búferes auxiliares para los cálculos

Lo tengo, gracias.
 
¿Pueden decirme si es posible magnetizar objetos gráficos (líneas de tendencia, cuadrículas de fibo) a indicadores en la plataforma MT5? Por ejemplo, si el valor de la rejilla de fibo "0" se magnetiza a la media móvil, sólo va a la media móvil en pips.
 
Un objeto gráfico debe fijarse en un lugar específico de la ventana del gráfico. Por ejemplo, un cuadrado en la esquina inferior izquierda. Existe CHART_PRICE_MIN para definir la coordenada por Y, pero ¿cómo definir el tiempo mínimo por X?
No he encontrado nada adecuado en ENUM_CHART_PROPERTY_INTEGER

o haré una pregunta más amplia. ¿Cómo fijar correctamente la posición de un objeto en la ventana del gráfico (por ejemplo, "centrado") sin vincularlo al propio gráfico?


 
Existe una propiedad gráfica CHART_SCALEFIX_11 "modo de escala 1:1" y no se revela para qué sirve ni cómo se utiliza.
¿Se trata de vincular los tamaños de los objetos gráficos a la escala?
En caso afirmativo, en qué unidades y cómo especificar los tamaños de los objetos.

En general, ¿cómo vincular los objetos de dibujo a la escala del gráfico?
 
Evgeny Dyuka #:
Un objeto gráfico debe fijarse en un lugar específico de la ventana del gráfico. Por ejemplo, un cuadrado en la esquina inferior izquierda. Existe CHART_PRICE_MIN para definir la coordenada en Y, pero ¿cómo definir el tiempo mínimo en X?
No he encontrado nada adecuado en ENUM_CHART_PROPERTY_INTEGER

O haré una pregunta más amplia. ¿Cómo fijar correctamente la posición de un objeto en la ventana del gráfico (por ejemplo, "centrado") sin vincularlo al propio gráfico?


Realmente necesito este conocimiento secreto
 
Evgeny Dyuka #:
Existe una propiedad gráfica CHART_SCALEFIX_11 "modo de escala 1:1" y no se revela para qué sirve ni cómo utilizarla.
¿Se trata de vincular los tamaños de los objetos gráficos a la escala?
En caso afirmativo, en qué unidades y cómo especificar los tamaños de los objetos.

En general, ¿cómo asociar correctamente los objetos de dibujo con la escala del mapa?
... y eso también.
 
Evgeny Dyuka #:
Es necesario fijar el objeto gráfico en un lugar determinado de la ventana del gráfico. Por ejemplo, un cuadrado en la esquina inferior izquierda. Existe CHART_PRICE_MIN para la coordenada Y pero ¿cómo puedo saber el tiempo mínimo por X?
No he encontrado nada adecuado en ENUM_CHART_PROPERTY_INTEGER

o haré una pregunta más amplia. ¿Cómo fijar correctamente la posición de un objeto en la ventana del gráfico (por ejemplo, "centrado") sin vincularlo al propio gráfico?


BARRA_PRIMERA_VISIBLE_DEL_GRÁFICO

Número de la primera barra visible en el gráfico. La indexación de las barras corresponde a la serie temporal.

int r/o


Pero no todos los objetos pueden vincularse de esta manera.

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