どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 1083

 
与えられた最後の バーの数で最も高い値を見つける必要がある場合はどうでしょうか?
 

つまり、静的な配列 である

//--- создадим массив 
   double array[]; 
   int size=772; 
   ArrayResize(array,size); 
   //---  заполним его значениями индикатора 
   for(int i=0;i<size;i++) 
     { 
      array[i]=iATR(NULL,0,14,i);
     }
   //--- найдем позицию максимального элемента в массиве 
   int max_position=ArrayMaximum(array,772,0); 
   //--- теперь получим само максимальное значение в массиве 
   double max=array[max_position];
 

というわけで、独学で、プログラマーという存在の微妙な感覚の理解に遠く及ばず、直接書いています(で、テーマは「初心者のどんな質問でも...」)。私はすべての努力なしに、無料で取得したいことを非難されることはありませんし、一方で明確にタスク(我々は他人の心を読むことができないと言うことではない)を定義しようとしている例を与える。

もう一度、与えられたコードから、または多分コーディングの個人的な文で理解の恵みによって最後のバーの与えられた量に対する指標の最大値を取得する方法?

心からの敬意と尊敬、そしてプログラマーは別世界の人々であることを理解した上で、このようなデリケートな説明は、上記のすべてをもう一度、おそらく複数回概説しなければ、望ましい結果を得られないという事実があるのです。

//--- 配列の作成 double array[]; int size=772; ArrayResize(array,size); //---。指標となる値で埋める for(int i=0;i<size;i++) { array[i]=iATR(NULL,0,14,i);
} //--- 配列中の最大要素の位置を求めます int max_position=ArrayMaximum(array,772,0); //--- 次に,配列自体の最大値を求めます double max=array[max_position];
 

いろいろ検索してみたのですが、解決策が見つからず、最後の望みをかけています :)

一般的なタスクは、チャート上に投げられたとき、つまりすでに動作しているときに、指定されたキーを押すと、現在のカーソル位置の下にトレンドライン(日付1=日付2、価格1=価格2)が表示されるようなインジケータを作ることでした。

問題は、if(id==CHARTEVENT_MOUSE_MOVE) にポインタの座標を渡すことができず、下のコードもそれを渡そうとしないときに発生しました。 どうすればいいかわかりませんが、この問題を解決する別の方法もあります。 たぶん誰か知っていると思いますが、チャート上でインジケータを投げたときに、初期メニューが表示されるのですが、そのときに、このインジケータはどうすればいいですか?

#property strict
#define  VK_D             0x44 


int OnInit()
  {
//---
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);

   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{    
 
if(id==CHARTEVENT_MOUSE_MOVE)

{     int      x     =(int)lparam;
      int      y     =(int)dparam; 
      datetime dt    =0; 
      double   price =0; 
      int      window=0;
      ChartXYToTimePrice(0,x,y,window,dt,price); 


  if(id==CHARTEVENT_KEYDOWN)
{ 
  switch(int(lparam)) 
{ case VK_D:
   
   ObjectCreate("Trend Line",OBJ_TREND,0,dt,price,dt,price);
   ObjectSetInteger(0,"Trend Line",OBJPROP_SELECTED,true); 
}   
} 
}    
}
 
Craft:

というわけで、独学で、プログラマーという存在の微妙な感覚の理解に遠く及ばず、直接書いています(で、テーマは「初心者のどんな質問でも...」)。私はすべての努力なしに、無料で取得したいことを非難されることはありませんし、一方で明確にタスク(我々は他人の心を読むことができないと言うことではない)を定義しようとしている例を与える。

もう一度、与えられたコードから最後のバーの与えられた量の指標の最大値を取得する方法、またはコーディングの個人的な文で理解の恵みによってかもしれませんか?

プログラマーは別世界の人間であり、このようなデリケートな説明は、上記のすべてをもう一度、おそらく複数回概説しなければ望ましい結果を得られないという事実を、心からの敬意と尊敬と理解を持って。


だから、ループを逆にして、それでおしまい。

rates_total-1 から rates_total から希望するボール数を引いた値。EAの場合、Bars()-1 から Bars() マイナスまで...。

 
K_i_r_i_t_o:

いろいろ検索してみましたが、解決策は見つかりませんでした。 あなた方に期待することはありません :)

一般的なタスクは、チャート上に投げられたとき、つまりすでに動作しているときに、指定されたキーを押すと、現在のカーソル位置の下にトレンドライン(日付1=日付2、価格1=価格2)が表示されるようなインディケータを作ることでした。

問題は、if(id==CHARTEVENT_MOUSE_MOVE) にポインタの座標を渡すことができず、下のコードも渡そうとしないので、どう実装したらいいかわからない、他の選択肢もあるが、それも問題、もし知っている人がいたら、チャート上にインジケータを投げると初期メニューが出るので、それを何とかロックして、すぐにチャート上に表示されるようにできないか?

可変視認性に注意する。

深く掘り下げてはいませんが、コンディションの中で変数が宣言されていることに気がつきました。そんなことはないはずです。

 
AlexeyVik:

変数の視認性に注意する。

あまり深く掘り下げてはいませんが、変数の宣言が条件内部で行われていることに気づきました。これではいけないと思います。

そこで問題なのが、あるifから別のifに変数を渡すにはどうしたらいいかということで、いろいろ試してみたのですが、うまくいきません......。
 
K_i_r_i_t_o:
そこで問題なのが、あるifから別のifに変数を渡すにはどうしたらいいかということで、いろいろ試してみたのですが、うまくいきません......。

こちらで読む ことができます。

何種類のバリエーションがありますか?グローバルレベルの変数がプログラムのどの部分でも見える、これは極端な例です。

 
AlexeyVik:

こちらでお読み ください。

さまざまなバリエーションとは?グローバルレベルの変数がプログラムのどの部分でも見える、これは極端な例です。

全部読みました、それがですね、変数の値を他の関数に移せない、一つの関数に集める方法がない、困っています、でもインジケータメニューはどうなんでしょうか?
 
Craft:

こんにちは、皆さん。

配列に関する質問です。チャートの最初のバーではなく、最後のバーの必要な数でインジケータの最大値を見つけるにはどうしたらいいですか?

何度も議論されているようですが(見つけられません)、私は配列をほとんど使ったことがありません。

ArrayMaximum(array)をもっとエレガントに使って、インデックスの問題を解決する方法をアドバイスしていただけませんか?

どこかに初歩的なミスがあったら、独学なのでごめんなさい。

MQL4ビルドのバグフィックスの流れは衰えることがないため、コードがシンプルであればあるほど信頼 性が高まります。

Amax=-10000です。

iAmax=-1である。

for(int i=0;i<size;i++) {.

if (array[i]>Amax) {iAmax=i; Amax=array[i];}。

}

if (iAmax<0) ...何か問題があります。