[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 57

 
Sepulca:

この方法で試してみてください。

https://docs.mql4.com/ru/basis/variables/formal

2つの機能があります。
// заполняет массив фракталами, найденными в пределах заданного количества баров
double FractalsUP[], FractalsDN[];
void FractalsMassive(string symb, int timeframe, int bars)
 {
  int fr, frtUP=0, frtDN=0;
  for(fr=3; fr<=bars; fr++)
   {
    if(iFractals(symb,timeframe,MODE_UPPER,fr)>0)
     {
      ArrayResize(FractalsUP,frtUP+1);
      FractalsUP[frtUP]=iFractals(symb,timeframe,MODE_UPPER,fr);
      frtUP++;
     }
    if(iFractals(symb,timeframe,MODE_LOWER,fr)>0)
     {
      ArrayResize(FractalsDN,frtDN+1);
      FractalsDN[frtDN]=iFractals(symb,timeframe,MODE_LOWER,fr);
      frtDN++;      
     }
   }
 }
double ExtremeFractalUP(double& fractalup[])
 {
  int masrange, efup;
  masrange=ArrayRange(fractalup,1);
  
  for(efup=0; efup<masrange; efup++)
   {
    if(fractalup[efup]>fractalup[efup+1])
     {
      return(fractalup[efup]);
     }
    else continue;
   }  
 }

EAでコンパイルしようとすると、"FractalsUP - incompatible types "というエラーが発生します。

   FractalsMassive(Symbol(),0,100);
   double extr=ExtremeFractalUP(FractalsUP[]);

関数や宣言された配列は、どちらかというとインクルードファイルに格納されます。

 
silhouette:
執筆前に教科書を読んで、アンダーラインを見ましたが、実際には実装できませんでした。 .


配列の要素値のパラメータを 参照渡し(&接頭辞付き)する動作例を見ました。

 
silhouette:
2つの機能があります。

EAでコンパイルしようとすると、「FractalsUP - incompatible types」というエラーが出ます。

関数や宣言された配列は、どちらかというとインクルードファイルに格納されます。


神の思し召しで、これはうまくいくはずだ。少なくとも、エラーなくコンパイルできる。

int start()
{
 double FractalsUP[], FractalsDN[];
 ExtremeFractalUP(FractalsUP);// Передаем ссылку на один массив
 ExtremeFractalUP(FractalsDN);// Передаем ссылку на другой массив
}
//
double ExtremeFractalUP(double& fractalup[]) // В параметрах указываем что будет передаваться ссылка на массив
 {
  int masrange, efup;
  masrange=ArrayRange(fractalup,1);
  
  for(efup=0; efup<masrange; efup++)
   {
    if(fractalup[efup]>fractalup[efup+1])
     {
      return(fractalup[efup]);
     }
    else continue;
   }  
 }
 
Sepulca:


神の思し召しで、これはうまくいくはずだ。少なくとも、エラーなくコンパイルできる。

ありがとうございました!原理は解決したようです。
 

プログラマーの皆様、こんにちは。

何が間違っているのか、教えていただけませんか?

int型の外部変数があり、プログラム中でdouble型の 配列にいくつの要素が入るかを設定する必要があります。

下の図のようにやっているのですが、コンパイラはまだエラーを出します。すでにdouble型の外部変数を書いてみましたが、まだエラーが出ます。

アドバイスをお願いします。

extern int       max_count=4;

int start()
{
   static double A[max_count];

エラー

 
SvSerg:

プログラマーの皆様、こんにちは。

何が間違っているのか、教えていただけませんか?

int型の外部変数があり、プログラム中でdouble型の配列にいくつの要素が入るかを設定する必要があります。

下の図のようにやっているのですが、コンパイラはまだエラーを出します。すでにdouble型の外部変数を書いてみましたが、まだエラーが出ます。

アドバイスをお願いします。

double A[4]の明示的な値で配列を初期化 する。

そして、ArrayResize()を使ってサイズを変更します。

 
artmedia70:

double A[4]の明示的な値で配列を初期化する。

そして、ArrayResize()を使ってサイズを変更します。



ありがとうございました。

思うに、空の配列double A[]; を初期化すれば、そこにループでいくらでも入れることが可能なのでは?

ヌーベルな質問で申し訳ないのですが、初心者の私には配列はメチャクチャ難しいです。

 
SvSerg:


ありがとうございました。

思ったんですが、空の配列double A[]; を初期化すれば、ループでいくらでも配列が入れ られるんですよね?

ヌーベルな質問で申し訳ないのですが、初心者の私には配列はメチャクチャ難しいです。

どんな配列にも必要なだけのメモリを詰め込むことができ、重要なのはリサイズを忘れないことです。特に配列が空の場合。
 
artmedia70:
どんな配列でも、リサイズを忘れない限り、必要なだけのメモリを搭載することができます。特に配列が空の場合。


いつもありがとうございます。を与えられないのが残念です。
 

こんにちは。

プログラマーの皆様へExpert Advisorを書く 必要があります。

説明あり。

条件とは?保証はどうなっているのですか?

マキシム、よろしく