エラー、バグ、質問 - ページ 2437 1...243024312432243324342435243624372438243924402441244224432444...3185 新しいコメント Slava 2019.04.18 05:44 #24361 Alexey Navoykov:フレームが存在しない状態でOnTesterPassが呼ばれるのですか? それならこれは明らかなエラーです。 このイベントはフレームを受け取ることを意味し、パスの終わりを意味するものではありません。 すべてのフレームは、OnTesterDeinit イベントが呼ばれる前に OnTesterPass に到着している必要があります。これは正常な健全な論理です。また、強制的にテストが中断されるというのであれば話は別ですが。OnTesterPassは、少なくとも1つのフレームが到着したときに呼び出される。フレーム入りの場合もあります。したがって、OnTesterPassは、1フレームずつではなく、ループでフレームを受け入れる必要があります。しかし、「前回以降-一度も」であれば、OnTesterPassは呼ばれない。 最適化は、最後の結果が来た時点で停止する。特に、1フレームに大量のデータを渡す場合や、1回のパスで複数のフレームを一度に渡す場合は、フレームの到着が遅くなることがあります。そのため、最適化終了後に起動するOnTesterDeinitで、残りのフレームの受信を手配する必要があります - ループ内でも。 これは正常な健全な論理である。 OnTesterPassだけでなく、OnTesterDeinitでもきっちりフレームを受信している例を繰り返し挙げています。そして、さまざまなタイプの複雑なフレームを受信します。 fxsaber 2019.04.18 06:06 #24362 Slava:一回のパスで複数のフレームを 一度に渡す場合。一度試したが、うまくいかなかった。FrameAddは 1つだけ動作しました。 Alexey Navoykov 2019.04.18 06:07 #24363 Slava:最適化は、最後の結果が到着した時点で停止します。特に、1フレームに大量のデータを転送する場合や、1回のパスで複数のフレームを一度に転送する場合、フレームの到着が遅くなることがあります。そのため、最適化終了時に起動するOnTesterDeinitで残りのフレームの受信を手配する必要があります(ループ内も)。フレームが後から到着する可能性が ある場合、OnTesterDeinitでも一気に到着する保証はない? 待機ループを作らなければならないということですが、どのくらい待てばいいのでしょうか? 先ほど、OnTesterPassは、前回のOnTesterPassの終了後に到着したフレームに対してのみ呼び出されますが、OnTesterPassの実行中、特にFrameNextの 最後の呼び出し 以降、関数が完了する前に新しいフレームが到着すると、イベントを生成する新しいフレームが到着するまで、このフレームはハングします、という状況だと考えました。このため、これらの休止フレームを受信するためにOnTesterDeinitが必要である。 fxsaber 2019.04.18 06:09 #24364 Alexey Navoykov:フレームが後から到着できる のであれば、OnTesterDeinitですぐに利用できる保証はないのでは? つまり、待機サイクルを行う必要があるのでは? また、どのくらい待つ必要があるのでしょうか?先ほど、OnTesterPassは、前回のOnTesterPassの終了後に到着したフレームに対してのみ呼ばれるが、OnTesterPassの進行中に新しいフレームが到着した場合、特にFrameNextの最後の呼び出し以降、関数の完了前に、このフレームは、イベントを生成する新しいフレームが到着するまでハングする、という状況だと思ったのですが、いかがでしょうか?そのため、OnTesterDeinitはこれらの休止中のフレームをピックアップするために必要です。FrameNextは、mqdファイルを読み込むだけで、何もしない。FrameFirstは FileSeekです。 Slava 2019.04.18 09:01 #24365 fxsaber:一度試してみたが、うまくいかなかった。FrameAddは1つだけ動作しました。ここで一例を示しました。 fxsaber 2019.04.18 09:06 #24366 Slava: ここでは、その一例を示しました。 ありがとうございます。 PS FrameFirstはここでは冗長です。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム Expert Advisorに結果を自動代入し、タイムスケジュールでストラテジーをテストする。 スラバ さん 2013.04.10 15:04 以下はその一例です。OnTesterでは、Expert Advisorは、取引の履歴と 作業していた履歴の2つのフレームを送信します。OnTesterDeinitでは、第1種と第2種のすべてのフレームを受信して処理します。void OnTesterDeinit() { string name; ulong pass; long id; double value; int handle,i; BalanceInTime balance[]; MqlRates rates[]; //--- FrameFirst(); FrameFilter("",1); while(FrameNext(pass,name,id,value,balance)) { handle=FileOpen(name+"_"+string(id)+"_"+IntegerToString(pass,5,'0')+".txt",FILE_WRITE|FILE_CSV|FILE_ANSI); if(handle!=INVALID_HANDLE) { for(i=0; i<ArraySize(balance); i++) FileWrite(handle,balance[i].date,EnumToString(balance[i].entry),DoubleToString(balance[i].price,5),DoubleToString(balance[i].balance,2)); FileClose(handle); } } //--- FrameFirst(); FrameFilter("",2); while(FrameNext(pass,name,id,value,rates)) { handle=FileOpen(name+"_"+string(id)+"_"+IntegerToString(pass,5,'0')+".txt",FILE_WRITE|FILE_CSV|FILE_ANSI); if(handle!=INVALID_HANDLE) { for(i=0; i<ArraySize(rates); i++) FileWrite(handle,rates[i].time,DoubleToString(rates[i].open,5),DoubleToString(rates[i].high,5),DoubleToString(rates[i].low,5),DoubleToString(rates[i].close,5),string(rates[i].tick_volume)); FileClose(handle); } } //--- } Slava 2019.04.18 09:52 #24367 fxsaber: PS FrameFirstはここでは余計なお世話です。 いいえ、余計なことではなく、純粋に方法論的なことです。デフォルトのない完全なコードブロック このコードは、より複雑なコードから切り取られたものです。4種類のフレームが送信されました。同時にOnTesterPassも読みました。以下は、「リファイン」したコードです。 fxsaber 2019.04.18 10:00 #24368 Slava:いいえ、冗長ではありません - 純粋に方法論です。デフォルトのない完全なコードブロックこのコードは、より複雑なコードから切り取られたものです。4種類のフレームが送信されました。同時にOnTesterPassも読みました。ここでは、「リファイン」したコードを紹介します。FrameFirstについては、FrameFilterの 前に呼び出すと必ず余計なものが出てきます。 複数のフレームでデータを転送することはお勧めしません。 Slava 2019.04.18 10:11 #24369 fxsaber:FrameFirstについては、FrameFilterの前に呼び出すと必ず冗長になります。 複数のフレームを経由してデータを渡すことはお勧めしません。1.はい、余計なお世話になることもあります。 2. OnTesterPassで1種類のフレームを読み込み、OnTesterDeinitで終了させる。他のフレームは OnTesterDeinit で読み込む。 このように数種類のフレームを送受信できるようになったことで、テスターでは再現が困難だったいくつかのエラーを修正することができました。そして、ある基準値との差がある場合のみ、フレームを送信していた。 fxsaber 2019.04.18 10:11 #24370 Slava:オプトフォーマットを開くか? 1...243024312432243324342435243624372438243924402441244224432444...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
フレームが存在しない状態でOnTesterPassが呼ばれるのですか? それならこれは明らかなエラーです。 このイベントはフレームを受け取ることを意味し、パスの終わりを意味するものではありません。
すべてのフレームは、OnTesterDeinit イベントが呼ばれる前に OnTesterPass に到着している必要があります。これは正常な健全な論理です。また、強制的にテストが中断されるというのであれば話は別ですが。
OnTesterPassは、少なくとも1つのフレームが到着したときに呼び出される。フレーム入りの場合もあります。したがって、OnTesterPassは、1フレームずつではなく、ループでフレームを受け入れる必要があります。しかし、「前回以降-一度も」であれば、OnTesterPassは呼ばれない。
最適化は、最後の結果が来た時点で停止する。特に、1フレームに大量のデータを渡す場合や、1回のパスで複数のフレームを一度に渡す場合は、フレームの到着が遅くなることがあります。そのため、最適化終了後に起動するOnTesterDeinitで、残りのフレームの受信を手配する必要があります - ループ内でも。
これは正常な健全な論理である。
OnTesterPassだけでなく、OnTesterDeinitでもきっちりフレームを受信している例を繰り返し挙げています。そして、さまざまなタイプの複雑なフレームを受信します。
一回のパスで複数のフレームを 一度に渡す場合。
一度試したが、うまくいかなかった。FrameAddは 1つだけ動作しました。
最適化は、最後の結果が到着した時点で停止します。特に、1フレームに大量のデータを転送する場合や、1回のパスで複数のフレームを一度に転送する場合、フレームの到着が遅くなることがあります。そのため、最適化終了時に起動するOnTesterDeinitで残りのフレームの受信を手配する必要があります(ループ内も)。
フレームが後から到着する可能性が ある場合、OnTesterDeinitでも一気に到着する保証はない? 待機ループを作らなければならないということですが、どのくらい待てばいいのでしょうか?
先ほど、OnTesterPassは、前回のOnTesterPassの終了後に到着したフレームに対してのみ呼び出されますが、OnTesterPassの実行中、特にFrameNextの 最後の呼び出し 以降、関数が完了する前に新しいフレームが到着すると、イベントを生成する新しいフレームが到着するまで、このフレームはハングします、という状況だと考えました。このため、これらの休止フレームを受信するためにOnTesterDeinitが必要である。
フレームが後から到着できる のであれば、OnTesterDeinitですぐに利用できる保証はないのでは? つまり、待機サイクルを行う必要があるのでは? また、どのくらい待つ必要があるのでしょうか?
先ほど、OnTesterPassは、前回のOnTesterPassの終了後に到着したフレームに対してのみ呼ばれるが、OnTesterPassの進行中に新しいフレームが到着した場合、特にFrameNextの最後の呼び出し以降、関数の完了前に、このフレームは、イベントを生成する新しいフレームが到着するまでハングする、という状況だと思ったのですが、いかがでしょうか?そのため、OnTesterDeinitはこれらの休止中のフレームをピックアップするために必要です。
FrameNextは、mqdファイルを読み込むだけで、何もしない。
FrameFirstは FileSeekです。一度試してみたが、うまくいかなかった。FrameAddは1つだけ動作しました。
ここでは、その一例を示しました。
ありがとうございます。
PS FrameFirstはここでは冗長です。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
Expert Advisorに結果を自動代入し、タイムスケジュールでストラテジーをテストする。
スラバ さん 2013.04.10 15:04
以下はその一例です。OnTesterでは、Expert Advisorは、取引の履歴と 作業していた履歴の2つのフレームを送信します。
OnTesterDeinitでは、第1種と第2種のすべてのフレームを受信して処理します。
PS FrameFirstはここでは余計なお世話です。
いいえ、余計なことではなく、純粋に方法論的なことです。デフォルトのない完全なコードブロック
このコードは、より複雑なコードから切り取られたものです。4種類のフレームが送信されました。同時にOnTesterPassも読みました。以下は、「リファイン」したコードです。
いいえ、冗長ではありません - 純粋に方法論です。デフォルトのない完全なコードブロック
このコードは、より複雑なコードから切り取られたものです。4種類のフレームが送信されました。同時にOnTesterPassも読みました。ここでは、「リファイン」したコードを紹介します。
FrameFirstについては、FrameFilterの 前に呼び出すと必ず余計なものが出てきます。
複数のフレームでデータを転送することはお勧めしません。
FrameFirstについては、FrameFilterの前に呼び出すと必ず冗長になります。
複数のフレームを経由してデータを渡すことはお勧めしません。
1.はい、余計なお世話になることもあります。
2. OnTesterPassで1種類のフレームを読み込み、OnTesterDeinitで終了させる。他のフレームは OnTesterDeinit で読み込む。
このように数種類のフレームを送受信できるようになったことで、テスターでは再現が困難だったいくつかのエラーを修正することができました。そして、ある基準値との差がある場合のみ、フレームを送信していた。
オプトフォーマットを開くか?