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

 
テストがどのモードで実行されているかコードから確認する方法はありますか -
すべてのティック、オープン価格 またはテストポイント?
 
友達を追加できないのですが?
 
こんにちは。説明書に従って共有ホスティングを 学ぼうとしているのですが、EAが開きません。
 

この絵の作者は、クラシカルTAのどの柱か教えてください。

この写真はエルダーの「株式市場の基礎 知識」に掲載されているものです。実は、私は同じ絵に興味があるのですが、CONVERGENCESが存在するのであれば、その絵に興味があるのです。


 

助けてください。簡単なスクリプトなのに、動かない。その理由がわからないんです。

int awd1[];
void OnStart()
  {
   for(int i=0;i<=5;i++)
   {
   awd1[i]=i+10;
   }
   Alert("первый=");
  }

ループは6回繰り返さなければならない。各反復で、awd1配列に値を割り当てる必要があります。ループが終了すると、"first="という項目があるウィンドウがポップアップするはずです。でも、ポップアップしないんです。どうしたんですか?

 
silachara:

助けてください。簡単なスクリプトなのに、動かない。理由がわからない。

int awd1[];
void OnStart()
  {
   for(int i=0;i<=5;i++)
   {
   awd1[i]=i+10;
   }
   Alert("первый=");
  }

ループは6回スクロールする必要があります。各反復で、awd1配列に値を割り当てる必要があります。ループが終了すると、"first="という項目が入ったボックスがポップアップするはずです。でも、ポップアップしないんです。どうしたんですか?

これにより、ターミナルに表示される以下のようなメッセージも解消されます:array out of range in ...:

#property strict
#define  ARRAY_SIZE  6
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
 int j=0, awd1[];
   ArrayResize(awd1,ARRAY_SIZE,ARRAY_SIZE+1);
//---
   for(int i=0;i<ARRAY_SIZE;i++)
     {
      j=i+10;
      //j=j+10;//или, к примеру, такой вариант вместо строки выше, чтобы вы посмотрели, что присваиваться будет
      awd1[i]=j;
     }
   Alert("первый = ");
  }
//+------------------------------------------------------------------+


P./S.:チェックを使ったバリエーションを紹介します。

#property strict
#define  ARRAY_SIZE  6
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
 int j=0, count=0, awd1[];
   ArrayResize(awd1,ARRAY_SIZE,ARRAY_SIZE+1);
//---
   for(int i=0;i<ARRAY_SIZE;i++)
     {
      j=i+10;
      //j=j+10;//или, к примеру, такой вариант вместо строки выше, чтобы вы посмотрели, что присваиваться будет
      awd1[i]=j;
      count++;
      Print("count = ",count,", awd1[",i,"] = ",awd1[i],", j = ",j);
     }
   Alert("первый = ");
  }
//+------------------------------------------------------------------+
 
silachara:
上記の コードを若干修正し、同じ値awd1[i]が出ないようにしました。
 
DiPach:
awd1[i]の値が同じにならないように、上記の コードを少し修正しました。

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

つまり、配列はセルの数を指定して宣言する必要があったのですね。この要件は、MT4がビルド600に移行した後に現れたのでしょうか?それとも以前からそうだったのでしょうか?

そしてもう一つ問題があって、Print()からの情報が書き込まれているファイルが見つからないのです。どうしたらいいか教えてください。MT4のすべてのディレクトリを探しましたが、見つかりませんでした。

 
silachara:

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

つまり、配列はセルの数を指定して宣言する必要があったのですね。この要件は、MT4がビルド600に移行した後に現れたのでしょうか?それとも以前からそうだったのでしょうか?

動的配列のサイズを設定する関数ArrayResizeも 600番台のビルド以前から存在していた。

それで...MQL4言語のアップデートで、コンパイラが厳しくなったんです。必要であれば、不完全な表現を含む意図的な歪曲の可能性がある再話ではなく、「直接」興味深い情報をここで 見ることができます。以前のMQL4言語と更新されたMQL4言語の コンパイラの違い表」 (表はこのスレッドの最初のページの最後にあります)、または検索を使って見てください。 確か、更新されたMQL4言語への移行に関する資料がたくさんあったはずです。

 

silachara:

そしてもう一つの問題は、Print()からの情報が書き込まれるファイルが見つからないことです。どうか、道を教えてください。MT4のすべてのディレクトリを探しましたが、見つかりませんでした。

簡単な方法:ターミナルの「エキスパート」タブを開く→タブ上で右クリック→表示されたメニューの「開く」をクリックする。

Print() で出力されたものを含む、このタブのエントリーを含むログファイルのあるフォルダが開きます。下の画像は、この情報をビジュアル化したものであることを思い出しました。


P./S.: 同じように、端末の「ログ」タブから、記録のログファイルがあるパソコン上のフォルダを素早く開くことができます(別のフォルダにあります)。