エラー、バグ、質問 - ページ 2723 1...271627172718271927202721272227232724272527262727272827292730...3185 新しいコメント Igor Makanu 2020.04.23 22:57 #27221 Aleksey Mavrin: 何が悪いのか、どうすればチャートの更新を早くできるのか、教えてください。 Expert Advisor から ChartRedraw 関数が呼び出されますが、まだ数分の遅れがあります。 ChartRedrawはグラフィックオブジェクトの描画(更新)にのみ必要で、インジケータバッファで 描画する通常のインジケータには必要ありません。 多分、バッファの計算が毎ティック正しくないと思います。 ZZY: 確認はできませんが、もしかしたらChartRedrawはチャート全体の履歴を同期して更新しているかもしれません、もしそうなら、実際には毎回履歴全体を計算しながらインジケータを再起動します。 UPD:チャート上の履歴をより少ないバーの数に制限してみてください 10 000で十分です、MT4で重い指標は、すべてのメモリを "ゴブルアップ "とし、EAが正しく動作しない理由を検索した場合(それが動作していない)であった。MT5では、すべてのメモリを使用したとは考えにくいのですが......。 Aleksey Mavrin 2020.04.23 23:09 #27222 Igor Makanu: ChartRedrawはグラフィックオブジェクトの描画(更新)にのみ必要で、インジケータバッファで 描画する通常のインジケータには必要ありません。 多分、バッファの計算が毎ティック正しくないと思います。 ZZY: 確認はできませんが、もしかしたらChartRedrawはチャート全体の履歴を同期して更新しているかもしれません。 UPD:チャート上の履歴をより少ないバーの数に制限してみてください 10 000で十分です、MT4で重い指標は、すべてのメモリを "ゴブルアップ "とし、EAが正しく動作しない理由を検索した場合(それが動作していない)であった。MT5では、すべてのメモリを使用することはまずないのですが......そういうこともあるかもしれません。 計算の最適化を図り、前バージョンのインジケータをテストしました。以前は1000本ごとに計算していましたが、今は新しいバーが開くのを待っています。 もしこれが理由なら、やはり大いに驚かなければならない。1kバーのあまり強くない計算で、2分間チャート描画が遅くなる? Igor Makanu 2020.04.23 23:19 #27223 Aleksey Mavrin: それが理由なら、やはりビックリするほどの価値があります。1バールのあまり強くない計算で2分ほどチャート描画が遅くなる? というメッセージとともにアンロードされます。 MTのランタイム(4/5)は非常に速く、もちろん同じデータを何度も計算することができますが、イマイチ、頑張る必要があります。 インジケーターの作者は、インジケーターバッファの経済的な計算を熟知しておらず、最後のバーを正しく計算することを忘れているようです...QBに行ってインジケーターの書き方を勉強しましょう ;) Alain Verleyen 2020.04.24 00:04 #27224 Slava : この2つのプログラムは同じ端末にあるのですか、それとも2つの異なる端末にあるのですか? この問題を再現するためのコードを掲載します。https://www.mql5.com/en/forum/332849 再現するためには、最低2回コードを実行する必要があります。 File-Sharing ... my next "Sometimes-Bug" in MT5? 2020.02.16www.mql5.com FILE_SHARE_READ and FILE_SHARE_WRITE do not work proper. MQL creates buffers with different contents for the same file. Please watch the example... 削除済み 2020.04.24 06:36 #27225 Alexey Navoykov: 全く必要ない。なぜCなのか、C#はどうなのか。- 意味合いとしてはC#に近いですね。 おそらく、µl c++が似ていて、構造体がcから来たからでしょう。 パッシブ構造の話は、すべて古臭い概念だと思います。 コンストラクタが必要な場合は、クラスを使うか、シャープに行く。なぜ、このような意味合いを持つ構造を奪わなければならないのか。そうすることで、プログラムの表現力がより豊かになるのです。誰かのコードを読んで、その人がクラスではなく構造体を持っていることを知り、たった一語から多くの情報を得ることができるかもしれないのです。何も得られない、同じ結果を得るためにソースコードを熱心に研究する、それは私が瞬く間に手に入れたものです。私の経験では、この構造の慣習は尊重されます。まあ、ある種の虚無的なマージナリズムを巻き起こすかもしれません。 私は、最低限、すべての型にコンストラクタが必要だと考えています。未初期化のフィールドは悪なので、避けるべきです。 そこに悪はない、と思われる。Vaughnは、標準に引きずられて、初期化されていないunsigned charやstd::byteの読み込みは、undefindedな動作ではない、とまで言っています。PODにアグリゲート初期化を使用することも可能です。そして忘れてはならないのは、この初期化はすべて無料ではなく、実際のリソース消費(CPU、メモリ、実行ファイルのサイズ)であるということです。マイコンの場合は重要かもしれませんね。結局、C/C++はシャープのようにWindowsのシャッフルだけではないのです。 unsigned char fn() {unsigned char q; return q + 2;} int main() { fn(); } 0000000000001119 <fn>: 1119: 55 push %rbp 111 a: 48 89 e5 mov %rsp,%rbp 111 d: 0 f b6 45 ff movzbl -0x1(%rbp),%eax 1121: 83 c0 02 add $0x2,%eax 1124: 5 d pop %rbp 1125: c3 retq unsigned char fn2() {unsigned char q = 5; return q + 2;} int main() { fn(); } 0000000000001119 <fn2>: 1119: 55 push %rbp 111 a: 48 89 e5 mov %rsp,%rbp 111 d: c6 45 ff 05 movb $0x5,-0x1(%rbp) 1121: 0 f b6 45 ff movzbl -0x1(%rbp),%eax 1125: 83 c0 02 add $0x2,%eax 1128: 5 d pop %rbp 1129: c3 retq 1つの変数の初期化だけで、命令サイズが30%増加した。 Slava 2020.04.24 06:48 #27226 Stanislav Korotky: 一つの端末でエキスパートがデータを書き込み、インジケータがデータを読み込む。異なるチャートにぶら下がっているが、明らかに同じチャートである可能性がある(それが重要なら)。ビルド2380。 ファイルを読み込んだExpert Advisorは、このファイルを閉じておく必要があります。 MQL5におけるファイルの実装の特殊性は、ファイルからのデータを自身のバッファに最大限保持することである。もし、情報量が多くてバッファに収まらない場合は、ポインタをファイルの先頭から末尾に移動させるというトリックが有効です。 そこで、この時点でファイルを開き、内容を確認し、再度閉じます Alain Verleyen 2020.04.24 07:03 #27227 Slava : ファイルを読み込むExpert Advisorは、このファイルを閉じておく必要があります。 MQL5でのファイル実装の特徴は、ファイルからのデータをできるだけ自分のバッファに保持することです。もし、情報量が多くてバッファに収まらない場合は、ポインタをファイルの先頭に移動してから末尾に移動させるという方法が有効かもしれません。 そこで、この時点でファイルを開き、内容を確認し、再度閉じます では、FileFlush()は無駄なのか? Slava 2020.04.24 07:45 #27228 Alain Verleyen: では、FileFlush()は無駄なのか? FileFlushは、変更したファイルを他の人が読めるようにするために行う必要があります。 問題は、MQL5プログラムがファイルを開くときに、自分のバッファに読み込むことです。再度読み込むまで、ファイルの変更については何もわからない。ファイルを閉じてから開くことで、再び読み込むことができます Andrey Barinov 2020.04.24 07:46 #27229 Slava: FileFlushは、変更したファイルを他の人が読めるようにするために行う必要があります。 ファイルを閉じても? Slava 2020.04.24 07:50 #27230 Andrey Barinov: ファイルを閉じても? まさにその通りです。一度閉じて、再度開く それとも、ファイルを閉じる前にFileFlushすることでしょうか? 1...271627172718271927202721272227232724272527262727272827292730...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
何が悪いのか、どうすればチャートの更新を早くできるのか、教えてください。 Expert Advisor から ChartRedraw 関数が呼び出されますが、まだ数分の遅れがあります。
ChartRedrawはグラフィックオブジェクトの描画(更新)にのみ必要で、インジケータバッファで 描画する通常のインジケータには必要ありません。
多分、バッファの計算が毎ティック正しくないと思います。
ZZY: 確認はできませんが、もしかしたらChartRedrawはチャート全体の履歴を同期して更新しているかもしれません、もしそうなら、実際には毎回履歴全体を計算しながらインジケータを再起動します。
UPD:チャート上の履歴をより少ないバーの数に制限してみてください 10 000で十分です、MT4で重い指標は、すべてのメモリを "ゴブルアップ "とし、EAが正しく動作しない理由を検索した場合(それが動作していない)であった。MT5では、すべてのメモリを使用したとは考えにくいのですが......。
ChartRedrawはグラフィックオブジェクトの描画(更新)にのみ必要で、インジケータバッファで 描画する通常のインジケータには必要ありません。
多分、バッファの計算が毎ティック正しくないと思います。
ZZY: 確認はできませんが、もしかしたらChartRedrawはチャート全体の履歴を同期して更新しているかもしれません。
UPD:チャート上の履歴をより少ないバーの数に制限してみてください 10 000で十分です、MT4で重い指標は、すべてのメモリを "ゴブルアップ "とし、EAが正しく動作しない理由を検索した場合(それが動作していない)であった。MT5では、すべてのメモリを使用することはまずないのですが......そういうこともあるかもしれません。
計算の最適化を図り、前バージョンのインジケータをテストしました。以前は1000本ごとに計算していましたが、今は新しいバーが開くのを待っています。
もしこれが理由なら、やはり大いに驚かなければならない。1kバーのあまり強くない計算で、2分間チャート描画が遅くなる?
それが理由なら、やはりビックリするほどの価値があります。1バールのあまり強くない計算で2分ほどチャート描画が遅くなる?
というメッセージとともにアンロードされます。
MTのランタイム(4/5)は非常に速く、もちろん同じデータを何度も計算することができますが、イマイチ、頑張る必要があります。
インジケーターの作者は、インジケーターバッファの経済的な計算を熟知しておらず、最後のバーを正しく計算することを忘れているようです...QBに行ってインジケーターの書き方を勉強しましょう ;)
この2つのプログラムは同じ端末にあるのですか、それとも2つの異なる端末にあるのですか?
この問題を再現するためのコードを掲載します。https://www.mql5.com/en/forum/332849
再現するためには、最低2回コードを実行する必要があります。
全く必要ない。なぜCなのか、C#はどうなのか。- 意味合いとしてはC#に近いですね。
おそらく、µl c++が似ていて、構造体がcから来たからでしょう。
パッシブ構造の話は、すべて古臭い概念だと思います。
コンストラクタが必要な場合は、クラスを使うか、シャープに行く。なぜ、このような意味合いを持つ構造を奪わなければならないのか。そうすることで、プログラムの表現力がより豊かになるのです。誰かのコードを読んで、その人がクラスではなく構造体を持っていることを知り、たった一語から多くの情報を得ることができるかもしれないのです。何も得られない、同じ結果を得るためにソースコードを熱心に研究する、それは私が瞬く間に手に入れたものです。私の経験では、この構造の慣習は尊重されます。まあ、ある種の虚無的なマージナリズムを巻き起こすかもしれません。
私は、最低限、すべての型にコンストラクタが必要だと考えています。未初期化のフィールドは悪なので、避けるべきです。
そこに悪はない、と思われる。Vaughnは、標準に引きずられて、初期化されていないunsigned charやstd::byteの読み込みは、undefindedな動作ではない、とまで言っています。PODにアグリゲート初期化を使用することも可能です。そして忘れてはならないのは、この初期化はすべて無料ではなく、実際のリソース消費(CPU、メモリ、実行ファイルのサイズ)であるということです。マイコンの場合は重要かもしれませんね。結局、C/C++はシャープのようにWindowsのシャッフルだけではないのです。
1つの変数の初期化だけで、命令サイズが30%増加した。一つの端末でエキスパートがデータを書き込み、インジケータがデータを読み込む。異なるチャートにぶら下がっているが、明らかに同じチャートである可能性がある(それが重要なら)。ビルド2380。
ファイルを読み込んだExpert Advisorは、このファイルを閉じておく必要があります。
MQL5におけるファイルの実装の特殊性は、ファイルからのデータを自身のバッファに最大限保持することである。もし、情報量が多くてバッファに収まらない場合は、ポインタをファイルの先頭から末尾に移動させるというトリックが有効です。
そこで、この時点でファイルを開き、内容を確認し、再度閉じます
ファイルを読み込むExpert Advisorは、このファイルを閉じておく必要があります。
MQL5でのファイル実装の特徴は、ファイルからのデータをできるだけ自分のバッファに保持することです。もし、情報量が多くてバッファに収まらない場合は、ポインタをファイルの先頭に移動してから末尾に移動させるという方法が有効かもしれません。
そこで、この時点でファイルを開き、内容を確認し、再度閉じます
では、FileFlush()は無駄なのか?
FileFlushは、変更したファイルを他の人が読めるようにするために行う必要があります。
問題は、MQL5プログラムがファイルを開くときに、自分のバッファに読み込むことです。再度読み込むまで、ファイルの変更については何もわからない。ファイルを閉じてから開くことで、再び読み込むことができます
FileFlushは、変更したファイルを他の人が読めるようにするために行う必要があります。
ファイルを閉じても?
ファイルを閉じても?
まさにその通りです。一度閉じて、再度開く
それとも、ファイルを閉じる前にFileFlushすることでしょうか?