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

 
abeiks:

こんにちは。

現在、グローバル変数について考えているところです。今ひとつ問題があって、解決できない。インジケータからグローバル変数を削除すると、Expert Advisorはその変数を取得し続ける。この問題を解決するにはどうしたらいいのでしょうか?

a どのようにそれを削除するのですか?

 
valenok2003:

以前はエラーメッセージなしでコンパイルできたのに、今は '{' - 式が期待されています。

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

Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};


カンマを数える。
 
AlexeyVik:

カンマを数える。
カンマは正しいです。配列の要素がいくつあっても、すべてゼロで埋め尽くされるという表記です。
 
abeiks:

こんにちは。

現在、グローバル変数について考えているところです。今ひとつ問題があって、解決できない。インジケータからグローバル変数を削除すると、Expert Advisorはその変数を取得し続ける。どうすればこの問題を解決できるのでしょうか?

ターミナルでF3を押し、この変数を手動で削除してください。これは一度作成され、環境に配置されます - Expert Advisorはそこから読み取ります。それとも、私があなたのことを正しく理解していなかったのでしょうか?端末のグローバル変数の 作成をインジケータコード自体で削除しただけで、以前はこのインジケータで作成されていたのですね。
 
artmedia70:
ターミナルでF3を押し、この変数を手動で削除してください。一度作成されたものは環境内にあり、EAがそこから読み取ることになります。
ありがとうございました。知りませんでした。
Expert Advisor本体で確認・削除するにはどうすればよいですか?例えば、間違ってインジケータを閉じてしまっても、EAは常にその最後の変数を取得し、ポジションをオープン するシグナルがあれば......という具合です。
 
valenok2003:

a どのように削除するのですか?


そうしてみたものの、どうもしっくりこない。

 if (!GlobalVariableCheck("Test_1"))
GlobalVariableDel("Test_1"); 
 
valenok2003:
カンマは正しいです。配列の要素がいくつあっても、すべてゼロで埋め尽くされるという表記法です。
まあ、勉強したことのないC++ならともかく、mqlはCライクでしかないからなあ。そして第二に、配列の次元を変数に設定することはできません。あなたの例ではMAX_NUM_ORDERは変数ではないかもしれませんが...。
 
valenok2003:

以前はエラーメッセージなしでコンパイルできたのに、今は '{' - 式が期待されています。

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

Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};

配列の行と列がそれぞれ選択されると,そこに特定の値を書き込むことができます.つまり,通常の変数と同じように,すべての値をリセットします.

ArrayInitialize(Arr_Tickets, 0)。

 
abeiks:

そうしてみたものの、どうもしっくりこない。

if (!GlobalVariableCheck("Test_1"))
GlobalVariableDel("Test_1"); 

なんて書いてあるんだ?

Test_1というグローバル変数 がない場合は、削除してください...。

 
abeiks:
ありがとうございました。知らなかったんです。また、Expert Advisor 自体でそのようなチェックを行い、削除するにはどうすればよいのでしょうか。例えば、私が誤ってインジケータを閉じてしまった場合、Expert Advisorはこの最後の変数を常に受信し、そこにポジションを開くシグナルがあれば...。

意図しない削除により、本インジケータが生成したグローバル変数が削除 される場合は、本インジケータのOnDeinit()関数でグローバル変数の削除を規定する必要があります。
同時に、タイムフレームの切り替えではなく、チャートからのインジケータの削除であることを確認する必要があります。