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

 
Artyom Trishkin:
そして、スタティック変数が何回初期化されるかを読み取る。そして、質問自体がその不条理さのために消えてしまうでしょう ;)

staticキーワードで宣言されたローカル変数は、その関数が生きている間、値を保持します。この関数が再び呼ばれるたびに、これらのローカル変数には 前回の呼び出し時に持っていた値が格納されます。ユーザー定義関数で宣言された変数は、ローカル変数ではないのですか?

 
Alekseu Fedotov:

2つ目の質問について。

最初のティックで釣れないと、2回目のティックで釣れる。

バーの開店時刻を 返します。バー全体で同じになります。
 
novichok2018:

staticキーワードで宣言されたローカル変数は、その関数が生きている間、値を保持します。この関数が再び呼ばれるたびに、これらのローカル変数には 前回の呼び出し時に持っていた値が格納されます。ユーザー定義関数で宣言された変数は、ローカル変数ではないのですか?

修飾子 static で静的になり、ローカルではなく、静的変数のメモリに格納されます。
 
Artyom Trishkin:
バーの開店時刻を 返します。バー全体で同じになります。

ここにあります。ありがとうございます。

 
Artyom Trishkin:
static修飾子によって静的になり、ローカル変数ではなく、静的変数についてはすでにメモリに格納されています。

ここがわからないんです。私見では、どこに格納されているかは関係なく、コードによって、関数にアクセスするたびに変数の値をゼロにリセットしています。何のために?

 
novichok2018:

ここがわからないんです。私見では、どこに格納されているかは関係なく、コードによって、関数にアクセスするたびに変数の値をゼロにリセットしています。何のために?

初回起動時 - 宣言時。その後、その内容をコントロールするのは、あなた次第です。
 
Artyom Trishkin:
初回起動時 - 宣言時。さらに、その内容を自分でコントロールすることができます。

しかし、私の考えでは、そうではない。コードは毎回一行ずつ読まれ、ゼロになるたびに、初期化がなくても最初の実行では、変数はゼロの値をとることになるのだ。そのため、静的なデータタイム行New_Time=0;は、プログラムに不必要な作業を強いることになる。

 
novichok2018:

しかし、私の考えでは、そうではない。コードは毎回一行ずつ読まれ、ゼロになるたびに、初期化がなくても最初の実行では、変数はゼロの値をとることになるのだ。そこで、静的な日時文字列New_Time=0;を指定すると、プログラムに不要な作業を強いることになる。

ノー」と言われ、「イエス」と答える...。
変数の値をジャーナルに出力して見るだけです。なぜ、簡単なことを説明されただけで喧嘩をするのですか?
自分で確認するまでは、私抜きでも大丈夫です。
 
Artyom Trishkin:
ノーと言えばノー、イエスと言えばイエス...。
変数の値をログブックにプリントして見るだけです。簡単なことなら説明されるのに、なぜわざわざ?
自分で確認するまでは、私なしで行ってください。
気分を害する必要はありません。しかし、プログラマーはテキストの読み方が違うらしい。私は常々、プログラムの中に「ゼロに等しくする」と書かれていれば、起動時であろうとコード行を繰り返し参照する時であろうと、コンピュータはゼロに等しくしなければならないと考えています。また、ゼロ初期化が 不要であることを証明するために雑誌を読む必要はなく、ただ削除すればよいのです。static datetime New_Time; は static datetime New_Time=0; と全く同じ結果を生み出します。このプログラムがどれだけ速く動作するかはわかりませんが、全く意味がないことは認めます。それでも「不要なジェスチャー」を削除したことには変わりありません。
 
novichok2018:
気を悪くしないでください。しかし、プログラマーは明らかにテキストの読み方が違う。私は常々、プログラム中に「ゼロに等しい」と書かれていれば、起動時、コードラインの再参照時にかかわらず、コンピュータはゼロに等しくしなければならないと考えています。また、ゼロ初期化が不要であることを証明するために、どこかの雑誌を訪れる必要はありません。static datetime New_Time; は static datetime New_Time=0; と全く同じ結果を生み出します。プログラムの動作がどれだけ速くなったかは分かりません。全く意味がないことは認めますが、それでも「不要なジェスチャー」を削除したことには変わりありません。
頑固に悪気はないんです。なぜ?
そして、変数は明示的に初期化する必要があります。初期化の重要性については、いつか紹介します。とりあえず、中括弧の中のものは全部捨ててください。