MT5 RAMメモリの容量不足、大容量ファイルの読み書きに問題がある。 - ページ 3 12345678 新しいコメント Maxim Dmitrievsky 2018.07.21 18:16 #21 Vladislav Andruschenko: ウヘッおーぷんは分かるが、バイナリで一気に書けるのに、なぜ文字列で配列を書くのか Sergey Savinkin 2018.07.21 18:21 #22 Maxim Dmitrievsky:おーぷんは分かるんだけど、バイナリで一気に書けるのに、なんで文字列で配列を書くんだろう?書いてある、男がエクセルで加工している。 Maxim Dmitrievsky 2018.07.21 18:22 #23 Sergey Savinkin:男がエクセルで加工していると書いてある。とは書いてない Sergey Savinkin 2018.07.21 18:25 #24 Maxim Dmitrievsky:とは書いていない。一番最初の投稿です。よく読むと、このファイルはMT5とは関係ないような気がします。または特定の方法で処理される。 Maxim Dmitrievsky 2018.07.21 18:27 #25 Sergey Savinkin:一番最初の投稿です。よく読むと、このファイルはMT5とは関係ないのかもしれません。または特定の方法で処理される。だから、彼がどこから得ているのかを判断させましょう 配列としても読めますね。 Vladimir 2018.07.21 19:14 #26 Aleksey Vyazmikin:コードの解析ありがとうございました。私はOOPを理解するのに苦労しているので、編集をするのは拷問です。私が理解したところでは、読み込みを担当するクラスは、そこでファイル全体を文字列配列に分割し、必要であれば、これらの文字列値を別の型に変換して、私のスクリプトでint型の配列に配置する、ということです。もし私の理解が正しければ、処理を高速化するには、ファイル全体を読んで、行と列がいくつあるか、各セルに記号がいくつあるかを把握し、すぐに配列サイズを選択すればいいのですね。では、どうすればいいのか。400メガバイトが一度にどこから取られているのか理解したいのですが?メモリは確保されるが、先に確保されたものはクリアされない/手放される、ということでよかったでしょうか?400Mbは、空の行が3600万セルで、それぞれ12バイト、12*36=432となります。 より良い方法を教えてもらうために、あなたが解決しようとしている問題について教えてください。ファイルの変更頻度や量、すべての人が毎回ファイルから読み込む必要があるかどうか、空でないセルの数は行ごとに一定かどうか、すべてのセルが整数だけを含むかどうか。多分、9分は週に1回使うべきで、それは全く大したことではありません - それなら、何も変える必要はありません。 一般に「どこをどうすれば速くなるか」という点では、整数値に対応する57個のフィールドを持つ構造体を宣言し、それを書き込みと読み出し(ファイルはバイナリ)の両方に使用するのが主な方向となる。すると、78MBがディスクからメモリに直接、区切り文字や文字列表現なしに、1秒よりも速く読み込まれることになる。デバッグのために、出力も.csvに保存してください。ファイルサイズは、これらの構造体の配列の要素数を即座に決定する。 Aleksey Vyazmikin 2018.07.21 19:36 #27 Vladimir:400MBは、空の行を持つセルが3600万個で、それぞれ12バイト、12*36=432となります。計算方法は明快です。 ウラジミールより良い方法を教えてもらうために、あなたが解決しようとしている問題について教えてください。ファイルの変更頻度や量、毎回すべてを読み込む必要があるかどうか、空でないセルの数は行ごとに一定かどうか、すべてのセルが整数値のみを含むかどうか。多分、9分は週に1回使うべきで、それは全く大したことではありません - それなら、何も変える必要はありません。CSV形式は、現在データを提供してくれているさまざまなプログラムにとって普遍的な形式であるため、このタスクは普遍的なものです。特にこのスクリプトのことを指しているのであれば、そうですね、Excelは数式が原因でクラッシュするので、全部読んで計算すればいいだけです。セルには整数でない数字が含まれていてもよい(この例では特になし)。週1回なら9分って少ないな...。しかし、とりわけ、このような量のデータをオプティマイザで処理し、ファイルを サイドに渡してそこでエージェントの助けを借りて処理を行い、結果をcsv形式(ここではもちろん他の形式でも可能)で取得し、再び処理を行う必要があります。そこで、MT5を使って大きなデータ配列を処理したいので、この問題を公に議論することにしました。 ウラジミール一般に、「どこをどうすれば速くなるか」という点では、「構造体を宣言し、その57フィールドが整数値に対応し、それを書き込みと読み出しの両方に使用する(ファイルはバイナリ)」というのが主な方向性である。すると、78MBがディスクからメモリに直接、区切り文字や文字列表現なしに、1秒よりも速く読み込まれることになる。デバッグのために、出力も.csvに保存してください。ファイルサイズは、これらの構造体の配列の要素数を即座に決定する。 どうやったらできるのか、想像もつかない。それとも、初期ファイルを特殊な条件で生成する必要があるのでしょうか?それなら、CSVからバイナリへのコンバータを作ればいいのでは? 2番目のクラス、列の数を無制限に書くように教える方法も見ていただけますか? Aleksey Vyazmikin 2018.07.21 19:40 #28 Maxim Dmitrievsky:WriteArray / Readは高速で、最大サイズは300mbまで、すべてが非常に高速で、RAMを消費しない。 なぜ読み書きのコードがこんなに多いのか、4行で終わっている。その方法を実演していただけますか? Aleksey Vyazmikin 2018.07.21 19:43 #29 Maxim Dmitrievsky:だから、どこから入手するかは、本人に決めさせればいい は、配列として読むこともできるのでしょう。CSVは世界共通のファイル形式であり、MOに関連するものをはじめ、さまざまなソフトウェアでサポートされています。 また、異なるプログラム(スクリプト/アドバイザー)MT5間でデータを転送するのに便利なファイルであり、容量もそれほど多くありません。 Maxim Dmitrievsky 2018.07.21 19:43 #30 Aleksey Vyazmikin:その方法を実演していただけますか?このようにファイルを読み込んでみてください。 https://www.mql5.com/ru/docs/files/filereadarray 今は端末を開く時間がないので、明日にでも) Документация по MQL5: Файловые операции / FileReadArray www.mql5.com //| Структура для хранения данных о ценах | //| Script program start function | 12345678 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ウヘッ
おーぷんは分かるが、バイナリで一気に書けるのに、なぜ文字列で配列を書くのか
おーぷんは分かるんだけど、バイナリで一気に書けるのに、なんで文字列で配列を書くんだろう?
書いてある、男がエクセルで加工している。
男がエクセルで加工していると書いてある。
とは書いてない
とは書いていない。
一番最初の投稿です。よく読むと、このファイルはMT5とは関係ないような気がします。または特定の方法で処理される。
一番最初の投稿です。よく読むと、このファイルはMT5とは関係ないのかもしれません。または特定の方法で処理される。
だから、彼がどこから得ているのかを判断させましょう
配列としても読めますね。コードの解析ありがとうございました。
私はOOPを理解するのに苦労しているので、編集をするのは拷問です。私が理解したところでは、読み込みを担当するクラスは、そこでファイル全体を文字列配列に分割し、必要であれば、これらの文字列値を別の型に変換して、私のスクリプトでint型の配列に配置する、ということです。もし私の理解が正しければ、処理を高速化するには、ファイル全体を読んで、行と列がいくつあるか、各セルに記号がいくつあるかを把握し、すぐに配列サイズを選択すればいいのですね。では、どうすればいいのか。
400メガバイトが一度にどこから取られているのか理解したいのですが?メモリは確保されるが、先に確保されたものはクリアされない/手放される、ということでよかったでしょうか?
400Mbは、空の行が3600万セルで、それぞれ12バイト、12*36=432となります。
より良い方法を教えてもらうために、あなたが解決しようとしている問題について教えてください。ファイルの変更頻度や量、すべての人が毎回ファイルから読み込む必要があるかどうか、空でないセルの数は行ごとに一定かどうか、すべてのセルが整数だけを含むかどうか。多分、9分は週に1回使うべきで、それは全く大したことではありません - それなら、何も変える必要はありません。
一般に「どこをどうすれば速くなるか」という点では、整数値に対応する57個のフィールドを持つ構造体を宣言し、それを書き込みと読み出し(ファイルはバイナリ)の両方に使用するのが主な方向となる。すると、78MBがディスクからメモリに直接、区切り文字や文字列表現なしに、1秒よりも速く読み込まれることになる。デバッグのために、出力も.csvに保存してください。ファイルサイズは、これらの構造体の配列の要素数を即座に決定する。
400MBは、空の行を持つセルが3600万個で、それぞれ12バイト、12*36=432となります。
計算方法は明快です。
より良い方法を教えてもらうために、あなたが解決しようとしている問題について教えてください。ファイルの変更頻度や量、毎回すべてを読み込む必要があるかどうか、空でないセルの数は行ごとに一定かどうか、すべてのセルが整数値のみを含むかどうか。多分、9分は週に1回使うべきで、それは全く大したことではありません - それなら、何も変える必要はありません。
CSV形式は、現在データを提供してくれているさまざまなプログラムにとって普遍的な形式であるため、このタスクは普遍的なものです。特にこのスクリプトのことを指しているのであれば、そうですね、Excelは数式が原因でクラッシュするので、全部読んで計算すればいいだけです。セルには整数でない数字が含まれていてもよい(この例では特になし)。週1回なら9分って少ないな...。しかし、とりわけ、このような量のデータをオプティマイザで処理し、ファイルを サイドに渡してそこでエージェントの助けを借りて処理を行い、結果をcsv形式(ここではもちろん他の形式でも可能)で取得し、再び処理を行う必要があります。そこで、MT5を使って大きなデータ配列を処理したいので、この問題を公に議論することにしました。
一般に、「どこをどうすれば速くなるか」という点では、「構造体を宣言し、その57フィールドが整数値に対応し、それを書き込みと読み出しの両方に使用する(ファイルはバイナリ)」というのが主な方向性である。すると、78MBがディスクからメモリに直接、区切り文字や文字列表現なしに、1秒よりも速く読み込まれることになる。デバッグのために、出力も.csvに保存してください。ファイルサイズは、これらの構造体の配列の要素数を即座に決定する。
どうやったらできるのか、想像もつかない。それとも、初期ファイルを特殊な条件で生成する必要があるのでしょうか?それなら、CSVからバイナリへのコンバータを作ればいいのでは?
2番目のクラス、列の数を無制限に書くように教える方法も見ていただけますか?
WriteArray / Readは高速で、最大サイズは300mbまで、すべてが非常に高速で、RAMを消費しない。
なぜ読み書きのコードがこんなに多いのか、4行で終わっている。
その方法を実演していただけますか?
だから、どこから入手するかは、本人に決めさせればいい
は、配列として読むこともできるのでしょう。CSVは世界共通のファイル形式であり、MOに関連するものをはじめ、さまざまなソフトウェアでサポートされています。
また、異なるプログラム(スクリプト/アドバイザー)MT5間でデータを転送するのに便利なファイルであり、容量もそれほど多くありません。
その方法を実演していただけますか?
このようにファイルを読み込んでみてください。
https://www.mql5.com/ru/docs/files/filereadarray
今は端末を開く時間がないので、明日にでも)