MQL5でiClose/iOpenの時系列アクセスなどを操作した場合の不具合。 - ページ 3 12345678910 新しいコメント הטרנסצנדנטלי בעל-חזון 2018.11.14 15:48 #21 例えば、開発者が明らかにプロで、アーキテクチャや速度最適化の専門家であることを考えると、このような関数を正しい方法で書いて標準ライブラリ に入れることは難しいことではないはずで、ありがたいユーザーは非常に感謝することでしょう。 Unicornis 2018.11.14 16:13 #22 Renat Fatkhullin:あなたの指標は途方もなく遅い受信/再生ティック、1ティックのためにミリ秒あるいは秒の数百を費やしているときにデータが(より多くのそれは保証されている)、利用可能になる場所を考えてみてください。その結果、どのCPUもティックを処理する時間が足りず、赤字が累積し、チャート履歴が滞ることになる。 ギブ保証」というのは、「何も知りたくない、好きなように書き続けたい、パフォーマンスやロックのことは考えたくない、ただギブしてくれ」という要望である可能性が高いのではないでしょうか? 何百万本ものバーが使えるようになったら、自分や他の人の指標のパフォーマンスを考えてみてください。下手で高価なインジケータは、そのシンボルのチャート更新を簡単に停止させることができます。 まず、OnCalculateの応答時間をマイクロ秒単位で測定します。次に、1秒を平均ティック応答時間で割ると、インジケータの最大ティック処理能力が1秒あたりのティック数で得られます。 これはすぐに身が引き締まる思いです。ゼロバーの再計算や、ゼロバーの中の聖杯がお好きな方は、既存のバージョンをご利用ください。OnInitに新しい関数を追加 - iOnCalculate - iCustomのように、インジケータ内のTF関数/ OnCalculateの1つへのハンドル、しかしそれはわずかに近い、OnCalculate上のインジケータバッファは ハンドルiOnCalculateにバインドされていなければなりません。OnCalculateなどのインジケータ関数では、新しいティックバーのみを送信します。ターミナルは何も変わりません。OnCalculateの基本ロジックは同じで、インジケータのメインボディがOnMainなどに追加されます。 (現在、すべてはリソースとしてメインインジケータに添付され、新しいバーでそこから呼び出されるインジケータによって行われます)。 Renat Fatkhullin 2018.11.14 16:14 #23 transcendreamer: 必ずしも超高速が必要なわけではなく、使い勝手も非常に重要です。今、多通貨のインディケータを 書くのは「手で太陽を沈める」ようなものです。MT4でもi機能でゆっくりでも、いつでも取得できたので簡単でしたが、MT5では取得できるかできないか、しかも特別なコードを自分で作らないといけない。理屈は抜きにして。 再現したい例を提出するだけで、あなたのケースの周りにあるホラーを確認することができます。今のところ、性能を全く無視し、キラーリタード指標を隠し、影を落とそうとしているようにしか見えない。 הטרנסצנדנטלי בעל-חזון 2018.11.14 16:25 #24 Renat Fatkhullin:理屈は抜きにして。 再現する例を提示するだけで、どんなホラーに包まれるのかがわかります。今のところ、性能を全く無視し、キラーリタードの指標を隠し、影を落とそうとしているように見えます。 添付の例は、完成されたコードではなく、不完全なところもありますが、実行することは可能です。 私はプログラマーではないので、コードが最適でないことは確かです。 私は本当に上記のように同期された配列を構築するようなシンプルで信頼性の高い関数が欲しいのです https://www.mql5.com/ru/forum/289897/page2#comment_9363454. 文句を言うわけでもなく、自分のインジケータを書けというわけでもなく、ただ(ちなみに私だけではなく)素敵な標準関数が欲しいだけなのです。 EDIT: 添付ファイルを修正しました。 Баг MQL5 при работе c доступом к таймсериям iClose/iOpen и т.д. 2018.11.14www.mql5.com Общее обсуждение: Баг MQL5 при работе c доступом к таймсериям iClose/iOpen и т.д. ファイル: Portfolio-Modeller.mq5 131 kb debug.tpl 99 kb Stanislav Dray 2018.11.14 16:28 #25 Renat Fatkhullin:私のアドバイス通りにしてください。 それ以外の場合は、100%再生するためのフルマテリアルが必要です。バグレポートに対する姿勢がおかしい。何かを証明するためにお金をもらっているわけではありません。私は、できる限り状況を説明した。 私だけの問題ではなく、30回目のアップデートの後に問題が発生したのですが、それでもあなたは私を馬鹿にして、一部の動きの遅いインジケーターのせいだとほざいていますね。 その前の1年間は遅かったのでは? 以下は、M30で25分後にハングアップするコードの例です。 //+------------------------------------------------------------------+ //| Feezzzz.mq5 | //| Copyright 2018, Dray Stanislav | //| https://www.mql5.com/ru/users/fan9 | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, Dray Stanislav" #property link "https://www.mql5.com/ru/users/fan9" #property version "1.00" //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- datetime CM1_T[1]; if(CopyTime(_Symbol,PERIOD_M1,0,1,CM1_T)==-1){ Comment("\n\n CopyTime return -1"); return; } Comment("\n\n CopyTime : "+TimeToString(CM1_T[0],TIME_DATE | TIME_SECONDS)); } //+------------------------------------------------------------------+ //| Trade function | //+------------------------------------------------------------------+ void OnTrade() { //--- } //+------------------------------------------------------------------+ そして、その結果がこれです。 Renat Fatkhullin 2018.11.14 16:52 #26 transcendreamer: 添付の例は、まだ完全なコードではなく、書かれていないところもありますが、実行できますので、便宜上、テンプレートも添付しておきます。 私はプログラマーではないので、コードが最適でないことは確かですが、私は人道的な経済学者です。 私は本当に上記のように同期された配列を構築するようなシンプルで信頼性の高い関数が欲しいのです https://www.mql5.com/ru/forum/289897/page2#comment_9363454. 文句を言うわけでもなく、迷惑をかけるわけでもない。 文句を言うわけでもなく、自分のインジケータを書いてくれというわけでもなく、ただ(ちなみに私だけではなく)素敵な標準関数が欲しいだけなのです。 EDIT: 添付ファイルを修正しました。 ありがとうございます、これから確認します。 Renat Fatkhullin 2018.11.14 16:54 #27 Stanislav Dray:バグレポートに対する姿勢がおかしい。何かを証明するためにお金をもらっているわけではありません。できる限り状況を説明したつもりです。 このスレッドで私が先に書いたことは、何らバグレポートとして適格ではありません。 全ては、技術的な詳細を伴わないクレームのパターンで進んでいった。その詳細が明らかになったのは、私が問い合わせてからだ。 Vladimir Karputov 2018.11.14 17:10 #28 Stanislav Dray:バグレポートに対する姿勢がおかしい。何かを証明するためにお金をもらっているわけではありません。できる限り状況を説明したつもりです。 この問題は私だけの問題ではなく、30回目のアップデートの後に発生したのですが、それでもあなたは私が馬鹿だとほざき、一部の遅れたインジケーターのせいにしました。 その前の1年間は遅かったのでは? 以下は、M30で25分後にハングアップするコードの例です。 そして、その結果がこれです。 アップロード 2018.11.14 17:33:32.570 Experts expert Feezzzz (USDCHF,M30) loaded successfully 現在18.10 すべてがうまくいっています。 Renat Fatkhullin 2018.11.14 17:50 #29 transcendreamer:例を添付します、まだ完全なコードではありません、ところどころ書き足らないところがありますが、実行できます、便宜上テンプレートも添付します。コードと作品を一度にお見せします。 インジケータのCopyXXX関数は、完全な同期データのダウンロードを待たず、利用可能なものを提供します。そうでなければ、インジケータはすべてを完全に凍結してしまうでしょう。どうやら、初回にすべてのデータが同期されていない場合、フォローアップに問題があるようです。 ダウンロードが成功するのをじっくり待つ」という優しいモードに変更する必要があるのです。例えば、OnCalculateは 呼び出されない。悪い点は、最大の負荷がかかるグローバルな初期化が、インジケータがカウントして待つのに非常に長い時間がかかるOnInitに置かれていることです。 この場合、このシンボルのチャートの更新はブロックされ、他の多くの参加者は新鮮なデータを受け取ることなく待機しなければなりません。インジケータは長時間リソースを取らないようにする必要があります。OnCalculateで長い初期化ステップを一歩一歩カウントしながら伸ばしていく・シンボル初期化するのがよいでしょう。このインジケーターは、同期のためにネットワーク経由で約800MBのヒストリカルデータを送り出しているんだインジケータには512本の描画線があり、そのために明示的にメモリが割り当てられている。これは非常に高価なものです。使用するのは100ラインのみ。コードの可読性が悪い Renat Fatkhullin 2018.11.14 17:50 #30 Stanislav Dray:バグレポートに対する姿勢がおかしい。何かを証明するためにお金をもらっているわけではありません。できる限り状況を説明したつもりです。 この問題は私だけの問題ではなく、30回目のアップデートの後に発生したのですが、それでもあなたは私が馬鹿だとほざき、一部の遅れたインジケーターのせいにしました。 その前の1年間は遅かったのでは? 以下は、M30で25分後にハングアップするコードの例です。 そして、その結果がこれです。 そのコードを実行に移しました。今のところ順調です。 ちなみに本文のないファイル。 12345678910 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
あなたの指標は途方もなく遅い受信/再生ティック、1ティックのためにミリ秒あるいは秒の数百を費やしているときにデータが(より多くのそれは保証されている)、利用可能になる場所を考えてみてください。その結果、どのCPUもティックを処理する時間が足りず、赤字が累積し、チャート履歴が滞ることになる。
ギブ保証」というのは、「何も知りたくない、好きなように書き続けたい、パフォーマンスやロックのことは考えたくない、ただギブしてくれ」という要望である可能性が高いのではないでしょうか?
何百万本ものバーが使えるようになったら、自分や他の人の指標のパフォーマンスを考えてみてください。下手で高価なインジケータは、そのシンボルのチャート更新を簡単に停止させることができます。
まず、OnCalculateの応答時間をマイクロ秒単位で測定します。次に、1秒を平均ティック応答時間で割ると、インジケータの最大ティック処理能力が1秒あたりのティック数で得られます。
これはすぐに身が引き締まる思いです。
ゼロバーの再計算や、ゼロバーの中の聖杯がお好きな方は、既存のバージョンをご利用ください。OnInitに新しい関数を追加 - iOnCalculate - iCustomのように、インジケータ内のTF関数/ OnCalculateの1つへのハンドル、しかしそれはわずかに近い、OnCalculate上のインジケータバッファは ハンドルiOnCalculateにバインドされていなければなりません。OnCalculateなどのインジケータ関数では、新しいティックバーのみを送信します。ターミナルは何も変わりません。OnCalculateの基本ロジックは同じで、インジケータのメインボディがOnMainなどに追加されます。 (現在、すべてはリソースとしてメインインジケータに添付され、新しいバーでそこから呼び出されるインジケータによって行われます)。
必ずしも超高速が必要なわけではなく、使い勝手も非常に重要です。今、多通貨のインディケータを 書くのは「手で太陽を沈める」ようなものです。MT4でもi機能でゆっくりでも、いつでも取得できたので簡単でしたが、MT5では取得できるかできないか、しかも特別なコードを自分で作らないといけない。
理屈は抜きにして。
再現したい例を提出するだけで、あなたのケースの周りにあるホラーを確認することができます。今のところ、性能を全く無視し、キラーリタード指標を隠し、影を落とそうとしているようにしか見えない。
理屈は抜きにして。
再現する例を提示するだけで、どんなホラーに包まれるのかがわかります。今のところ、性能を全く無視し、キラーリタードの指標を隠し、影を落とそうとしているように見えます。
添付の例は、完成されたコードではなく、不完全なところもありますが、実行することは可能です。
私はプログラマーではないので、コードが最適でないことは確かです。
私は本当に上記のように同期された配列を構築するようなシンプルで信頼性の高い関数が欲しいのです https://www.mql5.com/ru/forum/289897/page2#comment_9363454.
文句を言うわけでもなく、自分のインジケータを書けというわけでもなく、ただ(ちなみに私だけではなく)素敵な標準関数が欲しいだけなのです。
EDIT: 添付ファイルを修正しました。
私のアドバイス通りにしてください。
それ以外の場合は、100%再生するためのフルマテリアルが必要です。バグレポートに対する姿勢がおかしい。何かを証明するためにお金をもらっているわけではありません。私は、できる限り状況を説明した。
私だけの問題ではなく、30回目のアップデートの後に問題が発生したのですが、それでもあなたは私を馬鹿にして、一部の動きの遅いインジケーターのせいだとほざいていますね。
その前の1年間は遅かったのでは?
以下は、M30で25分後にハングアップするコードの例です。
そして、その結果がこれです。
添付の例は、まだ完全なコードではなく、書かれていないところもありますが、実行できますので、便宜上、テンプレートも添付しておきます。
私はプログラマーではないので、コードが最適でないことは確かですが、私は人道的な経済学者です。
私は本当に上記のように同期された配列を構築するようなシンプルで信頼性の高い関数が欲しいのです https://www.mql5.com/ru/forum/289897/page2#comment_9363454.
文句を言うわけでもなく、迷惑をかけるわけでもない。
文句を言うわけでもなく、自分のインジケータを書いてくれというわけでもなく、ただ(ちなみに私だけではなく)素敵な標準関数が欲しいだけなのです。
EDIT: 添付ファイルを修正しました。
バグレポートに対する姿勢がおかしい。何かを証明するためにお金をもらっているわけではありません。できる限り状況を説明したつもりです。
このスレッドで私が先に書いたことは、何らバグレポートとして適格ではありません。
全ては、技術的な詳細を伴わないクレームのパターンで進んでいった。その詳細が明らかになったのは、私が問い合わせてからだ。
バグレポートに対する姿勢がおかしい。何かを証明するためにお金をもらっているわけではありません。できる限り状況を説明したつもりです。
この問題は私だけの問題ではなく、30回目のアップデートの後に発生したのですが、それでもあなたは私が馬鹿だとほざき、一部の遅れたインジケーターのせいにしました。
その前の1年間は遅かったのでは?
以下は、M30で25分後にハングアップするコードの例です。
そして、その結果がこれです。
アップロード
現在18.10 すべてがうまくいっています。
例を添付します、まだ完全なコードではありません、ところどころ書き足らないところがありますが、実行できます、便宜上テンプレートも添付します。
コードと作品を一度にお見せします。
ダウンロードが成功するのをじっくり待つ」という優しいモードに変更する必要があるのです。例えば、OnCalculateは 呼び出されない。
この場合、このシンボルのチャートの更新はブロックされ、他の多くの参加者は新鮮なデータを受け取ることなく待機しなければなりません。インジケータは長時間リソースを取らないようにする必要があります。OnCalculateで長い初期化ステップを一歩一歩カウントしながら伸ばしていく・シンボル初期化するのがよいでしょう。
バグレポートに対する姿勢がおかしい。何かを証明するためにお金をもらっているわけではありません。できる限り状況を説明したつもりです。
この問題は私だけの問題ではなく、30回目のアップデートの後に発生したのですが、それでもあなたは私が馬鹿だとほざき、一部の遅れたインジケーターのせいにしました。
その前の1年間は遅かったのでは?
以下は、M30で25分後にハングアップするコードの例です。
そして、その結果がこれです。
そのコードを実行に移しました。今のところ順調です。
ちなみに本文のないファイル。