[解決済み] 異なる作業時間枠のインディケータから呼び出され作成された場合、インディケータが適切にインスタンス化されない。 - ページ 2 1234 新しいコメント nicholish en 2017.01.31 13:35 #11 Alain Verleyen:あなたは「インスタンス化に失敗する」と繰り返していますが、それは正確ではありません。インジケータはすべてのケースでインスタンス化されます。 問題は、データが同期的に利用できないことで、それに対処する必要があります。これはMT5のバグではなく、機能なのです。私は議論を中断し、SDの答えを待つことを提案します。おそらく私は、いくらループして待機しても、(※編集)OnCalculate()の最初のパスの後まで、(異なるTFの)インジケータデータにアクセスすることができないことを適切に表現していなかったのでしょう。私は、私が間違っている可能性があることを完全に受け入れるつもりです。お願いです...私が間違っていることを証明してください。この馬鹿げたバグの回避策が必要なのです。 Alain Verleyen 2017.01.31 13:59 #12 nicholishen:おそらく私は、いくらループや待機があっても、(*編集)OnCalculate()の最初のパスの後まで、(異なるTFの)インジケータデータにアクセスすることができないことを適切に表現していませんでした。私は、私が間違っている可能性があることを完全に受け入れるつもりです。お願いです...私が間違っていることを証明してください。この馬鹿げたバグの回避策が必要なのです。 なぜ、最初の「パス」にそれが必要なのですか?必要なデータが入手できない場合は、入手できるまで待つ、それだけです。 nicholish en 2017.01.31 14:08 #13 Alain Verleyen: なぜ最初の「パス」で必要なのですか?必要なデータが入手できないなら、入手できるまで待てばいい、それだけのことです。なぜなら、異なる時間枠の同じインディケータ(同じシンボル)のデータにアクセスする必要があるインディケータを開発しているからです。 2ティック目以降でないと処理しないため、このインディケータはオフラインでは動作 せず、2ティックが来たときのみ動作することになります。なぜ、このバグのために妥協しなければならないのでしょうか?そんなに猛烈に擁護してどうするんだ? Alain Verleyen 2017.01.31 14:16 #14 nicholishen: なぜなら、異なる時間枠の同じインディケータ(同じシンボル)のデータにアクセスする必要があるインディケータを開発しているからです。 2ティック目以降でないと処理しないので、これはオフラインではインディケータが動作 せず、2ティックが来たときだけ動作することを意味します。なぜ、このバグのために妥協しなければならないのでしょうか?そんなに猛烈に擁護してどうするんだ????私は何も擁護していませんし、ましてや「猛烈に」擁護しているわけではありません。冷静になってください。 nicholish en 2017.01.31 14:19 #15 Alain Verleyen:???私は何も擁護していませんし、確かに「猛烈に」擁護していません。クールな滞在してください。 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム [MQL5 BUG】異なるワーキングタイムフレームのIndicatorから呼び出された/作成された場合、Indicatorは適切にインスタンス化されない。 アラン・ヴェルレーエン 2017.01.31 12:46 OKあなたは私を信じていない、それはあなたの権利ですが、あなたは間違っています 私は、ServiceDeskに手紙を書いて、その答えをここに報告することを提案することができます。OKです。私は誰かがそれを取ることに興味を持っている場合には、この仕事を投稿しました。 https://www.mql5.com/en/job/57516 Stanislav Korotky 2017.01.31 19:58 #16 nicholishen:これは、データがスクリプトまたはEAですぐに利用可能であれば、インディケータでも同様に利用可能であることを意味します(これはデータの利用可能性の問題 ではありません)。インジケータは、OnCalculate()の2回目のパス(最初のティック)の前にインスタンス化に失敗しているだけです。あなたは「利用可能性」という言葉を文字通り理解しすぎています。いくつかのデータは端末のメモリに存在することができますが、端末自体は、基礎となるデータが1つの(おそらく別の)タイムフレームについてチェックされる間、任意の タイムフレームの更新をブロックするいくつかの同期ロジックを含んでいるかもしれません。あるいは、インジケータがその作成を終えるまで、インジケータからのデータ要求をブロックすることができます(インジケータはいわゆるハンドルによって管理され、エキスパートやスクリプトは管理されないことを思い出してください)。これらは、MQ開発者の視点から推測したものです。サービスデスクを通じて直接質問することができます。3.の点から、あなたの仕事は不可能です。3.初期化時にバッファにアクセスする必要が あるこれは、端末のアーキテクチャやドキュメントに反して いるだけです。インジケータの計算には時間がかかるため、インジケータを作成した直後にデータを参照することはできません。CopyBuffer 関数についてはこちらもご覧ください。注意事項インジケータにデータを要求 する際、要求された時系列がまだ構築されていないか、サーバからダウンロードする必要がある場合、この関数は直ちに-1を返しますが、ダウンロード/構築のプロセスが開始されます。エキスパートアドバイザーやスクリプトにデータを要求 する場合、端末がローカルにこれらのデータを持っていない場合はサーバーからのダウンロードが 開始され、ローカル履歴からデータを構築できるがまだ準備ができていない場合は必要なタイムスリリーの構築が開始されます。この関数は、タイムアウトまでに準備できるデータ量を返します。したがって、エキスパートとスクリプトはあらかじめ定義されたタイムアウトまで同期的に処理されますが、インジケータは非同期的に処理されます。 Documentation on MQL5: Technical Indicators www.mql5.com Technical Indicators - Reference on algorithmic/automated trading language for MetaTrader 5 Stanislav Korotky 2017.01.31 20:02 #17 あなたの特定のタスクに関しては、他の方法で簡単に行うことができます。インジケータでインジケータを 構築し、オフラインで動作させたい人は、あなたが最初ではありません。タイマーを使ってください。 nicholish en 2017.01.31 20:04 #18 Stanislav Korotky: あなたの特定のタスクに関しては、他の方法で簡単に行うことができます。インジケータでインジケータを構築し、オフラインで動作させたい人は、あなたが最初ではありません。タイマーを使ってください。 試してみた。うまくいかなかった。 Stanislav Korotky 2017.01.31 20:14 #19 nicholishen: 試してみた。うまくいきませんでした。 もっと具体的な質問をサンプルコード付きで投稿してください。バグがあるかもしれません。この方法は私の場合はうまくいきました。 nicholish en 2017.01.31 20:20 #20 Stanislav Korotky: もっと具体的な質問をサンプルコード付きで投稿してください。それはバグがある可能性があります。この方法は私にとっては有効です。 私は今以上に具体的な方法を理解することはできません...タイマーやループをいくら使っても、Oncalculateが少なくとも1回返されるまでインジケータがインスタンス化されないという事実を克服することはできません。再帰もうまくいきません。 1234 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
あなたは「インスタンス化に失敗する」と繰り返していますが、それは正確ではありません。インジケータはすべてのケースでインスタンス化されます。
問題は、データが同期的に利用できないことで、それに対処する必要があります。これはMT5のバグではなく、機能なのです。
私は議論を中断し、SDの答えを待つことを提案します。
おそらく私は、いくらループして待機しても、(※編集)OnCalculate()の最初のパスの後まで、(異なるTFの)インジケータデータにアクセスすることができないことを適切に表現していなかったのでしょう。
私は、私が間違っている可能性があることを完全に受け入れるつもりです。お願いです...私が間違っていることを証明してください。この馬鹿げたバグの回避策が必要なのです。
おそらく私は、いくらループや待機があっても、(*編集)OnCalculate()の最初のパスの後まで、(異なるTFの)インジケータデータにアクセスすることができないことを適切に表現していませんでした。
私は、私が間違っている可能性があることを完全に受け入れるつもりです。お願いです...私が間違っていることを証明してください。この馬鹿げたバグの回避策が必要なのです。
なぜ最初の「パス」で必要なのですか?必要なデータが入手できないなら、入手できるまで待てばいい、それだけのことです。
なぜなら、異なる時間枠の同じインディケータ(同じシンボル)のデータにアクセスする必要があるインディケータを開発しているからです。 2ティック目以降でないと処理しないため、このインディケータはオフラインでは動作 せず、2ティックが来たときのみ動作することになります。
なぜ、このバグのために妥協しなければならないのでしょうか?そんなに猛烈に擁護してどうするんだ?
なぜなら、異なる時間枠の同じインディケータ(同じシンボル)のデータにアクセスする必要があるインディケータを開発しているからです。 2ティック目以降でないと処理しないので、これはオフラインではインディケータが動作 せず、2ティックが来たときだけ動作することを意味します。
なぜ、このバグのために妥協しなければならないのでしょうか?そんなに猛烈に擁護してどうするんだ?
???
私は何も擁護していませんし、ましてや「猛烈に」擁護しているわけではありません。冷静になってください。
???
私は何も擁護していませんし、確かに「猛烈に」擁護していません。クールな滞在してください。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
[MQL5 BUG】異なるワーキングタイムフレームのIndicatorから呼び出された/作成された場合、Indicatorは適切にインスタンス化されない。
アラン・ヴェルレーエン 2017.01.31 12:46
OKあなたは私を信じていない、それはあなたの権利ですが、あなたは間違っています
私は、ServiceDeskに手紙を書いて、その答えをここに報告することを提案することができます。
OKです。
私は誰かがそれを取ることに興味を持っている場合には、この仕事を投稿しました。
https://www.mql5.com/en/job/57516
これは、データがスクリプトまたはEAですぐに利用可能であれば、インディケータでも同様に利用可能であることを意味します(これはデータの利用可能性の問題 ではありません)。インジケータは、OnCalculate()の2回目のパス(最初のティック)の前にインスタンス化に失敗しているだけです。
あなたは「利用可能性」という言葉を文字通り理解しすぎています。いくつかのデータは端末のメモリに存在することができますが、端末自体は、基礎となるデータが1つの(おそらく別の)タイムフレームについてチェックされる間、任意の タイムフレームの更新をブロックするいくつかの同期ロジックを含んでいるかもしれません。あるいは、インジケータがその作成を終えるまで、インジケータからのデータ要求をブロックすることができます(インジケータはいわゆるハンドルによって管理され、エキスパートやスクリプトは管理されないことを思い出してください)。これらは、MQ開発者の視点から推測したものです。サービスデスクを通じて直接質問することができます。
3.の点から、あなたの仕事は不可能です。
3.初期化時にバッファにアクセスする必要が ある
これは、端末のアーキテクチャやドキュメントに反して いるだけです。
インジケータの計算には時間がかかるため、インジケータを作成した直後にデータを参照することはできません。
CopyBuffer 関数についてはこちらもご覧ください。
注意事項
インジケータにデータを要求 する際、要求された時系列がまだ構築されていないか、サーバからダウンロードする必要がある場合、この関数は直ちに-1を返しますが、ダウンロード/構築のプロセスが開始されます。
エキスパートアドバイザーやスクリプトにデータを要求 する場合、端末がローカルにこれらのデータを持っていない場合はサーバーからのダウンロードが 開始され、ローカル履歴からデータを構築できるがまだ準備ができていない場合は必要なタイムスリリーの構築が開始されます。この関数は、タイムアウトまでに準備できるデータ量を返します。
したがって、エキスパートとスクリプトはあらかじめ定義されたタイムアウトまで同期的に処理されますが、インジケータは非同期的に処理されます。
あなたの特定のタスクに関しては、他の方法で簡単に行うことができます。インジケータでインジケータを構築し、オフラインで動作させたい人は、あなたが最初ではありません。タイマーを使ってください。
試してみた。うまくいきませんでした。
もっと具体的な質問をサンプルコード付きで投稿してください。それはバグがある可能性があります。この方法は私にとっては有効です。