初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1364

 

你能告诉我如何在一个类中声明一个数组,以便在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;
  }
 
当你为一个指标的"中间计算"创建一个数组时,你可以直接创建它,一切都能正常工作,或者你可以指定INDICATOR_CALCULATION 属性。
为了什么?有哪些可能性?
 
Evgeny Dyuka #:
当你为一个指标的"中间计算"创建一个数组时,你可以创建它并使其一切正常,或者你可以指定INDICATOR_CALCULATION 属性。
为了什么?有哪些可能性?

如果你已经将一个动态数组与一个指标缓冲区连接起来,终端将为这个数组分配内存,这个数组的大小将等于图表中的条数。

这适用于用于绘图的指标缓冲区 INDICATOR_DATA 和 INDICATOR_CALCULATIONS - 用于计算的辅助缓冲区

 
Igor Makanu #:

如果你已经将一个动态数组与一个指标缓冲区连接起来,终端将为这个数组分配内存,这个数组的大小将等于图表中的条数。

这适用于用于绘图的指标缓冲区 INDICATOR_DATA 和 INDICATOR_CALCULATIONS - 用于计算的辅助缓冲区

明白了,谢谢
 
你能告诉我,是否可以在MT5平台上将图形对象(趋势线、菲博网格)磁化为指标?例如,如果菲博格的值 "0 "被磁化到移动平均线 上。 它就直接进入移动平均线的点。
 
一个图形对象必须固定在图形窗口的一个特定位置上。例如,左下角的一个正方形。有CHART_PRICE_MIN 来定义Y的坐标,但如何定义X的最小时间?
我在ENUM_CHART_PROPERTY_INTEGER

中没有找到合适的东西,或者我将提出一个更广泛的问题。如何正确固定一个对象在图表窗口中的位置(如 "居中"),而不把它与图表本身联系起来?


 
有一个CHART_SCALEFIX_11"1:1比例模式 "图形属性,但没有透露它的用途和如何使用。
是为了将图形对象的尺寸与比例尺绑定吗?
如果是,用什么单位,如何指定对象尺寸。

一般来说,如何将绘图对象与图形的比例联系起来?
 
Evgeny Dyuka #:
一个图形对象必须固定在图形窗口的一个特定位置上。例如,左下角的一个正方形。有CHART_PRICE_MIN 来定义Y的坐标,但如何定义X的最小时间?我在ENUM_CHART_PROPERTY_INTEGER 中没有找到合适的东西,或者我将提出一个更广泛的问题。如何正确固定一个对象在图表窗口中的位置(如 "居中"),而不把它与图表本身联系起来?




我真的需要这些秘密知识
 
Evgeny Dyuka #:
有一个CHART_SCALEFIX_11"1:1比例模式 "图形属性,但没有透露它的用途和如何使用。是为了将图形对象的尺寸与比例尺绑定吗?如果是,用什么单位,如何指定对象尺寸。一般来说,如何将绘图对象与地图比例尺正确联系起来?



...而这也是。
 
Evgeny Dyuka #:
有必要将图形对象锚定在图表窗口的某个位置。例如,在左下角的一个正方形。Y坐标有CHART_PRICE_MIN,但我怎么能知道 X坐标的最小时间?我在ENUM_CHART_PROPERTY_INTEGER 中没有找到合适的东西,否则我将提出一个更广泛的问题。如何正确固定一个对象在图表窗口中的位置(如 "居中"),而不把它与图表本身联系起来?




chart_first_visible_bar

图表上第一个可见条形图的编号。条形图的索引与时间序列 相对应。

英镑r/o


但并不是所有的对象都能以这种方式被绑定。

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