Array out of range in Need of help - ページ 3

 

よっしゃー

この間

 
Dark Kchlyzov:

わからない?

1週間または1ヶ月の場合、最短で何日目でしょうか?
 
なるほど、全期間にわたって
 
Low_D1_Level   = iLow (_Symbol,PERIOD_D1,1);   // Возвращает значение минимальной цены бара  D1

履歴の中で最も近い最小値は Low_1_Level よりも小さいので, .

コードを実行して、その動作を確認してください。

 
Dark Kchlyzov:

全期間、エラーが発生しない

ログを添付します

ファイル:
20201209.log  3729 kb
 
MakarFX:

全期間、エラーが発生しない

ログを添付します。

エラーは出ていないようですが、ログには

ログに 19:31:53.126 2016.12.15 00:00:00 Array EURUSD,H1: i = 456 Bar_data_D1 [i][2] = 1.04789 がありますね。

Min_D:104789 が low_D1 1.03660 よりも高いので、規約上、そうなるはずがない。

を置き換えるとエラーになり、正しく表示されます。

実際には、expression2 はエラーを隠しているだけ です。

i<ArrayRange(Bar_data_D1,0)
 for(int i = 1; ;i++)
    {
     Print(" i = ",i," Bar_data_D1 [i][2] = ",Bar_data_D1 [i][2]);
     if( Bar_data_D1 [i][2] < Low_D1_Level)
       {
        Min_D_Level = Bar_data_D1 [i][2];break;
       }
    } 


 
Dark Kchlyzov:


疑問があります。なぜ、ゼロではなく、最初の要素でループを開始するのですか?

 
Dark Kchlyzov:

もしよろしければ、正しい書き方を例示してください。

トレードの経験はありますが、MQL4はまだ勉強し始めたばかりです。

MqlRatesを使用する場合は、配列を宣言してください。

MqlRates Bar_data_D1[];

つまり、2次元の配列ではなく、1次元の配列を得ることができる。MqlRatesは標準的な構造体です(MQL4 Referenceの「言語の基礎」-「データ型」-「構造体、クラス、インターフェース」に記載されています)。この場合、必要なフィールドをすべて備えています。こんな風に声をかけることができます。

Bar_data_D1[i].high; Максимум свечи
Bar_data_D1[i].low; Минимум свечи

i は配列のインデックスである.

同じように、ローソク足のパラメータを記録するための独自の構造を作成することができます。Mqlratesより2つのフィールド(spreadとreal_volume)だけ小さくなりますが、これは必要ではありません。このような構成になります。

struct BarData
{ 
   datetime time;         // время начала периода 
   double   open;         // цена открытия 
   double   high;         // наивысшая цена за период 
   double   low;          // наименьшая цена за период 
   double   close;        // цена закрытия 
   long     tick_volume;  // тиковый объем 
};

このような構造体の配列を宣言すると、次のようになります。

BarData Bar_data_D1[];

構造体のメンバへのアクセスは、MqlRates構造 体のメンバへのアクセスと同様である。

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

そのとおりです。

 
Ihor Herasko:

MqlRates経由の場合、このように配列を宣言します。

つまり、2次元の配列ではなく、1次元の配列を得ることができる。MqlRatesは標準的な構造体です(MQL4リファレンスの「言語の基礎」-「データ型」-「構造体、クラス、インターフェース」で説明されています)。この場合、必要なフィールドをすべて備えています。こんな風に声をかけることができます。

i は配列のインデックスである.

同じように、ローソク足のパラメータを記録するための独自の構造を作成することができます。Mqlratesより2つのフィールド(spreadとreal_volume)だけ小さくなりますが、これは必要ではありません。このような構成になります。

このような構造体の配列を宣言すると、次のようになります。

構造体のメンバへのアクセスは、MqlRates構造 体のメンバへのアクセスと同様である。

OK、明日やってみるよ!

よろしくお願いします。わかったらお知らせします。