MQL5でOpen,Low,High,Closeのパラメータを取得するにはどうしたらいいですか? - ページ 10

 
//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   int q = rates_total;
   static datetime w = 0;
   
   if(w != time[q-1])
    { 
     w = time[q-1];
     Print("-------------------------------------------------------------------------------");
     Print("  time[q-1]  ",time[q-1],"  time[q-2]  ",time[q-2],"  time[q-3]  ",time[q-3],"  time[q-4]  ",time[q-4],"  time[q-5]  ",time[q-5]);
     Print("  open[q-1]  ",open[q-1],"  open[q-2]  ",open[q-2],"  open[q-3]  ",open[q-3],"  open[q-4]  ",open[q-4],"  open[q-5]  ",open[q-5]);
     Print("  high[q-1]  ",high[q-1],"  high[q-2]  ",high[q-2],"  high[q-3]  ",high[q-3],"  high[q-4]  ",high[q-4],"  high[q-5]  ",high[q-5]);
     Print("  low[q-1]  ",low[q-1],"  low[q-2]  ",low[q-2],"  low[q-3]  ",low[q-3],"  low[q-4]  ",low[q-4],"  low[q-5]  ",low[q-5]);
     Print("  close[q-1]  ",close[q-1],"  close[q-2]  ",close[q-2],"  close[q-3]  ",close[q-3],"  close[q-4]  ",close[q-4],"  close[q-5]  ",close[q-5]);
    }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

rate_total - 1]のインデックスを持つバーは、なぜ常にopen, close, high, lowの値が全て等しいのでしょうか?インデックスopen[rates_total - 1]は、時系列でのインデックス1に対応しないのでしょうか?つまり、Open[1]、Close[1]、...と同じである。をMT4で表示します。

しかし、もしかしたら、インデックス[rates_total - 1]は、時系列ではインデックス0に相当するのでしょうか?そうすると、[rates_total - 1]は現在のバーで、まだ形成されていないので、そのOCHLパラメータは等しいということになりますか。

 
Реter Konow:

rate_total - 1]のインデックスを持つバーは、なぜ常にopen, close, high, lowの値が全て等しいのでしょうか?インデックスopen[rates_total - 1]は、時系列でのインデックス1に対応しないのでしょうか?つまり、Open[1]、Close[1]、...と同じである。をMT4で表示します。

でも、もしかしたら、[rates_total - 1]というインデックスは、時系列のインデックス0に相当するのかもしれませんね。そうすると、[rates_total - 1]は現在のバーで、まだ形成されていないので、そのOCHLパラメータは等しいということになりますか。

デフォルトでは、MQL5のインジケータは以下のようなインデックスを持ちます(「0」と「rates_total-1」の例で)。

/*
   time[0]              -> D'2018.01.02 00:00:00'
   time[rates_total-1]  -> D'2018.12.31 22:00:00'
*/

チャートの一番右のバーには、「rates_total-1」という指標があるのがおわかりになると思います。しかし、インデックス "0 "は、チャートの一番左のバーに対応します。

 
Vladimir Karputov:

デフォルトでは、MQL5指標は以下のようなインデックスを持ちます(例として「0」と「rates_total-1」を使用します)。

ご覧の通り、チャートの一番右のバーには「rates_total-1」というインデックスがあります。0 "のインデックスは、チャートの一番左のバーに対応します。

右側が現在のもの?形成されていないもの?

一般に、私の理解では、rates_total-1 は現在のバーを指し、形成されていないので、タイマーのその OHCL パラメーターは等しい。

 
Реter Konow:
一番右のもの......それが現在のものですか? 形成されていないもの?

どんなチャートでも、GUIDEの一番右のバーが現在のバーで、形成途中のものです(つまり、その価格と出来高はすべていつでも変更可能です)。

 
Vladimir Karputov:

どんなチャートでも、GUIDEの一番右のバーが現在のバーで、形成途中のものです(つまり、その価格と出来高はすべていつでも変更可能です)。

はい、それはわかりました。ただ、インデックスが1になる前に、時系列のすべての値を等しくしていることに気がつきませんでした。つまり、電流が流れなくなるのです。
 
Реter Konow:
はい、それはわかりました。ただ、時系列でインデックス1を取得する前に、すべての値が等しくなっていることに驚きました。つまり、電流が流れなくなるのです。

もうひとつの指標となるものは何ですか?MQL5指標のチャートの一番右のバーには、「rates_total-1」というインデックスがあります。

 
Vladimir Karputov:

もうひとつの指標となるものは何ですか?MQL5指標のチャートの一番右のバーには、「rates_total-1」というインデックスがあります。

私の言っていることが理解できないのでしょう。rates_total-1 は現在のバーです。それは分かっています。BUT.は、時系列でのocl値が等しい。掲載したコードを確認してください。それこそ、知らなかった。
 
Реter Konow:
私の言っていることが理解できないのでしょう。rates_total-1 これが現在のバーです。それは分かっています。BUT.は、時系列でのocl値が等しい。掲載したコードを確認してください。それこそ、知らなかった。
あなたのコードは、バーが開いた瞬間の値だけを取ります。
 
Реter Konow:
私の言っていることが理解できないのでしょう。 rates_total-1 これが現在のバーです。それは分かっています。BUT.は、時系列でのocl値が等しい。掲載したコードを確認してください。それこそ、知らなかった。

現在のバー(チャート上の一番右)は、バーが生まれた瞬間に価格が等しくなります。これは基本中の基本で、バーが生まれたばかりで、すべての価格は同じです。新しいティックの到着とともに、現在のバー(チャートで一番右のバー)の価格が変化し始めます。


晴れていればいいのですが?バーが誕生した瞬間とそのOHLCは等しい。

 
Andrey Barinov:
あなたのコードは、バーが開いたときにのみ値を取ります

痛い、焦る、本人も気づいているはずなのに・・・。