エラー、バグ、質問 - ページ 2888 1...288128822883288428852886288728882889289028912892289328942895...3185 新しいコメント Artyom Trishkin 2020.10.27 06:44 #28871 Denis Diakonov:教えてください!新しいティックが入ったときにサーバーの時刻が更新されないのはなぜですか?EAが起動した瞬間は全て正常に動作しているのですが、その後時間が経過しても現在の分の新しい値が変数に入ってきません。つまり、変数int M = TimeMinute(TimeCurrent()) で得られる数値によってExpert Advisorが動作するのです。実はこのコード行はリファレンスにあったもので、うまくいかないのです。例えば、12時に起動した場合、サーバーから返される現在の時刻は 変数内の時刻と一致しますが、時計ではすでに15-20分経過しているにもかかわらず、変数はまだ12時のままになっています。 MQL5では、TimeMinute()は使用できません。 MQL4に関するご質問は、該当するMetaTrader 4のブランチに投稿してください。 クロスプラットフォームソリューションが必要な場合は、MqlDateTimeを 使用してください。 Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура даты www.mql5.com Порядковый номер в году day_of_year в високосном году, начиная с марта, будет отличаться от порядкового номера соответствующего дня в невисокосном году. A100 2020.10.27 09:27 #28872 怪しげな警告ですね。 void OnStart() { for ( int i = 0, j; i < 10; i = j ) //(1) Warning: possible use of uninitialized variable 'j' { j = i+1; } }が、それでいい。void OnStart() { for ( int i = 0, j; i < 10; ) //(2) нормально { j = i+1; i = j; } }根本的な違いは何でしょうか? Alexey Viktorov 2020.10.27 10:03 #28873 A100: かなり怪しげな警告ですね。 が、それでいい。根本的な違いは何でしょうか? 正しい警告変数iにjの値が代入されるとき、最初の使用前に変数jは初期化されない。 そして、2つ目のバリエーションでは、j変数にi+1という値が代入され、初めてi = jとなる 本来は警告なしでこうあるべきなのですが、テストしていないので...。 void OnStart() { for ( int i = 0, j = 0; i < 10; i = j ) { j = i+1; } } TheXpert 2020.10.27 10:08 #28874 Alexey Viktorov:正しい警告 の場合、これらは同一のサイクルである。 Alexey Viktorov 2020.10.27 13:21 #28875 TheXpert: は、同じループです。 では、このループの同一性によって、未同定の変数が使えるようになるのか? A100 2020.10.27 13:33 #28876 Alexey Viktorov:では、このループの同一性によって、未同定の変数が使えるようになるのか? ループが同一であれば、コンパイラの動作も同一になるはずですが、それが異なっています。そこに間違いがあるのです。(1)で 警告がある理由を説明しましたが、(2)で警告がない理由を説明してください。原理的に何が変わったのでしょうか?それから、初期化されていない変数が使われている場合、なぜコードを実行すると最終結果が正しくなるのでしょうか? そんな科学、ロジックがあるのです。AとBが同じでAが赤なら、Bも緑ではなく 赤 であるべきだ Roman 2020.10.27 13:59 #28877 A100:ループが同じなら、コンパイラの動作も同じはずなのに、違っているのです。ここに間違いがあるのです。(1)で 警告がある理由を説明し、(2)で警告がない理由を説明してください。原理的に何が変わったのでしょうか?それから、初期化されていない変数が使われている場合、なぜコードを実行すると最終結果が正しくなるのでしょうか?そんな科学、ロジックがあるのです。AとBが同じでAが赤なら、Bも赤で なければならず、緑では ありません。 そこに乱数は存在しない。そこにはゼロがある。 MQも修正しました )) void OnStart() { int val; Print(val); Print(IntegerToString(val)); } A100 2020.10.27 14:08 #28878 Roman:そこに乱数は 存在しない。そこにはゼロがある。 MQはその点も修正しました )) まず確認すること-それから「でたらめ」。 void OnStart() { for ( int i = 0, j; i < 10; i++ ) { Print( j ); break; } } 結果: -2052256859 Roman 2020.10.27 14:16 #28879 A100:まず確認すること、それから「くだらないことを言う」ことです。結果: -2052256859 void OnStart() { for ( int i = 0, j; i < 10; i++ ) { Print( j ); } } 2020.10.27 17:14:46.623 TestScript (NZDUSD,M1) 0 2020.10.27 17:14:46.623 TestScript (NZDUSD,M1) 0 2020.10.27 17:14:46.623 TestScript (NZDUSD,M1) 0 2020.10.27 17:14:46.623 TestScript (NZDUSD,M1) 0 2020.10.27 17:14:46.623 TestScript (NZDUSD,M1) 0 2020.10.27 17:14:46.623 TestScript (NZDUSD,M1) 0 2020.10.27 17:14:46.623 TestScript (NZDUSD,M1) 0 2020.10.27 17:14:46.623 TestScript (NZDUSD,M1) 0 2020.10.27 17:14:46.623 TestScript (NZDUSD,M1) 0 2020.10.27 17:14:46.623 TestScript (NZDUSD,M1) 0 VirtualBoxにテスト用端末をインストールしているためか また、コンパイラが変数が初期化されていないことを警告してくれません。 しかし、このように警告しています。 void OnStart() { for ( int i = 0, j; i < 10; i++ ) { Print( IntegerToString(j) ); } } A100 2020.10.27 14:26 #28880 Roman: おそらく、VirtualBoxにテスト用端末をインストールしているためだと思いますが あなたは乱数0、私は540016640です。 2020.10.27 17:24:25.244 0011 (EURUSD,H4) 540016640 2020.10.27 17:24:25.244 0011 (EURUSD,H4) 540016640 2020.10.27 17:24:25.244 0011 (EURUSD,H4) 540016640 2020.10.27 17:24:25.244 0011 (EURUSD,H4) 540016640 2020.10.27 17:24:25.244 0011 (EURUSD,H4) 540016640 2020.10.27 17:24:25.244 0011 (EURUSD,H4) 540016640 2020.10.27 17:24:25.244 0011 (EURUSD,H4) 540016640 2020.10.27 17:24:25.244 0011 (EURUSD,H4) 540016640 2020.10.27 17:24:25.244 0011 (EURUSD,H4) 540016640 2020.10.27 17:24:25.244 0011 (EURUSD,H4) 540016640 が、乱数であることに変わりはない。 1...288128822883288428852886288728882889289028912892289328942895...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
教えてください!
新しいティックが入ったときにサーバーの時刻が更新されないのはなぜですか?
EAが起動した瞬間は全て正常に動作しているのですが、その後時間が経過しても現在の分の新しい値が変数に入ってきません。
つまり、変数int M = TimeMinute(TimeCurrent()) で得られる数値によってExpert Advisorが動作するのです。
実はこのコード行はリファレンスにあったもので、うまくいかないのです。
例えば、12時に起動した場合、サーバーから返される現在の時刻は 変数内の時刻と一致しますが、時計ではすでに15-20分経過しているにもかかわらず、変数はまだ12時のままになっています。
MQL5では、TimeMinute()は使用できません。
MQL4に関するご質問は、該当するMetaTrader 4のブランチに投稿してください。
クロスプラットフォームソリューションが必要な場合は、MqlDateTimeを 使用してください。
が、それでいい。
根本的な違いは何でしょうか?
かなり怪しげな警告ですね。
が、それでいい。
根本的な違いは何でしょうか?
正しい警告変数iにjの値が代入されるとき、最初の使用前に変数jは初期化されない。
そして、2つ目のバリエーションでは、j変数にi+1という値が代入され、初めてi = jとなる
本来は警告なしでこうあるべきなのですが、テストしていないので...。
正しい警告
は、同じループです。
では、このループの同一性によって、未同定の変数が使えるようになるのか?
では、このループの同一性によって、未同定の変数が使えるようになるのか?
ループが同一であれば、コンパイラの動作も同一になるはずですが、それが異なっています。そこに間違いがあるのです。(1)で 警告がある理由を説明しましたが、(2)で警告がない理由を説明してください。原理的に何が変わったのでしょうか?それから、初期化されていない変数が使われている場合、なぜコードを実行すると最終結果が正しくなるのでしょうか?
そんな科学、ロジックがあるのです。AとBが同じでAが赤なら、Bも緑ではなく 赤 であるべきだ
ループが同じなら、コンパイラの動作も同じはずなのに、違っているのです。ここに間違いがあるのです。(1)で 警告がある理由を説明し、(2)で警告がない理由を説明してください。原理的に何が変わったのでしょうか?それから、初期化されていない変数が使われている場合、なぜコードを実行すると最終結果が正しくなるのでしょうか?
そんな科学、ロジックがあるのです。AとBが同じでAが赤なら、Bも赤で なければならず、緑では ありません。
そこに乱数は存在しない。そこにはゼロがある。
MQも修正しました ))
そこに乱数は 存在しない。そこにはゼロがある。
MQはその点も修正しました ))
まず確認すること-それから「でたらめ」。
結果: -2052256859
まず確認すること、それから「くだらないことを言う」ことです。
結果: -2052256859
VirtualBoxにテスト用端末をインストールしているためか
また、コンパイラが変数が初期化されていないことを警告してくれません。
しかし、このように警告しています。
おそらく、VirtualBoxにテスト用端末をインストールしているためだと思いますが
あなたは乱数0、私は540016640です。
が、乱数であることに変わりはない。