MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 869 1...862863864865866867868869870871872873874875876...1953 新しいコメント Vitaly Muzichenko 2019.06.03 17:16 #8681 Artyom Trishkin: ヘルプを見ると、何のためにあるのかがわかります。また、ユーザーが入力したパラメータをプログラムで変更 することはできないというのは、その通りです。少なくとも、何かはユーザーのものであるべきです :)本当にやりたいなら、できるはず) Artyom Trishkin 2019.06.03 17:35 #8682 Vitaly Muzichenko:本当にやりたいなら、できるはず) もちろん、再割り当てすれば可能です。しかし、ユーザーが入力した値は変更されない。 The_Sheikh 2019.06.03 18:51 #8683 よく問題に遭遇します。コンパイラは、コードに "variable already defined "というエラーを出して悪態をつく。 if (n<10) { int a=10; } else { int a=5; } https://docs.mql4.com/ru/basis/variables/local のリファレンスガイドにはこう書かれている。 ブロック内部(内部レベル)で宣言された 変数は、そのブロックのスコープを持つ。 ブロックが入れ子になっており、外部ブロックの識別子が内部ブロックの識別子と同じ名前の場合、内部ブロックが完了するまで外部ブロックの識別子は「不可視」(hidden)となる。 しかし、同じ参考書の例でも「変数がすでに定義されています」というエラーが出て、コンパイルできないのです。int i=5; // локальная переменная функции { int i=10; // переменная функции Print("В блоке i = ",i); // результат i = 10; } Print("Вне блока i = ",i); // результат i = 5; サイクルと同じ問題です。 int i=10; for (int i=1;i<10;i++) ... この問題を回避し、"variable already defined" というエラーを出さずにディレクトリサンプルをコンパイルするにはどうしたらよいでしょうか。 Artyom Trishkin 2019.06.03 19:18 #8684 The_Sheikh:よく問題に遭遇します。コンパイラは、コードに "variable already defined "というエラーを出して悪態をつく。 https://docs.mql4.com/ru/basis/variables/local のリファレンスガイドにはこう書かれている。 ブロック内部(内部レベル)で宣言された 変数は、そのブロックのスコープを持つ。 ブロックが入れ子になっており、外部ブロックの識別子が内部ブロックの識別子と同じ名前の場合、内部ブロックが完了するまで外部ブロックの識別子は「不可視」(hidden)となる。 しかし、同じ参考書の例でも「変数がすでに定義されています」というエラーが出て、コンパイルできないのです。 サイクルと同じ問題です。 この問題を回避し、"variable already defined" というエラーを出さずにディレクトリサンプルをコンパイルするにはどうしたらよいでしょうか。#プロパティの厳密さ Igor Makanu 2019.06.03 19:21 #8685 The_Sheikh: この問題を回避して、"variable already defined" というエラーを出さずにディレクトリサンプルをコンパイルするにはどうしたらよいでしょうか?リファレンスブックのすべての例が長期間正しく動作するわけではない というのは、この例では、スコープによって、1つの演算子内の可視性はローカルであり、間違いなくこのように動作するはずだからです。 void OnStart() { for(int i=0;i<10;i++) { double x=i; } for(int i=0;i<10;i++) { double x=i; } } i.e.for 文の 中の可視性はローカルであり、i と x 変数は終了時に失われます。 Alexey Smolyakov 2019.06.03 21:08 #8686 Peak Repainterインジケータの最後のピークがEAで処理されるように探してみた。 GV_trendD1 = StringConcatenate(GVn," дневной тренд"); if (!GlobalVariableCheck(GV_trendD1)) { double fUP,fDN; for (int f=0; f<=400 && !IsStopped(); f++) { fUP = iCustom(NULL,PERIOD_D1,"Used\\# Peak Repainter",0,f); if (fUP>=15) {GlobalVariableSet(GV_trendD1,1);break;} else {fDN = iCustom(NULL,PERIOD_D1,"Used\\# Peak Repainter",1,f); if (fDN>=15) {GlobalVariableSet(GV_trendD1,-1);break;}} } } その結果、実際には-1であるべきなのに、グローバル変数 に1が書き込まれることになります。 どうしたんですか?コードで?インジケーターで? インジケーターは初期設定のまま使用します。 ファイル: r_Peak_Repainter.mq4 7 kb 5_Peak_Repainter.ex4 20 kb Artyom Trishkin 2019.06.03 21:11 #8687 Alexey G. Smolyakov:Peak Repainterインジケータの最後のピークがEAで処理されるように探してみた。 その結果、実際には-1であるべきなのに、グローバル変数 に1が書き込まれることになります。 どうしたんですか?コードで?インジケーターで? インジケーターは初期設定のまま使用します。インジケーターの名称は なぜそうなっているのですか? iCustom(NULL,PERIOD_D1,"Used\\# Peak Repainter",0,f); Alexey Smolyakov 2019.06.03 22:57 #8688 Artyom Trishkin:なぜインジケーターの名前 なのですか? ただ、私は異なるEA用のインジケータを異なるディレクトリに置いているのです。そして、グループ化されるように若干名前を変えています。 名称は何かに影響するのか? Igor Makanu 2019.06.03 23:20 #8689 Alexey G. Smolyakov:私は、異なるEA用のインジケータを異なるディレクトリに置いているだけです。そして、グループ化されるように若干名前を変えています。 名称は何かに影響するのか?МТ4 のファイルへのアクセスはすべて MQL4 フォルダ内で行われ、このフォルダ外の Expert Advisors/Script/Indicators からの終了はセキュリティ上の理由から除外されています。 Alexey Smolyakov 2019.06.03 23:38 #8690 Igor Makanu:MT4のファイルへのアクセスはすべてMQL4フォルダー内で行われ、このフォルダー外のEA/スクリプト/インジケーターからの終了はセキュリティ上の理由で除外されます。 MQL4 folderIndicatorsUsedのフルパス。フォルダの外には出口がないようです。しかし、これは異常なことです。他のExpert Advisorは、同様のフォルダにあるインジケータを問題なく使用できます。しかし、このインジケータの何が問題なのか、私には理解できない。そのコードに目を通したが、理解するには知識と経験が足りなかった。最後の1小節しかカウントしないとか、そういう疑惑があります。 1...862863864865866867868869870871872873874875876...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ヘルプを見ると、何のためにあるのかがわかります。また、ユーザーが入力したパラメータをプログラムで変更 することはできないというのは、その通りです。少なくとも、何かはユーザーのものであるべきです :)
本当にやりたいなら、できるはず)
本当にやりたいなら、できるはず)
よく問題に遭遇します。コンパイラは、コードに "variable already defined "というエラーを出して悪態をつく。
https://docs.mql4.com/ru/basis/variables/local のリファレンスガイドにはこう書かれている。
ブロック内部(内部レベル)で宣言された 変数は、そのブロックのスコープを持つ。
ブロックが入れ子になっており、外部ブロックの識別子が内部ブロックの識別子と同じ名前の場合、内部ブロックが完了するまで外部ブロックの識別子は「不可視」(hidden)となる。
しかし、同じ参考書の例でも「変数がすでに定義されています」というエラーが出て、コンパイルできないのです。
サイクルと同じ問題です。
この問題を回避し、"variable already defined" というエラーを出さずにディレクトリサンプルをコンパイルするにはどうしたらよいでしょうか。
よく問題に遭遇します。コンパイラは、コードに "variable already defined "というエラーを出して悪態をつく。
https://docs.mql4.com/ru/basis/variables/local のリファレンスガイドにはこう書かれている。
ブロック内部(内部レベル)で宣言された 変数は、そのブロックのスコープを持つ。
ブロックが入れ子になっており、外部ブロックの識別子が内部ブロックの識別子と同じ名前の場合、内部ブロックが完了するまで外部ブロックの識別子は「不可視」(hidden)となる。
しかし、同じ参考書の例でも「変数がすでに定義されています」というエラーが出て、コンパイルできないのです。
サイクルと同じ問題です。
この問題を回避し、"variable already defined" というエラーを出さずにディレクトリサンプルをコンパイルするにはどうしたらよいでしょうか。
この問題を回避して、"variable already defined" というエラーを出さずにディレクトリサンプルをコンパイルするにはどうしたらよいでしょうか?
リファレンスブックのすべての例が長期間正しく動作するわけではない
というのは、この例では、スコープによって、1つの演算子内の可視性はローカルであり、間違いなくこのように動作するはずだからです。
i.e.for 文の 中の可視性はローカルであり、i と x 変数は終了時に失われます。
Peak Repainterインジケータの最後のピークがEAで処理されるように探してみた。
その結果、実際には-1であるべきなのに、グローバル変数 に1が書き込まれることになります。
どうしたんですか?コードで?インジケーターで?
インジケーターは初期設定のまま使用します。
Peak Repainterインジケータの最後のピークがEAで処理されるように探してみた。
その結果、実際には-1であるべきなのに、グローバル変数 に1が書き込まれることになります。
どうしたんですか?コードで?インジケーターで?
インジケーターは初期設定のまま使用します。
インジケーターの名称は なぜそうなっているのですか?
なぜインジケーターの名前 なのですか?
ただ、私は異なるEA用のインジケータを異なるディレクトリに置いているのです。そして、グループ化されるように若干名前を変えています。
名称は何かに影響するのか?
私は、異なるEA用のインジケータを異なるディレクトリに置いているだけです。そして、グループ化されるように若干名前を変えています。
名称は何かに影響するのか?
МТ4 のファイルへのアクセスはすべて MQL4 フォルダ内で行われ、このフォルダ外の Expert Advisors/Script/Indicators からの終了はセキュリティ上の理由から除外されています。
MT4のファイルへのアクセスはすべてMQL4フォルダー内で行われ、このフォルダー外のEA/スクリプト/インジケーターからの終了はセキュリティ上の理由で除外されます。