Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1364

 

Können Sie mir bitte sagen, wie man ein Array in einer Klasse deklariert, um es in einem EA herauszuziehen?

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;
  }
 
Wenn Sie ein Array für"Zwischenberechnungen" eines Indikators erstellen, können Sie es einfach erstellen und alles funktioniert, oder Sie können die Eigenschaft INDICATOR_CALCULATION angeben.
Und wozu? Was sind die Möglichkeiten?
 
Evgeny Dyuka #:
Wenn Sie ein Array für"Zwischenberechnungen" eines Indikators erstellen, können Sie es erstellen und alles funktionieren lassen, oder Sie können die Eigenschaft INDICATOR_CALCULATION angeben.
Und wozu? Was sind die Möglichkeiten?

Wenn Sie ein dynamisches Array mit einem Indikatorpuffer verbunden haben, weist das Terminal Speicher für dieses Array zu und die Größe dieses Arrays entspricht der Anzahl der Balken in einem Diagramm

dies gilt sowohl für die Indikatorpuffer INDICATOR_DATA, die zum Zeichnen verwendet werden, als auch für INDICATOR_CALCULATIONS - Hilfspuffer für Berechnungen

 
Igor Makanu #:

Wenn Sie ein dynamisches Array mit einem Indikatorpuffer verbunden haben, weist das Terminal Speicher für dieses Array zu und die Größe dieses Arrays entspricht der Anzahl der Balken in einem Diagramm

dies gilt sowohl für die Indikatorpuffer INDICATOR_DATA, die zum Zeichnen verwendet werden, als auch für INDICATOR_CALCULATIONS - Hilfspuffer für Berechnungen

Verstanden, danke
 
Können Sie mir sagen, ob es möglich ist, grafische Objekte (Trendlinien, Fibo-Gitter) zu Indikatoren in der MT5-Plattform zu magnetisieren? Wenn zum Beispiel der Wert des Fibo-Gitters "0" auf den gleitenden Durchschnitt magnetisiert wird, geht er direkt in den gleitenden Durchschnitt in Pips über.
 
Ein grafisches Objekt muss an einer bestimmten Stelle im Grafikfenster fixiert werden. Zum Beispiel ein Quadrat in der unteren linken Ecke. Es gibt CHART_PRICE_MIN, um Koordinaten nach Y zu definieren, aber wie kann man die minimale Zeit nach X definieren?
Ich habe in ENUM_CHART_PROPERTY_INTEGER nichts Passendes gefunden

. Oder ich stelle eine weitergehende Frage. Wie kann man die Position eines Objekts im Diagrammfenster korrekt festlegen (z. B. "zentriert"), ohne es mit dem Diagramm selbst zu verknüpfen?


 
Es gibt die Diagrammeigenschaft CHART_SCALEFIX_11 "1:1-Skalierungsmodus", und es wird nicht angegeben, wofür sie gedacht ist und wie sie zu verwenden ist.
Sollen die Größen von grafischen Objekten an den Maßstab gebunden werden?
Wenn ja, in welchen Einheiten und wie man die Objektgrößen angibt.

Wie kann man generell Zeichenobjekte mit dem Maßstab der Grafik verknüpfen?
 
Evgeny Dyuka #:
Ein grafisches Objekt muss an einer bestimmten Stelle im Grafikfenster fixiert werden. Zum Beispiel ein Quadrat in der unteren linken Ecke. Es gibt CHART_PRICE_MIN, um Koordinaten in Y zu definieren, aber wie kann man die minimale Zeit in X definieren?
Ich habe in ENUM_CHART_PROPERTY_INTEGER nichts Passendes gefunden

. Oder ich stelle eine weitergehende Frage. Wie kann man die Position eines Objekts im Diagrammfenster korrekt festlegen (z. B. "zentriert"), ohne es mit dem Diagramm selbst zu verknüpfen?


Ich brauche dieses geheime Wissen wirklich
 
Evgeny Dyuka #:
Es gibt die Diagrammeigenschaft CHART_SCALEFIX_11 "1:1-Skalierungsmodus", und es wird nicht angegeben, wofür sie gedacht ist und wie sie zu verwenden ist.
Sollen die Größen von grafischen Objekten an den Maßstab gebunden werden?
Wenn ja, in welchen Einheiten und wie man die Objektgrößen angibt.

Wie kann man generell Zeichenobjekte korrekt mit dem Kartenmaßstab verknüpfen?
... und auch das.
 
Evgeny Dyuka #:
Es ist notwendig, das grafische Objekt an einer bestimmten Stelle des Diagrammfensters zu verankern. Zum Beispiel ein Quadrat in der unteren linken Ecke. Es gibt CHART_PRICE_MIN für die Y-Koordinate, aber wie kann ich die Mindestzeit für X ermitteln?
Ich habe in ENUM_CHART_PROPERTY_INTEGER

nichts Passendes gefunden, sonst werde ich eine weitergehende Frage stellen. Wie kann man die Position eines Objekts im Diagrammfenster korrekt festlegen (z. B. "zentriert"), ohne es mit dem Diagramm selbst zu verknüpfen?


CHART_FIRST_VISIBLE_BAR

Nummer des ersten sichtbaren Balkens im Diagramm. Die Indexierung der Balken entspricht der Zeitreihe.

int r/o


Aber nicht alle Objekte können auf diese Weise gebunden werden.

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