[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 354

 
N. Staritskyの作品があります。これをもとにした「二兎を追うものは一兎をも得ず」という映画がある。この素晴らしい作家を読んでみたい。彼の文章が見つからない。また、間違ったスレッドで質問してしまったらごめんなさい;)
 

ArrayMaximumの 仕組みは?

int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)

最大値を持つ要素を検索する。この関数は,配列中の最大要素の位置を返します.
Parameters:array[] - 検索する数値配列.
count - 検索する要素数.
start - 検索の開始インデックス.

例:
double num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
int maxValueIdx=ArrayMaximum(num_array);
Print("最大値 = ", num_array[maxValueIdx]).の場合、最大値は、1,2,3,4,6,9です。

ということで、私にはよくわからないのですが...。Expert Advisorが例えば2番目の配列番号を検索するようにするには、どのように書けばよいのでしょうか。

int MinArray[7] = {1,2,3,4,5,6,7} とする。

int ArrayMaximum (MinArray[7], "What about here?", 2); これではよくわかりませんね。

 
splxgf:

例えば、過去2年間に与えられた水準を何回超えたかという問題である。

1.各レベルを取り上げて、2年分のデータを見ることができるのです。コスト:バーの数×レベル数

2.レベルの別配列を作成することができます。配列の必要な要素をチェックし、インクリメントすることで、すべてのバーを見直すことができれば十分です。この場合、計算が速くなります。

これに近い例に興味があります。

for(a=0;a<=100;a++){。

for(b=0;b<=100;b++){

for(c=0;c<=100;c++){

for(d=0;d<=100;d++){。

for(e=0;e<=100;e++){

for(f=0;f<=100;f++){.

for(g=0;g<=100000;g++){

jaw_val1=iAlligator(NULL, 0, a, b, c, d, f, e, MODE_SMMA, PRICE_MEDIAN, MODE_GATORJAW, g)とする。

jaw_val2=iAlligator(NULL, 0, a, b, c, d, f, e, MODE_SMMA, PRICE_MEDIAN, MODE_GATORTEETH, g) とする。

jaw_val3=iAlligator(NULL, 0, a, b, c, d, f, e, MODE_SMMA, PRICE_MEDIAN, MODE_GATORLIPS, g) とする。

if (jaw_val1>Close[g] && jaw_val2>Close[g] && jaw_val3>Close[g]) sum=sum+(High[g]-Low[g])

}}}}}}}


しかし、それなら配列は7次元でなければならないのでは?

 
CLAIN:

ArrayMaximumの仕組みについて教えてください。

int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)

最大値を持つ要素を検索する。この関数は,配列中の最大要素の位置を返します.
Parameters:array[] - 探索される数値の配列.
count - 検索する要素の数.
start - 検索の開始インデックス.


double num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
int maxValueIdx=ArrayMaximum(num_array);
Print("最大値 = ", num_array[maxValueIdx]);

というわけで、ここがカウントのわからないところです。Expert Advisorで、例えば2番目の配列番号を検索するには、どのように書けばよいのでしょうか。

int MinArray[7] = {1,2,3,4,5,6,7} とする。

int ArrayMaximum (MinArray[7], "What about here?", 2); 私にはよくわからないのです。

ある値を含むDataMass[] 配列があるとします。その中の値の型はdouble である。

この配列に含まれる最大の値を、配列の0番目の要素から求める必要があります。

int IndexMaxValue=ArrayMaximum(DataMass,WHOLE_ARRAY, 0); // 最も大きな値を持つ要素のインデックスを求めます.

double MaxValue=DataMass[IndexMaxValue]; // 配列のインデックスから最大値を求めます.

最大値を持つ要素を探す行は、もっと短く書くことができる。

int IndexMaxValue=ArrayMaximum(DataMass); // 関数の最後の2つの引数はデフォルト値なので,関数呼び出し時に省略できます.なぜなら,配列全体(WHOLE_ARRAY)を検索し,ゼロセル(0)から開始するので,これらの値はデフォルトで関数に渡されるからです.

これらはすべて1行で書くことができる

double MaxValue=DataMass[ArrayMaximum(DataMass)]; // 配列中の最大値をインデックスで求めます.

変数 MaxValue 配列 DataMass[]の最大値が格納 されます。


配列全体でなく、0 番目の要素から検索したい場合は、これらの値をパラメータで明示的に指定する必要があります。

