Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1364

 

Potete dirmi come dichiarare un array in una classe per poterlo estrarre in 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;
  }
 
Quando si crea un array per i"calcoli intermedi" di un indicatore, si può semplicemente crearlo e tutto funziona, oppure si può specificare la proprietà INDICATOR_CALCULATION.
Per quale motivo? Quali sono le possibilità?
 
Evgeny Dyuka #:
Quando si crea una matrice per i"calcoli intermedi" di un indicatore, la si può creare e far funzionare tutto, oppure si può specificare la proprietà INDICATOR_CALCULATION.
Per quale motivo? Quali sono le possibilità?

Se avete collegato un array dinamico con un buffer di indicatori, il terminale alloca la memoria per questo array e la dimensione di questo array sarà uguale al numero di barre in un grafico

questo si applica ad entrambi i buffer indicatori INDICATOR_DATA usati per il disegno e INDICATOR_CALCULATIONS - buffer ausiliari per i calcoli

 
Igor Makanu #:

Se avete collegato un array dinamico con un buffer di indicatori, il terminale alloca la memoria per questo array e la dimensione di questo array sarà uguale al numero di barre in un grafico

questo si applica a entrambi i buffer indicatori INDICATOR_DATA usati per il disegno e INDICATOR_CALCULATIONS - buffer ausiliari per i calcoli

Capito, grazie
 
Potete dirmi se è possibile magnetizzare oggetti grafici (linee di tendenza, griglie fibo) agli indicatori nella piattaforma MT5? Per esempio, se il valore della griglia fibo "0" è magnetizzato alla media mobile, va direttamente nella media mobile in pip.
 
Un oggetto grafico deve essere fissato in una posizione specifica sulla finestra del grafico. Per esempio un quadrato nell'angolo in basso a sinistra. C'è CHART_PRICE_MIN per definire le coordinate secondo Y, ma come definire il tempo minimo secondo X?
Non ho trovato niente di adatto in ENUM_CHART_PROPERTY_INTEGER

o farò una domanda più ampia. Come fissare correttamente la posizione di un oggetto nella finestra del grafico (ad esempio "centrato") senza collegarlo al grafico stesso?


 
C'è una proprietà CHART_SCALEFIX_11 "modalità di scala 1:1" del grafico e non viene rivelato a cosa serve e come usarla.
È per legare le dimensioni degli oggetti grafici alla scala?
Se sì, in quali unità e come specificare le dimensioni degli oggetti.

In generale, come collegare gli oggetti di disegno alla scala del grafico?
 
Evgeny Dyuka #:
Un oggetto grafico deve essere fissato in una posizione specifica sulla finestra del grafico. Per esempio un quadrato nell'angolo in basso a sinistra. C'è CHART_PRICE_MIN per definire le coordinate secondo Y, ma come definire il tempo minimo secondo X?
Non ho trovato niente di adatto in ENUM_CHART_PROPERTY_INTEGER

o farò una domanda più ampia. Come fissare correttamente la posizione di un oggetto nella finestra del grafico (ad esempio "centrato") senza collegarlo al grafico stesso?


Ho davvero bisogno di questa conoscenza segreta
 
Evgeny Dyuka #:
C'è una proprietà del grafico CHART_SCALEFIX_11 "modalità di scala 1:1" e non viene rivelato a cosa serve e come usarla.
È per legare le dimensioni degli oggetti grafici alla scala?
Se sì, in quali unità e come specificare le dimensioni degli oggetti.

In generale, come associare correttamente gli oggetti di disegno alla scala della mappa?
... e anche quello.
 
Evgeny Dyuka #:
È necessario fissare l'oggetto grafico in un certo posto della finestra del grafico. Per esempio, un quadrato nell'angolo in basso a sinistra. C'è CHART_PRICE_MIN per la coordinata Y, ma come posso sapere il tempo minimo per X?
Non ho trovato niente di adatto in ENUM_CHART_PROPERTY_INTEGER

o farò una domanda più ampia. Come fissare correttamente la posizione di un oggetto nella finestra del grafico (ad esempio "centrato") senza collegarlo al grafico stesso?


GRAFICO_PRIMA_BARRA_VISIBILE

Numero della prima barra visibile sul grafico. L'indicizzazione delle barre corrisponde alla serie temporale.

int r/o


Ma non tutti gli oggetti possono essere legati in questo modo.

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