Array out of range in Need of help - ページ 4 1234567891011...17 新しいコメント Tretyakov Rostyslav 2020.12.09 19:55 #31 Dark Kchlyzov:エラーは出ていないようですが、ログには出ています。 元々、ニアミニマム不足で正解でしたね は2002年から走り続け、2016年にはすべてがうまくいっています。 Dark Kchlyzov 2020.12.10 05:12 #32 MakarFX:当初は正解だった、ニアミニマムがないためは2002年から走り続け、2016年にはすべてがうまくいっている. AUDUSD 2020 同じく。2式のサイクルから削除するとエラーが発生し、それを残すとエラーが発生しない、ちょうどその日に我々はラインを再描画しない 同じチェックをしているのか? ループが1001本で途切れるのが不思議(配列の限界?) 2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: 'Test_Level.mq4' (51,59) の配列は範囲外です。 2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 1001 Bar_data_D1 [i][2] = 0.77324となります。 2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 1000 Bar_data_D1 [i][2] = 0.76934 2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 999 Bar_data_D1 [i][2] = 0.76907 2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 998 Bar_data_D1 [i][2] = 0.76963となる。 2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 997 Bar_data_D1 [i][2] = 0.7548となります。 //+------------------------------------------------------------------+ //| Test_Level.mq4 | //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict double Bar_data_D1 [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров D1 double Low_D1_Level; // Возвращает значение минимальной цены бара D1 double Min_D_Level ; // ближайшей минимальный D уровень datetime Time_Day; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { Level(); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { On_Timer(); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Функция Level //+------------------------------------------------------------------+ void Level() { ArrayCopyRates(Bar_data_D1,_Symbol,PERIOD_D1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров Low_D1_Level = iLow (_Symbol,PERIOD_D1,1); // Возвращает значение минимальной цены бара D1 //--- Min_D_Leve //for(int i = 1; i<ArrayRange(Bar_data_D1,0) ;i++) for(int i = 1; ;i++) { Print(" i = ",i," Bar_data_D1 [i][2] = ",Bar_data_D1 [i][2]); if(Bar_data_D1 [i][2]>=0) { if( Bar_data_D1 [i][2] < Low_D1_Level) { Min_D_Level = Bar_data_D1 [i][2];break; } } } //+-------------------------Low_D1_Level----------------------------+ if(ObjectFind("Low_D1")!=Low_D1_Level) { ObjectDelete("Low_D1"); if(ObjectFind("Low_D1")!=0) { ObjectCreate("Low_D1",OBJ_HLINE, 0, Time[0],Low_D1_Level); ObjectSet("Low_D1", OBJPROP_COLOR, clrMaroon); ObjectSet("Low_D1", OBJPROP_WIDTH, 1); } } if(ObjectFind("Low_D1_label")!=Low_D1_Level) { ObjectDelete("Low_D1_label"); if(ObjectFind("Low_D1_label") != 0) { ObjectCreate("Low_D1_label", OBJ_TEXT, 0, Time[13], Low_D1_Level); ObjectSetText("Low_D1_label", "Low_D1: " + DoubleToStr(Low_D1_Level,_Digits), 8,"Verdana", Brown); } } //+-------------------------Min_D_Level----------------------------+ if(ObjectFind("Min_D")!= Min_D_Level) { ObjectDelete("Min_D"); if(ObjectFind("Min_D")!=0) { ObjectCreate("Min_D",OBJ_HLINE, 0, Time[0],Min_D_Level); ObjectSet("Min_D", OBJPROP_COLOR, clrMaroon); ObjectSet("Min_D", OBJPROP_WIDTH, 1); } } if(ObjectFind("Min_D_label")!=Min_D_Level) { ObjectDelete("Min_D_label"); if(ObjectFind("Min_D_label") != 0) { ObjectCreate("Min_D_label", OBJ_TEXT, 0, Time[30], Min_D_Level); ObjectSetText("Min_D_label", "Min_D: " + DoubleToStr(Min_D_Level,_Digits), 8,"Verdana", Brown); } } } //+------------------------------------------------------------------+ //| функция удаление всех объектов созданных советником //+------------------------------------------------------------------+ void DestroyObject() { int tot=ObjectsTotal(); for( int i=tot; i>=0; i--) { if(ObjectName(i)=="Low_MN1"){ObjectDelete(0,"Low_MN1");Print("<< Объект Low_MN удалён >>");} if(ObjectName(i)=="Low_MN1_label"){ObjectDelete(0,"Low_MN1_label");Print("<< Объект Low_MN1_label удалён >>");} if(ObjectName(i)=="Min_D"){ObjectDelete(0,"Min_D");Print("<< Объект Min_D удалён >>");} if(ObjectName(i)=="Min_D_label"){ObjectDelete(0,"Min_D_label");Print("<< Объект Min_D_label удалён >>");} } } //+-------------------------------------------------------------------------+ // функция Timer //+-------------------------------------------------------------------------+ void On_Timer() { if(Day()!= Time_Day) { Level(); Time_Day = Day(); } } Finding the maximum and データベースの操作 - DatabasePrepare Modifying a pending order Dark Kchlyzov 2020.12.10 05:32 #33 Aleksei Stepanenko:疑問があります。なぜ、ゼロからではなく、最初の要素からループを開始するのですか? Low_D1_Levelが前日のレベルだとすると、Low_D1_Levelから Min_D_Levelを探すとi=1になるはずですが、私の勘違い でしょうか? Tretyakov Rostyslav 2020.12.10 07:18 #34 Dark Kchlyzov:1001本でループが切れるのはおかしい(配列の限界か?) 必ずしもそうではない 2020.12.10 08:16:47.604 EURUSD,H1: 265 tick events (265 bars, 13782 bar states) processed in 0:00:53.781 (total time 0:00:55.813) 2020.12.10 08:16:47.604 2016.12.16 00:00:00 Testing pass stopped due to a critical error in the EA 2020.12.10 08:16:47.604 2016.12.16 00:00:00 Array EURUSD,H1: array out of range in 'Array.mq4' (51,59) 2020.12.10 08:16:47.604 2016.12.16 00:00:00 Array EURUSD,H1: i = 1011 Bar_data_D1 [i][2] = 1.32667 2020.12.10 08:16:47.604 2016.12.16 00:00:00 Array EURUSD,H1: i = 1010 Bar_data_D1 [i][2] = 1.32642 2020.12.10 08:16:47.604 2016.12.16 00:00:00 Array EURUSD,H1: i = 1009 Bar_data_D1 [i][2] = 1.32857 2020.12.10 08:16:47.604 2016.12.16 00:00:00 Array EURUSD,H1: i = 1008 Bar_data_D1 [i][2] = 1.335 2020.12.10 08:16:47.604 2016.12.16 00:00:00 Array EURUSD,H1: i = 1007 Bar_data_D1 [i][2] = 1.34244 2020.12.10 08:16:47.604 2016.12.16 00:00:00 Array EURUSD,H1: i = 1006 Bar_data_D1 [i][2] = 1.3414 2020.12.10 08:16:47.604 2016.12.16 00:00:00 Array EURUSD,H1: i = 1005 Bar_data_D1 [i][2] = 1.34815 2020.12.10 08:16:47.604 2016.12.16 00:00:00 Array EURUSD,H1: i = 1004 Bar_data_D1 [i][2] = 1.35409 2020.12.10 08:16:47.604 2016.12.16 00:00:00 Array EURUSD,H1: i = 1003 Bar_data_D1 [i][2] = 1.35726 Tretyakov Rostyslav 2020.12.10 07:24 #35 AUDUSDは、私にとってそのようなものではありません。 2020.12.10 08:22:28.794 AUDUSD,H1: 121 tick events (121 bars, 3166 bar states) processed in 0:00:00.000 (total time 0:00:02.016) 2020.12.10 08:22:28.794 2020.03.10 00:00:00 Testing pass stopped due to a critical error in the EA 2020.12.10 08:22:28.794 2020.03.10 00:00:00 Array AUDUSD,H1: array out of range in 'Array.mq4' (51,59) 2020.12.10 08:22:28.794 2020.03.10 00:00:00 Array AUDUSD,H1: i = 1049 Bar_data_D1 [i][2] = 0.71997 2020.12.10 08:22:28.794 2020.03.10 00:00:00 Array AUDUSD,H1: i = 1048 Bar_data_D1 [i][2] = 0.71453 2020.12.10 08:22:28.794 2020.03.10 00:00:00 Array AUDUSD,H1: i = 1047 Bar_data_D1 [i][2] = 0.71557 2020.12.10 08:22:28.794 2020.03.10 00:00:00 Array AUDUSD,H1: i = 1046 Bar_data_D1 [i][2] = 0.7117599999999999 2020.12.10 08:22:28.794 2020.03.10 00:00:00 Array AUDUSD,H1: i = 1045 Bar_data_D1 [i][2] = 0.7108 2020.12.10 08:22:28.794 2020.03.10 00:00:00 Array AUDUSD,H1: i = 1044 Bar_data_D1 [i][2] = 0.71086 2020.12.10 08:22:28.794 2020.03.10 00:00:00 Array AUDUSD,H1: i = 1043 Bar_data_D1 [i][2] = 0.7160300000000001 2020.12.10 08:22:28.794 2020.03.10 00:00:00 Array AUDUSD,H1: i = 1042 Bar_data_D1 [i][2] = 0.7281 2020.12.10 08:22:28.794 2020.03.10 00:00:00 Array AUDUSD,H1: i = 1041 Bar_data_D1 [i][2] = 0.73392 Tretyakov Rostyslav 2020.12.10 08:12 #36 Dark Kchlyzov: よくわかりませんが、次のようなものを挿入する必要があるのではないでしょうか。 if(Bar_data_D1 [i][2]==EMPTY_VALUE)Bar_data_D1 [i][2]=Low_D1_Level; Dark Kchlyzov 2020.12.10 10:34 #37 MakarFX:よくわかりませんが、次のようなものを入れる必要があるのではないでしょうか。 インジケーター用とか? EMPTY_VALUE インジケーターバッファに 空値がある Dark Kchlyzov 2020.12.10 10:45 #38 Dark Kchlyzov: インジケーターのようなもの? EMPTY_VALUE インジケーターバッファに 空値がある さて、いよいよ構造の研究です MqlRatesをどこでどのように正しく宣言 するか Bar_data_D1[i].high; Максимум свечи Bar_data_D1[i].low; Минимум свечи もし、時間があって、それほど面倒でなければ、できます(コードに例があります)。 C++のコードは情報量が多いのですが、MQL4では何がどうなっているのか、明確な説明がありません。 Tretyakov Rostyslav 2020.12.10 11:45 #39 Dark Kchlyzov: 時間があって、面倒でなければできる(コード内の例)。 すみません、私はプログラマーではありません、ただ興味があるだけです。 EMPTY_VALUE の代わりにNULL を使用することができます。 Ihor Herasko 2020.12.10 12:54 #40 Dark Kchlyzov:さて、いよいよ構造の研究ですMqlRatesをどこでどのように正しく宣言 するか もし、時間があって、それほど面倒でなければ(コードの例)C++の情報はたくさん持っているのですが、MQL4は私としては、何をどうすればいいのかがきちんと説明されていないんです。 他に何を足せばいいのかわからないくらいです。原則として、主な例を挙げました。これがそのコードです。だから、不明な点は教えてもらうことをお勧めします。 1234567891011...17 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
エラーは出ていないようですが、ログには出ています。
元々、ニアミニマム不足で正解でしたね
は2002年から走り続け、2016年にはすべてがうまくいっています。
当初は正解だった、ニアミニマムがないため
は2002年から走り続け、2016年にはすべてがうまくいっている.
AUDUSD 2020 同じく。2式のサイクルから削除するとエラーが発生し、それを残すとエラーが発生しない、ちょうどその日に我々はラインを再描画しない
同じチェックをしているのか?
ループが1001本で途切れるのが不思議(配列の限界?)
2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: 'Test_Level.mq4' (51,59) の配列は範囲外です。
2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 1001 Bar_data_D1 [i][2] = 0.77324となります。
2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 1000 Bar_data_D1 [i][2] = 0.76934
2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 999 Bar_data_D1 [i][2] = 0.76907
2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 998 Bar_data_D1 [i][2] = 0.76963となる。
2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 997 Bar_data_D1 [i][2] = 0.7548となります。
疑問があります。なぜ、ゼロからではなく、最初の要素からループを開始するのですか?
Low_D1_Levelが前日のレベルだとすると、Low_D1_Levelから Min_D_Levelを探すとi=1になるはずですが、私の勘違い でしょうか?
1001本でループが切れるのはおかしい(配列の限界か?)
必ずしもそうではない
AUDUSDは、私にとってそのようなものではありません。
よくわかりませんが、次のようなものを挿入する必要があるのではないでしょうか。
よくわかりませんが、次のようなものを入れる必要があるのではないでしょうか。
インジケーター用とか?
EMPTY_VALUE
インジケーターバッファに 空値がある
インジケーターのようなもの?
EMPTY_VALUE
インジケーターバッファに 空値がある
さて、いよいよ構造の研究です
MqlRatesをどこでどのように正しく宣言 するか
もし、時間があって、それほど面倒でなければ、できます(コードに例があります)。
C++のコードは情報量が多いのですが、MQL4では何がどうなっているのか、明確な説明がありません。
Dark Kchlyzov:
時間があって、面倒でなければできる(コード内の例)。
すみません、私はプログラマーではありません、ただ興味があるだけです。
EMPTY_VALUE の代わりにNULL を使用することができます。
さて、いよいよ構造の研究です
MqlRatesをどこでどのように正しく宣言 するか
もし、時間があって、それほど面倒でなければ(コードの例)
C++の情報はたくさん持っているのですが、MQL4は私としては、何をどうすればいいのかがきちんと説明されていないんです。
他に何を足せばいいのかわからないくらいです。原則として、主な例を挙げました。これがそのコードです。だから、不明な点は教えてもらうことをお勧めします。