Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1364

 

Pode dizer-me, por favor, como declarar uma matriz numa classe a fim de a retirar numa 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;
  }
 
Quando se cria uma matriz para"cálculos intermédios" de um indicador, pode-se simplesmente criá-lo e tudo funciona, ou pode-se especificar a propriedade INDICADOR_CALCULAÇÃO.
Para quê? Quais são as possibilidades?
 
Evgeny Dyuka #:
Quando se cria uma matriz para"cálculos intermediários" de um indicador, pode-se criá-lo e fazer tudo funcionar, ou pode-se especificar a propriedade INDICADOR_CALCULAÇÃO.
Para quê? Quais são as possibilidades?

Se tiver ligado uma matriz dinâmica com um buffer indicador, o terminal irá atribuir memória para esta matriz e o tamanho desta matriz será igual ao número de barras num gráfico

isto aplica-se tanto aos amortecedores indicadores INDICADOR_DATA utilizados para desenho como aos INDICADOR_CALCULATIONS - amortecedores auxiliares para cálculos

 
Igor Makanu #:

Se tiver ligado uma matriz dinâmica com um buffer indicador, o terminal irá atribuir memória para esta matriz e o tamanho desta matriz será igual ao número de barras num gráfico

isto aplica-se tanto aos amortecedores indicadores INDICADOR_DATA utilizados para desenho como aos INDICADOR_CALCULATIONS - amortecedores auxiliares para cálculos

Já está, obrigado
 
Pode dizer-me se é possível magnetizar objectos gráficos (linhas de tendência, grelhas de fibo) para indicadores na plataforma MT5? Por exemplo, se o valor da grelha fibo "0" for magnetizado para a média móvel. Vai directamente para a média móvel em pips.
 
Um objecto gráfico tem de ser fixado num local específico na janela gráfica. Por exemplo, um quadrado no canto inferior esquerdo. Há CHART_PRICE_MIN para definir coordenadas por Y, mas como definir o tempo mínimo por X?
Não encontrei nada adequado em ENUM_CHART_PROPERTY_INTEGER

ou farei uma pergunta mais ampla. Como fixar correctamente a posição de um objecto na janela do gráfico (por exemplo, "centrado") sem o ligar ao próprio gráfico?


 
Existe uma propriedade gráfica CHART_SCALEFIX_11 "1:1 scale mode" e não é revelado para que serve e como utilizá-la.
É para ligar os tamanhos dos objectos gráficos à escala?
Em caso afirmativo, em que unidades e como especificar os tamanhos dos objectos.

Em geral, como ligar os objectos de desenho à escala do gráfico?
 
Evgeny Dyuka #:
Um objecto gráfico tem de ser fixado num local específico na janela gráfica. Por exemplo, um quadrado no canto inferior esquerdo. Há CHART_PRICE_MIN para definir coordenadas por Y, mas como definir o tempo mínimo por X?
Não encontrei nada adequado em ENUM_CHART_PROPERTY_INTEGER

ou farei uma pergunta mais ampla. Como fixar correctamente a posição de um objecto na janela do gráfico (por exemplo, "centrado") sem o ligar ao próprio gráfico?


Preciso realmente deste conhecimento secreto
 
Evgeny Dyuka #:
Existe uma propriedade gráfica CHART_SCALEFIX_11 "1:1 scale mode" e não é revelado para que serve e como utilizá-la.
É para ligar os tamanhos dos objectos gráficos à escala?
Em caso afirmativo, em que unidades e como especificar os tamanhos dos objectos.

Em geral, como associar correctamente os objectos de desenho à escala do mapa?
... e isso também.
 
Evgeny Dyuka #:
É necessário fixar o objecto gráfico num determinado local da janela do gráfico. Por exemplo, um quadrado no canto inferior esquerdo. Há CHART_PRICE_MIN para a coordenada Y, mas como posso saber o tempo mínimo por X?
Não encontrei nada adequado em ENUM_CHART_PROPERTY_INTEGER

ou farei uma pergunta mais ampla. Como fixar correctamente a posição de um objecto na janela do gráfico (por exemplo, "centrado") sem o ligar ao próprio gráfico?


TABELA_PRIMEIRA_BARRA_VISÍVEL

Número da primeira barra visível no gráfico. A indexação das barras corresponde à série cronológica.

int r/o


Mas nem todos os objectos podem ser ligados desta forma.

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