初心者の方からの質問 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」が移動平均 線に磁化されている場合。 そのまま移動平均線にpipsで入ってしまいます。
 
グラフオブジェクトは、グラフウィンドウの特定の位置に固定する必要があります。例えば、左下の四角。Y の座標を定義するCHART_PRICE_MIN はありますが、X の最小時間はどのように定義するのですか?
ENUM_CHART_PROPERTY_INTEGER

で適当なものが見つかりませんでした。 あるいは、もっと広い範囲で質問させていただきます。チャート自体にリンクさせずに、チャートウィンドウ内のオブジェクトの位置を正しく固定する方法(例えば「中央揃え」)


 
CHART_SCALEFIX_11"1:1スケールモード "というグラフプロパティがありますが、何のためにあるのか、どのように使うのかが開示されていません。
グラフィカルなオブジェクトのサイズをスケールにバインドすることでしょうか。
もしそうなら、どのような単位で、どのようにオブジェクトのサイズを指定するのか。

一般的に、描画オブジェクトとグラフィックのスケールをリンクさせるにはどうすればよいのでしょうか。
 
Evgeny Dyuka #:
グラフオブジェクトは、グラフウィンドウの特定の位置に固定する必要があります。例えば、左下の四角。Y の座標を定義するCHART_PRICE_MIN はありますが、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

チャート上の最初の可視バーの番号。バーのインデックスが時系列に 対応している。

int r/o


しかし、すべてのオブジェクトがこの方法でバインドできるわけではありません。

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