int IndexMaxValue=ArrayMaximum(DataMass, WHOLE_ARRAY, 2); // 最大の値を持つ要素のインデックスを求めます.配列全体(WHOLE_ARRAY)を対象に、2 番目のセル(2)から検索を行う。

int IndexMaxValue=ArrayMaximum(DataMass, 10, 3); // 最大の値を持つ要素のインデックスを求めます.配列(10)の3番目のセル(3)から10個の要素について検索を行う。


分かりやすく説明できたでしょうか :)

 
artmedia70:
ある値を含むDataMass[] 配列があるとします。含まれる値の型はdouble である。

この配列に含まれる最大の値を、配列の0番目の要素から求める必要があります。

int IndexMaxValue=ArrayMaximum(DataMass, WHOLE_ARRAY, 0); // 最も大きな値を持つ要素のインデックスを求めます.

double MaxValue=DataMass[IndexMaxValue]; // 配列のインデックスから,最大値を求めます.

最大値を持つ要素を探す行は、もっと短く書くことができる。

int IndexMaxValue=ArrayMaximum(DataMass); // 関数の最後の2つの引数はデフォルト値なので,関数呼び出し時に省略できます.なぜなら,配列全体(WHOLE_ARRAY)を検索し,ゼロセル(0)から開始するので,これらの値はデフォルトで関数に渡されるからです.

これで一行で書けるようになりました

double MaxValue=DataMass[ArrayMaximum(DataMass)]; // 配列のインデックスから最大値を求めます.

配列全体でなく,0 番目の要素から検索したい場合は,パラメータでこれらの値を明示的に指定する必要があります。

int IndexMaxValue=ArrayMaximum(DataMass, WHOLE_ARRAY, 2); // 最大の値を持つ要素のインデックスを求めます.配列全体(WHOLE_ARRAY)に対して、2番目のセルから検索を行う。

int IndexMaxValue=ArrayMaximum(DataMass, 10, 3); // 最大の値を持つ要素のインデックスを求めます.配列(10)の10個の要素について、3番目のセルから検索を実行します。

分かりやすく説明できたでしょうか :)



more than =)ありがとうございます、でも一つ疑問が残ります・・・。2つの同じ最大値があった場合、どちらを選ぶのでしょうか?
 
CLAIN:

それよりも、ありがとうございます。2つの同じ最大値があった場合、どちらを選ぶのでしょうか?

チェックしてみてください :)

配列で見つかった最大値とそのインデックスを出力する短いスクリプトを作成しなさい。配列を明示的に値で初期化し、そのうちの2つは同じ値で、他の値より大きくする。

その指標を使って、出力される2つの最高値のうち、どちらを選ぶかを判断します。

 

検索開始点に最も近いもののインデックスを出力する。

//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                             Copyright © 2011, Trishkin Artyom A. |
//|                                           support@goldsuccess.ru |
//|                                           Skype: artmedia70      |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, Trishkin Artyom A."
#property link      "support@goldsuccess.ru"
//                   Skype: artmedia70
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
double DataMass[15]={4,1,6,3,19,4,1,6,3,19,4,1,6,3,9}; // индекс первого = 4, индекс второго = 9

int start()
  {
//----
   int IndexMaxValue=ArrayMaximum(DataMass); 
   double MaxValue=DataMass[IndexMaxValue]; // находим максимальное значение в массиве по его индексу
   Alert("Индекс максимального элемента массива = "+IndexMaxValue+", его значение = "+MaxValue);
//----
   return(0);
  }
//+------------------------------------------------------------------+

どのインデックスが出力されるか当ててみてください :)

 
drknn:
N. Staritskyの作品があります。これをもとにした「二兎を追うものは一兎をも得ず」という映画がある。この素晴らしい作家を読んでみたい。彼の文章が見つからない。また、間違ったスレッドで質問してしまったらごめんなさい;)
ウラジミール、それは芝居だ。以下、本文 です。
 

おはようございます。2つほど質問があります(消化できる回答がどこにもありません)。

1. サブウィンドウに2列の垂直トレンド ラインを描画します。これらの線に対応するバーナンバーはどのように入手できますか?

2.同じインジケータで、24時間先まで線を引く必要があります。しかし、どのように実装すればいいのかわからない。

是非ともフォーラムユーザーの皆様のお力添えをお願いします!)

 
注文を削除する機能を追加してください。
ファイル: