[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 131

 
Vinin:

テーマの継続

前ページはこちらhttps://www.mql5.com/ru/forum/111497

MT4テスターの最適化結果や最適化グラフに何も表示されず、ただ空っぽの状態です。助けて
 
Sergey_Rogozin:

1次元配列ValueArr[] を埋めようとしています。

正しいかどうかわからない。

GetValue() 関数は、各ティックでint値を出力します。ValueArr[] を埋めるには?

私の試みは正しいのでしょうか?

配列のサイズは、1目盛りごとに1つずつ増加させる必要があるのでしょうか?その場合、そのサイズは、利用可能なコンピュータのメモリによって制限されます。

関数 ArrayResize() を使って配列 ValueArr[] のサイズを大きくし、新しいデータを配列に追加します。もう一度言いますが、どこに追加するのですか?最初か最後か?

もし最初に、以前に書き込んだデータを移動させないと、新しく書き込んだデータで上書きされてしまうからです。

最後になら、では。

最初は配列のサイズ=0とし、開始時に1だけ増やして(size++)、配列のサイズを変更 し(ArrayResize(ValueArr, size); )、GetValue()で得られたサイズ-1のインデックスのセル(ValueArr[])にデータを書き込む(ValueArr[size-1]=GetValue();)。

 
artmedia70:

配列のサイズを1目盛りごとに1つずつ大きくしたいですか?その場合、そのサイズは、利用可能なコンピュータのメモリによって制限されます。

1目盛りごとに、関数 ArrayResize() を使って配列 ValueArr[] のサイズを大きくし、新しいデータを配列に追加する。もう一度言いますが、どこに追加するのですか?最初か最後か?

もし最初に、以前に書き込んだデータを移動させないと、新しく書き込んだデータで上書きされてしまうからです。

配列のサイズ=0とし、開始時に1だけ大きくして(size++)、配列のサイズを変更する ArrayResize(ValueArr, size); そして、GetValue()関数で得られたデータを、サイズ-1で始まる配列セルに追加する (ValueArr[size-1]).

はい、GetValue()からのデータは、毎ティック、ValueArr[]配列に書き込まれます。

配列のサイズは刻々と大きくなっていきますが、一度に[10000]などと定義することも可能です。


配列の要素は 到着順に並べられる。つまり、最初に書き込まれた要素が「一般キュー」の1番目となる。

の場合、2番目の要素はキューの中で2番目になります。


私の理解が正しければ、このような感じです。


 int size=0;
 int ValueArr[size];
 
//-----------------

int start()
 {
   size++;
   ArrayResize(ValueArr, size);
   ValueArr[size-1] = GetValue();
   
 return();
 }

//-----------------

int GetValue()
 {
 .......
 return(Val);
 }

正しくご理解いただけたでしょうか。

 
Sergey_Rogozin:

配列の要素は到着順に並べられ、つまり最初に書き込まれたものが「一般キュー」に最初に入る。

なぜ時系列配列を使用しないのか
 
eddy:
なぜ時系列配列にしないのか?
タイムスリップ?チークの歴史の ようなものを記録するのに役立つことはないのでしょうか?
 
Sergey_Rogozin:

1次元配列ValueArr[] を埋めようとしています。

正しいかどうかわからない。

GetValue() 関数は、各ティックでint値を出力します。ValueArr[] を埋めるには?

私の試みは正しいのでしょうか?

だから
 int ValueArr[size]; 

はできません。配列を宣言する とき、サイズとして定数を指定するか、何も指定しないか、その時点で配列は動的とみなされます。

正しい方法はこうです。

int ValueArr[]; 

int init()
{
   ArrayResize(ValueArr,size);
}
 
チーク - 無
 

アドバイスお願いしますMT4で、前の取引の結果を考慮して新しい取引を開くような機能はありますか?もしそうなら、どうすれば正しく指定できるのでしょうか?

 
sto_mat:

アドバイスお願いしますMT4で、前の取引の結果を考慮して新しい取引を開くような機能はありますか?もしそうなら、どうすれば正しく指定できるのでしょうか?


そのようなビルトイン関数はないので、自分で書く必要があります。ここに例を示しました:https://www.mql5.com/ru/forum/131277/page113
 
alsu:
これは

できない配列を宣言する際、サイズに定数を指定するか、何も指定しない場合は動的配列とみなされます。

正しい方法はこうです。


それならそれでいいんじゃないでしょうか。

 int size, ValueArr[]; 
//-----------------
 int init()
 {
   ArrayResize(ValueArr,size);
 }
//-----------------

int start()
 {
   ValueArr[size-1] = GetValue();
 return();
 }

//-----------------

int GetValue()
 {
 .......
 return(Val);
 }

これで良いのでしょうか?