MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 927

 
Artyom Trishkin:

保存先フォルダ:File --> Open Data Folder --> MQL4ExpertsHere.ex4

もしそうであっても、EAがナビゲータに表示されない場合は、 ...おめでとうございます - あなたはナビゲーターで可能なプログラムを使い果たしました。 何かを削除する必要があります。残念ながら、MetaTrader4では、ナビゲーターが見ることのできるプログラムの数に制限があります。大量のインジケータを作成する際に、この問題に直面しました。たくさんのコードを削除しないために、私は単純にテストファイルにコードをコピーして、コンパイルして実行しました。そうやって私はいつも1つのファイルで必要な指標をテストしていました。ファイルの内容を消して、新しいコードを入れて、コンパイルしてテストして、終了。そして次のものは - ファイルの中身を消して、新しいコードを挿入して......、と輪を描くように......。

ありがとうございます。またここに書きますね・・・。ソフトが少ないから...。
 
Artyom Trishkin:

ファイルフォルダ:File --> Open Data Folder --> MQL4ExpertsHere.ex4

すべてが同じでも、EAがナビゲータに表示されない場合は、 ...おめでとうございます - ナビゲーターで可能なプログラムを使い果たしました。 何かを削除する必要があります。残念ながら、MetaTrader4では、ナビゲーターが見ることのできるプログラムの数に制限があります。大量のインジケータを作成する際に、この問題に直面しました。たくさんのコードを削除しないために、私は単純にテストファイルにコードをコピーして、コンパイルして実行しました。そうやっていつも1つのファイルで必要なインジケータをテストしていました。ファイルの内容を消して、新しいコードを入れて、コンパイルしてテストして、終了。そして次のものは - ファイルの中身を消して、新しいコードを挿入して......、と輪を描くように......。

データディレクトリにコピーされたExps、indicators、scriptsは、十分ではありません。NAVIGATORで...7月〜ない。

ターミナルを起動するフォルダにも存在します。NAVIGATORではありません。




artem - ありがとうございます。ターミナルを再起動したら、ちゃんとありました。



 

配列を作成し、作成した配列に値を入れたいが、関数変数などで値を与えたい 例.

int q=8,w=9;

int mas[2]={q,w}.mas[0]=q,mas[1]=wとすればよいのです。すでに必要な計算が格納されている変数を代用して、配列に入れる方法はないでしょうか。 マクロで可能でしょうか。

 
Seric29:

配列を作成し、作成した配列に値を入れたいが、関数変数などで値を与えたい 例.

int q=8,w=9;

int mas[2]={q,w}.mas[0]=q,mas[1]=wとすればよいのです。すでに必要な計算を格納した変数を代入して配列を作成し、その配列に入れることは可能でしょうか? マクロで行うことは可能でしょうか?

今週の初め、「バグ、エラー、質問」 スレッドで誰かが議論していましたが、結果は不可能です。

 
Igor Makanu:

週明けの「バグ、バグ、質問」 スレッドで誰かが議論したのですが、結果はノーでした。

なるほど。配列を初期化するときに変数経由で列や行の値を渡すことはmqlでは禁止されていますが、配列を宣言するときにマクロを使って列数を代入している人を見たことがあります。以下、お題https://www.mql5.com/ru/forum/95351.

#定義 ODD 5

double Max_D1[ODD]。

double Low_D1[ODD];

 
Seric29:

なるほど。配列を初期化するときに変数経由で列や行を渡すことはmqlでは禁止されていますが、配列を宣言するときに列数を割り当てるためにマクロを使っている人を見たことがあります。以下、お題https://www.mql5.com/ru/forum/95351.

#定義 ODD 5

double Max_D1[ODD]。

double Low_D1[ODD];

と、このアクションに何の意味があるのでしょうか?: 配列を定数ではなく、変数で初期化することはできますか?- 答えはノーです。

マクロは配列の各要素に変数の値を割り当てるという手作業を行いますが、ポイントはこのままでは変わりません。

 
Igor Makanu:

という質問と、この行動のポイントは?: 配列を定数ではなく、変数で初期化することはできますか?- 答えはノーです。

マクロは配列の各要素に変数値を割り当てるという手作業を行いますが、本質は変わりません。

まあ、それで何かできるんじゃないかと思ったんです。

 
Igor Makanu:

