エラー、バグ、質問 - ページ 651 1...644645646647648649650651652653654655656657658...3185 新しいコメント Anatoli Kazharski 2012.02.22 17:45 #6501 mql5: いいえ、32ビット端末だけの問題ではありません。しかし、32ビット端末用のソリューションは今日から使えるが、64ビット端末ではまだ256Kbのスタック制限がある。 しかし、プログラマが必要なスタックサイズをプロパティを使って手動で指定しない場合、ターミナル上のEX5はデフォルトのスタックサイズ(256Kb)で動作することになる。 ビッグサイズについて。 関数内の変数宣言(静的変数を除く)ごとにスタック上の領域が確保され、ローカル 変数のスタック上の領域確保は呼び出しごとに発生する。 したがって、64Kb のローカル変数を持つ関数であれば、3 回の呼び出しでスタックスペースは十分であり、4 回の呼び出しでスタックのオーバーフローが発生する(スタックの一部が端末内部の必要性に使用されるため)。したがって,大きなローカルデータが必要な場合は,ダイナミックメモリを使用した方がよい.関数を入力すると,ローカルに必要なメモリがシステムに確保され(new,ArrayResize),関数を終了すると,メモリが消去される(delete,ArrayFree). 詳しい説明をありがとうございました。でも、それは絶対に私の問題ではありません。足が伸びている関数はすでに見つかっており、そのようなボリューム(64Kb - 256Kb)はないので、このエラーを検出するExpert Advisorをテスト的に書いてみることにします。その時は、夜間に問題機能を持ったエキスパートをサービスデスクに派遣します。 Vladimir Gomonov 2012.02.22 18:01 #6502 もう一つ、同じ関数(CLBufferWrite())の働きについて質問(とヘルプでの説明のお願い)です。ArrayIsSeriesフラグを設定(=true)した状態で、インジケータバッファから 直接情報を書き込むと、入力配列はどの方向に読み込まれるのでしょうか?フラグが無視されるのでは?しかも、どの場所から読まれるのかが不明?シフトはアレイの物理的な端から数えるのでしょうか、それとも全く最初から数えるのでしょうか?もちろん、念の ため水を吹いておきますが(ArrayIsSeries==falseで作業します)、それでも? Ilyas 2012.02.23 07:30 #6503 OpenCL バッファを扱う 機能は現在不完全であり、今後追加/記述していく予定です。 offset - これらの関数は、実際には OpenCL バッファの先頭からのバイト単位のオフセットで、関数に渡された配列は、ArrayIsSeries フラグを考慮せずに null アイテムからコピーされます。 Vladimir Gomonov 2012.02.23 11:53 #6504 mql5: 1) 現在、OpenCLバッファを扱う機能は未完成であり、今後追加・更新される予定です。 2. offset - これらの関数は、実際にはOpenCLバッファの先頭からのバイト単位のオフセットであり、関数に渡された配列はArrayIsSeriesフラグを考慮せずにゼロエレメントからコピーされます。1.なんとなくそう思っていたのですが...... :) そのため、部分的にインジケータ・バッファから 直接書き込む方法は(今のところ)ありません。 もちろん、ソースとレシーバーの両方で開始位置を移動可能にするのが良いアイデアです。こことか。 int ArrayCopy( void dst_array[], // куда копируем void src_array[], // откуда копируем int dst_start=0, // с какого индекса пишем в приемник int src_start=0, // с какого индекса копируем из источника int cnt=WHOLE_ARRAY // сколько элементов ); インデックス(方向と単位(バイト/要素))については、ヘルプでもっと丁寧に説明してください。:)))--ご返信ありがとうございます!機能向上のためにご尽力いただき、本当に感謝しております。宴会が続くのを気長に楽しみに待ってます。とりあえず、短剣の刃の上で踊るしかないですね。:) 初心者の方からの質問 MQL4 MT4 MetaTrader OpenCL:MQL5での内部実装テスト OpenCL: internal implementation tests Vladimir Gomonov 2012.02.23 17:46 #6505 Build 597 x64、インストールしたところです。2012.02.23 21:43:24 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。 2012.02.23 21:43:13 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。 2012.02.23 21:43:12 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。 2012.02.23 21:43:10 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。 2012.02.23 21:43:09 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。 2012.02.23 21:43:08 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。 2012.02.23 21:43:07 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。 2012.02.23 21:43:06 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。こんなことは今までなかったことです。// Win7 x64 Renat Fatkhullin 2012.02.23 18:15 #6506 MetaDriver: Build 597 x64、インストールしたところです。 以前はこんなもんじゃなかったんですけどね。// Win7 x64の場合。 サンプルを再コンパイルしてみてください。確認したところ、私の場合はうまくいきました。 Vladimir Gomonov 2012.02.23 19:10 #6507 Renat: サンプルを再コンパイルしてみてください。確認したところ、私の場合はうまくいきました。もう100回くらい再コンパイルしてるんだけど、もう一回再起動しよ。 Vladimir Gomonov 2012.02.23 19:20 #6508 MetaDriver:...もう一度、再起動する いや、役に立たなかった。レナート......確認しました - 私には動作しています。私にも効果がありますが、10回や40回に1回は同じようなくだりが出てきます。2012.02.23 23:44 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。 2012.02.23 23 16:16:43 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。 2012.02.23 23 16:16:42 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。 2012.02.23 23 16:16:36 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。 Renat Fatkhullin 2012.02.23 20:04 #6509 MetaDriver:いや、役に立たなかった。これは私にも有効ですが、10~40サイクルに一度、このくだりが出てきます。も発見されました。 これは、指定されたファイルが同期を取らずに2つの異なるスレッドで処理されているためで、時折ファイルが ロックされることがあります。スクリプトスレッドは1秒間に10回ファイルを上書きします(カードの速度に依存します)。チャートは、スクリプトの要求に応じて、独自のスレッドで画像を再読み込みする画像を使った例は、あくまでOpenCLの動作原理を示すために作ったものなので、問題ないでしょう。 Документация по MQL5: Файловые операции / FileMove www.mql5.com Файловые операции / FileMove - Документация по MQL5 Vladimir Gomonov 2012.02.23 20:34 #6510 Renat:画像付きの例は、あくまでOpenCLの動作原理を示すために作ったものなので、問題ありません。 そうですね。 それに、どうせなら、GraphLabelオブジェクトのバッファに直接転送するようにしましょう。:) 1...644645646647648649650651652653654655656657658...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
いいえ、32ビット端末だけの問題ではありません。しかし、32ビット端末用のソリューションは今日から使えるが、64ビット端末ではまだ256Kbのスタック制限がある。
しかし、プログラマが必要なスタックサイズをプロパティを使って手動で指定しない場合、ターミナル上のEX5はデフォルトのスタックサイズ(256Kb)で動作することになる。
ビッグサイズについて。
関数内の変数宣言(静的変数を除く)ごとにスタック上の領域が確保され、ローカル 変数のスタック上の領域確保は呼び出しごとに発生する。
したがって、64Kb のローカル変数を持つ関数であれば、3 回の呼び出しでスタックスペースは十分であり、4 回の呼び出しでスタックのオーバーフローが発生する(スタックの一部が端末内部の必要性に使用されるため)。したがって,大きなローカルデータが必要な場合は,ダイナミックメモリを使用した方がよい.関数を入力すると,ローカルに必要なメモリがシステムに確保され(new,ArrayResize),関数を終了すると,メモリが消去される(delete,ArrayFree).
詳しい説明をありがとうございました。でも、それは絶対に私の問題ではありません。足が伸びている関数はすでに見つかっており、そのようなボリューム(64Kb - 256Kb)はないので、このエラーを検出するExpert Advisorをテスト的に書いてみることにします。その時は、夜間に問題機能を持ったエキスパートをサービスデスクに派遣します。
もう一つ、同じ関数(CLBufferWrite())の働きについて質問(とヘルプでの説明のお願い)です。
ArrayIsSeriesフラグを設定(=true)した状態で、インジケータバッファから 直接情報を書き込むと、入力配列はどの方向に読み込まれるのでしょうか?
フラグが無視されるのでは?しかも、どの場所から読まれるのかが不明?シフトはアレイの物理的な端から数えるのでしょうか、それとも全く最初から数えるのでしょうか?
もちろん、念の ため水を吹いておきますが(ArrayIsSeries==falseで作業します)、それでも?
offset - これらの関数は、実際には OpenCL バッファの先頭からのバイト単位のオフセットで、関数に渡された配列は、ArrayIsSeries フラグを考慮せずに null アイテムからコピーされます。
1) 現在、OpenCLバッファを扱う機能は未完成であり、今後追加・更新される予定です。
2. offset - これらの関数は、実際にはOpenCLバッファの先頭からのバイト単位のオフセットであり、関数に渡された配列はArrayIsSeriesフラグを考慮せずにゼロエレメントからコピーされます。
1.なんとなくそう思っていたのですが...... :)
そのため、部分的にインジケータ・バッファから 直接書き込む方法は(今のところ)ありません。
もちろん、ソースとレシーバーの両方で開始位置を移動可能にするのが良いアイデアです。こことか。
int ArrayCopy(
void dst_array[], // куда копируем
void src_array[], // откуда копируем
int dst_start=0, // с какого индекса пишем в приемник
int src_start=0, // с какого индекса копируем из источника
int cnt=WHOLE_ARRAY // сколько элементов
);
インデックス(方向と単位(バイト/要素))については、ヘルプでもっと丁寧に説明してください。:)))
--
ご返信ありがとうございます!機能向上のためにご尽力いただき、本当に感謝しております。
宴会が続くのを気長に楽しみに待ってます。とりあえず、短剣の刃の上で踊るしかないですね。:)
Build 597 x64、インストールしたところです。
2012.02.23 21:43:24 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。
2012.02.23 21:43:13 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。
2012.02.23 21:43:12 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。
2012.02.23 21:43:10 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。
2012.02.23 21:43:09 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。
2012.02.23 21:43:08 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。
2012.02.23 21:43:07 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。
2012.02.23 21:43:06 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。
こんなことは今までなかったことです。
// Win7 x64
Build 597 x64、インストールしたところです。
以前はこんなもんじゃなかったんですけどね。// Win7 x64の場合。
サンプルを再コンパイルしてみてください。確認したところ、私の場合はうまくいきました。
もう100回くらい再コンパイルしてるんだけど、もう一回再起動しよ。
...もう一度、再起動する
いや、役に立たなかった。
レナート
......確認しました - 私には動作しています。
私にも効果がありますが、10回や40回に1回は同じようなくだりが出てきます。
2012.02.23 23 16:16:43 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。
2012.02.23 23 16:16:42 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。
2012.02.23 23 16:16:36 OpenCLTest (EURUSD,M30) SaveBitmapToFile エラー 'Mandelbrot.bmp' を開いています。
いや、役に立たなかった。
これは私にも有効ですが、10~40サイクルに一度、このくだりが出てきます。
も発見されました。
これは、指定されたファイルが同期を取らずに2つの異なるスレッドで処理されているためで、時折ファイルが ロックされることがあります。
画像を使った例は、あくまでOpenCLの動作原理を示すために作ったものなので、問題ないでしょう。
画像付きの例は、あくまでOpenCLの動作原理を示すために作ったものなので、問題ありません。