という質問と、この行動のポイントは?: 配列を定数ではなく、変数で初期化することはできますか?- 答えはノーです。

マクロは配列の各要素に変数の値を割り当てるという手作業を行いますが、ポイントはこれによって変わりません。

この問題を解決するために、定数値を返す関数を作ることができますか?

 
Seric29:

この問題を解決するために、定数値を返す関数を作成することは可能でしょうか?

ダメダメ

初期化と代入を混同している。本質は同じだが、使う瞬間(とき)が違う。初期化は配列を記述する文字列で、そこで定数で初期化し、代入は配列を記述した後の任意の場所で、配列(配列要素)に任意の値を代入することだ

何を聞かれているのか、なぜ無理だと書いているのか、どう説明したらいいのかわかりません。

配列を使う場合は、そのような問題はありません。どうやら、コードを書き始めた当初から配列の使用を想定していなかったようで、コードを書き直すか、配列の各要素に手動で変数値を割り当てるしかないようです。

変数を「掛け算」しないために、配列の要素が3〜4個以上ある場合は、プログラムを書いている間に配列の要素数が混ざってしまう危険性が高いので、#defineで設定した定数値を使っています - コードは読みやすく、どうしても間違えません、こんな感じです。

#define  open   0
#define  take   1
#define  loss   2
#define  profit 3
void OnStart()
  {
  double order[4];
  order[open] =  OrderOpenPrice();
  order[take] =  OrderTakeProfit();
  order[loss] =  OrderStopLoss();
  order[profit]= OrderProfit();
  }

おそらく、あなたの質問の曖昧さが理解できないのでしょう。
Seric29 です。

このような質問 配列を作成してすぐに値を入れたいが、変数や関数を介して与えたい値など 例.

int q=8,w=9;

int mas[2]={q,w}.mas[0]=q,mas[1]=wとすればよいのです。すでに必要な計算が格納されている変数を代入して配列を作成し、それを配列に入れることは可能でしょうか? マクロで行うことは可能でしょうか?

は、配列を記述するときに使うのですか?- は、変数で初期化する必要があるのでしょうか?- 上記2回目の回答

または、複数の変数値を配列に代入するか?- という回答もあり得ますが、構文が無効なため、できません。

例えば {1,2,3} はコンパイラがスキップしますが、 {a,b,c} は算術(論理)演算か演算子 = (lvalue, rvalue) を期待するため、適用できません ...。だから、言語の構文は勉強した方がいいのですが、言語の可能性については関係ないのかもしれません。

 
Igor Makanu:

いや、無理でしょう。

初期化と値の代入という概念をごっちゃにしている。本質は同じだが、使う瞬間(とき)が違う。初期化は配列を記述する文字列の中、そこで定数で初期化する。代入は配列を記述した後、任意の場所で配列(配列要素)に任意の値を代入するのだ。

何を聞かれているのか、なぜ無理だと書いているのか、どう説明したらいいのかわかりません。

配列を使う場合は、そのような問題はありません。どうやら、コードを書き始めた当初から配列の使用を想定していなかったようで、コードを書き直すか、配列の各要素に手動で変数値を割り当てるしかないようです。

変数を「掛け算」しないために、配列の要素が3〜4個以上ある場合は、プログラムを書いている間に配列の要素数が混ざってしまう危険性が高いので、#defineで設定した定数値を使っています - コードは読みやすく、どうしても間違えません、こんな感じです。

そうですね、プログラムで宣言した要素のハイブリッド利用はありますね。例えば、私は入力パラメータを宣言し、これらのパラメータから私はグローバル変数を取ると、それらを介して参照する必要がありますが、入力パラメータが配列にすることはできません問題がある、第二例私は関数を書いて、ループを介して処理を開始、ここでも配列を使用する方が良いです、私は配列への引数を開始し、再び変数の配列は不可能であり、あなたが各セルに一つの値を書いたように持って、第3例は配列を使用して引数関数として使用できることは良いだろう(ここで彼は芽がある)。変数の代わりに配列を使うというのは、確かにプログラムをコンパクトにできますし、私もそうしています。C++では初期化の瞬間に変数に書き込むことができる、もしかしたら12以下のバージョンではできないかもしれない、ここではそれを安くしたために、そのような結果になったのだと思います。総じて、理解できましたし、回答にも感謝します。